¿El parámetro `hue` en Seaborn.relplot () omite un entero cuando se le dan datos numéricos?

El parámetro hue salta un entero.

d = {'column1':[1,2,3,4,5], 'column2':[2,4,5,2,3], 'cluster':[0,1,2,3,4]} df = pd.DataFrame(data=d) sns.relplot(x='column2', y='column1', hue='cluster', data=df) 

Mientras que todos los puntos están trazados, la etiqueta del cluster falta '2'.

Python 2.7 Seaborn 0.9.0 Ubuntu 16.04 LTS

Leyenda “completa”

Si el hue está en formato numérico, Seaborn asumirá que representa una cantidad continua y decidirá mostrar lo que cree que es una muestra representativa a lo largo de la dimensión del color.

Puedes evitar esto usando legend="full" .

 import matplotlib.pyplot as plt import seaborn as sns import pandas as pd df = pd.DataFrame({'column1':[1,2,3,4,5], 'column2':[2,4,5,2,3], 'cluster':[0,1,2,3,4]}) sns.relplot(x='column2', y='column1', hue='cluster', data=df, legend="full") plt.show() 

introduzca la descripción de la imagen aquí

Categóricos

Una alternativa es asegurarse de que los valores se traten de forma categórica. Desafortunadamente, incluso si conecta los números como cadenas, se convertirán a números que recurran al mismo mecanismo descrito anteriormente. Esto puede ser visto como un error .

Sin embargo, una opción que tiene es usar categorías reales, como por ejemplo, letras individuales.

 'cluster':list("ABCDE") 

funciona bien,

 import matplotlib.pyplot as plt import seaborn as sns import pandas as pd d = {'column1':[1,2,3,4,5], 'column2':[2,4,5,2,3], 'cluster':list("ABCDE")} df = pd.DataFrame(data=d) sns.relplot(x='column2', y='column1', hue='cluster', data=df) plt.show() 

introduzca la descripción de la imagen aquí

Cuerdas con paleta personalizada.

Una alternativa a lo anterior es usar números convertidos en cadenas, y luego asegúrese de usar una paleta personalizada con tantos colores como tonos únicos.

 import matplotlib.pyplot as plt import seaborn as sns import pandas as pd d = {'column1':[1,2,3,4,5], 'column2':[2,4,5,2,3], 'cluster':[1,2,3,4,5]} df = pd.DataFrame(data=d) df["cluster"] = df["cluster"].astype(str) sns.relplot(x='column2', y='column1', hue='cluster', data=df, palette=["b", "g", "r", "indigo", "k"]) plt.show() 

introduzca la descripción de la imagen aquí