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)
Python 2.7 Seaborn 0.9.0 Ubuntu 16.04 LTS
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()
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()
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()