HOWTO · Seaborn
Gráfico de línea múltiple Seaborn
Crea y personaliza varias líneas de Seaborn a partir de datos en formato ancho o largo.
En esta página
Para crear un gráfico de varias líneas con Seaborn, coloca cada serie en una columna de un DataFrame de pandas y pásalo a lineplot(). Con datos en formato largo, asigna las columnas de valores y de series a y y hue. Después puedes personalizar el aspecto de las líneas y cambiar el tamaño del texto del gráfico.
Crear varias líneas a partir de datos en formato ancho
Si tienes cinco series medidas, coloca cada una en su propia columna del DataFrame y pásalo a lineplot(). El índice proporciona los valores de x y cada columna se convierte en una línea independiente. El siguiente ejemplo completo crea el DataFrame y el gráfico: las etiquetas de los ejemplos sin modificar permanecen en inglés, entre ellas «Index», «Value» y «Five series».
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
values = {
"A": [11, 3, 0, 0, 0, 0],
"B": [1, 8, 16, 0, 0, 1],
"C": [0, 0, 3, 12, 0, 0],
"D": [2, 1, 0, 0, 13, 0],
"E": [0, 0, 0, 0, 0, 16],
}
data = pd.DataFrame(values, index=range(6))
ax = sns.lineplot(data=data)
ax.set(xlabel="Index", ylabel="Value", title="Five series")
plt.tight_layout()
plt.show()
La ejecución suministrada completó este ejemplo correctamente, con código de salida 0 y sin salida estándar. Instala pandas, Seaborn y Matplotlib en tu entorno de Python para ejecutarlo localmente. Si ya tienes los valores en un arreglo de NumPy, pásalo a pd.DataFrame(); numpy.array() es el constructor de NumPy para crear un arreglo a partir de valores.
Trazar varias series a partir de datos en formato largo
Los datos en formato largo almacenan una observación por fila y usan columnas para el valor de x, la identidad de la serie y el valor medido. Pasa los nombres de esas columnas como x, hue y y: Seaborn usa x para las posiciones horizontales, y para los valores verticales y hue para dibujar una línea independiente por serie.
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
long_data = pd.DataFrame(
[
(0, "A", 11), (1, "A", 3), (2, "A", 0),
(0, "B", 1), (1, "B", 8), (2, "B", 16),
(0, "C", 0), (1, "C", 0), (2, "C", 3),
],
columns=["x", "series", "value"],
)
ax = sns.lineplot(data=long_data, x="x", y="value", hue="series")
ax.set(title="Three series", ylabel="Value")
plt.tight_layout()
plt.show()
La ejecución suministrada completó correctamente este segundo ejemplo, con código de salida 0 y sin salida estándar. Usa el formato ancho cuando cada serie ya tiene su propia columna; usa el formato largo cuando cada fila identifica una serie y una observación. En ambos formatos, asigna etiquetas descriptivas a los ejes para que los lectores puedan interpretar los valores del gráfico.
Personalizar el aspecto de las líneas y los marcadores
Con datos en formato largo, hue separa las series y una paleta asigna sus colores. También puedes establecer markers=True y style="series" en lineplot() para mostrar un marcador distinto para cada serie, o elegir un marcador si quieres usar el mismo símbolo en todas. Establece legend=False cuando las líneas ya estén identificadas en otro lugar; conserva la leyenda cuando ayude a explicar la correspondencia entre colores o marcadores y series.
Para controlar directamente el aspecto de las líneas, aplica estilos a los objetos de línea que devuelve el gráfico. Así, el tamaño y los bordes de los marcadores se controlan mediante las propiedades de línea de Matplotlib, mientras Seaborn se ocupa de asignar las series y elegir la paleta:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
long_data = pd.DataFrame(
[(x, series, value) for series, values in {
"A": [11, 3, 0], "B": [1, 8, 16], "C": [0, 0, 3]
}.items() for x, value in enumerate(values)],
columns=["x", "series", "value"],
)
ax = sns.lineplot(
data=long_data,
x="x",
y="value",
hue="series",
palette="dark",
legend=False,
)
for line in ax.lines:
line.set_linewidth(2)
line.set_marker("o")
line.set_markersize(7)
line.set_markerfacecolor("white")
line.set_markeredgecolor("red")
line.set_markeredgewidth(1.5)
ax.set(title="Styled series", ylabel="Value")
plt.tight_layout()
plt.show()
La ejecución suministrada completó correctamente este ejemplo de estilo, con código de salida 0 y sin salida estándar. El ancho de línea controla el grosor del trazo; el tamaño del marcador controla el tamaño del símbolo; los colores de la cara y el borde distinguen el símbolo de la línea, y el ancho del borde controla el grosor del contorno. Cambia la forma del marcador o la paleta según convenga al gráfico, y conserva la leyenda cuando los lectores la necesiten para identificar las series.
Ajustar el tamaño del texto del gráfico
Establece la escala de fuente de Seaborn antes de crear el gráfico para aumentar o reducir el tamaño del texto. Un valor superior a 1 lo aumenta respecto al tamaño predeterminado; un valor inferior a 1 lo reduce. El ajuste se aplica a los elementos de texto del gráfico, incluidas las etiquetas y las marcas de los ejes.
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
sns.set(font_scale=1.3)
data = pd.DataFrame({"A": [2, 4, 3], "B": [1, 3, 5]})
ax = sns.lineplot(data=data, markers=True)
ax.set(title="Scaled plot text", xlabel="Index", ylabel="Value")
plt.tight_layout()
plt.show()
La ejecución suministrada completó correctamente este último ejemplo, con código de salida 0 y sin salida estándar. Ajusta font_scale para que el gráfico y sus etiquetas quepan en el espacio disponible.