Plotly agrega una leyenda automáticamente cuando los datos están agrupados, por ejemplo con el argumento color de Plotly Express. La leyenda es interactiva: haz clic en un elemento para ocultar ese grupo y doble clic para aislarlo. Su aspecto se personaliza con fig.update_layout.
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x = "sepal_width", y = "sepal_length",
color = "species")
fig.show()
La posición de la leyenda se establece con legend_x y legend_y en coordenadas normalizadas, donde (0, 0) es la esquina inferior izquierda del gráfico y (1, 1) la esquina superior derecha. legend_xanchor y legend_yanchor indican qué parte de la leyenda se coloca en esas coordenadas.
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x = "sepal_width", y = "sepal_length", color = "species")
fig.update_layout(legend = dict(x = 0.99, y = 0.01,
xanchor = "right", yanchor = "bottom"))
fig.show()
Leyenda horizontal
Con orientation = "h" los elementos se muestran en horizontal, lo que es muy útil para colocar la leyenda encima o debajo del gráfico y dejar más espacio para los datos.
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x = "sepal_width", y = "sepal_length", color = "species")
fig.update_layout(legend = dict(orientation = "h",
x = 0, y = 1.02, yanchor = "bottom",
font = dict(size = 14)))
fig.show()
Por defecto el título es el nombre de la columna de agrupación. Cámbialo con legend_title_text o elimínalo con una cadena vacía.
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x = "sepal_width", y = "sepal_length", color = "species")
fig.update_layout(legend_title_text = "Especies")
fig.show()
Utiliza font para cambiar el texto de la leyenda y bgcolor, bordercolor y borderwidth para personalizar su caja.
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x = "sepal_width", y = "sepal_length", color = "species")
fig.update_layout(legend = dict(font = dict(size = 14, color = "black"),
bgcolor = "lightyellow",
bordercolor = "gray", borderwidth = 1))
fig.show()
Establece showlegend = False en update_layout para eliminar toda la leyenda. Para ocultar solo una serie utiliza showlegend = False en esa traza, por ejemplo con fig.update_traces(showlegend = False, selector = dict(name = "setosa")).
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x = "sepal_width", y = "sepal_length", color = "species")
fig.update_layout(showlegend = False)
fig.show()
Si los colores representan una variable numérica plotly muestra una barra de color en lugar de una leyenda. Consulta las escalas de color de plotly para cambiar sus colores.
También te puede interesar