Las anotaciones son textos colocados en unas coordenadas concretas de un gráfico, con o sin flecha. Las formas son líneas, rectángulos y círculos dibujados sobre los datos. Ambas se agregan con los métodos fig.add_*.
add_annotation
Indica las coordenadas con x e y y el texto con text. Por defecto una flecha apunta a las coordenadas; utiliza showarrow = False para mostrar solo el texto.
import plotly.express as px
df = px.data.gapminder().query("country == 'Spain'")
fig = px.line(df, x = "year", y = "lifeExp")
top = df.loc[df["lifeExp"].idxmax()]
fig.add_annotation(x = top["year"], y = top["lifeExp"],
text = "Máximo", showarrow = True, arrowhead = 2)
fig.show()
Estilo de la anotación
Personaliza el texto con font, agrega una caja con bgcolor y bordercolor y desplaza el texto respecto a la flecha con ax y ay (en píxeles).
import plotly.express as px
df = px.data.gapminder().query("country == 'Spain'")
fig = px.line(df, x = "year", y = "lifeExp")
top = df.loc[df["lifeExp"].idxmax()]
fig.add_annotation(x = top["year"], y = top["lifeExp"], text = "Máximo",
font = dict(size = 14, color = "white"),
bgcolor = "tomato", bordercolor = "black",
ax = -60, ay = 30)
fig.show()
add_hline y add_vline dibujan líneas que ocupan todo el gráfico, con una etiqueta opcional mediante annotation_text.
import plotly.express as px
df = px.data.gapminder().query("country == 'Spain'")
fig = px.line(df, x = "year", y = "lifeExp")
fig.add_hline(y = 75, line_dash = "dash", line_color = "red",
annotation_text = "Referencia")
fig.add_vline(x = 1975, line_color = "gray")
fig.show()
add_hrect y add_vrect sombrean una banda horizontal o vertical, por ejemplo para destacar un periodo de tiempo.
import plotly.express as px
df = px.data.gapminder().query("country == 'Spain'")
fig = px.line(df, x = "year", y = "lifeExp", markers = True)
fig.add_vrect(x0 = 1975, x1 = 1982,
fillcolor = "orange", opacity = 0.25, line_width = 0,
annotation_text = "1975-1982")
fig.show()
add_shape
add_shape dibuja líneas, rectángulos, círculos y trazados entre dos puntos (x0, y0) y (x1, y1).
import plotly.express as px
df = px.data.gapminder().query("year == 2007")
fig = px.scatter(df, x = "gdpPercap", y = "lifeExp")
fig.add_shape(type = "circle", x0 = 35000, y0 = 77, x1 = 50000, y1 = 83,
line_color = "red")
fig.show()
También se pueden agregar textos a cada punto de datos con el argumento text de Plotly Express. Para personalizar las etiquetas que aparecen al pasar el ratón consulta el tutorial sobre las etiquetas emergentes en plotly.
También te puede interesar