hue参数跳过一个整数。
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
答案 0 :(得分:9)
如果df1:
average name
3.5 n1
1.2 n2
4.2 n3
df2:
name
n1
n1
n1
n2
n3
n1
n2
n3
n3
df_i_want:
average name
3.5 n1
3.5 n1
3.5 n1
1.2 n2
4.2 n3
3.5 n1
1.2 n2
4.2 n3
4.2 n3
为数字格式,seaborn将假定它代表某个连续量,并决定沿颜色维度显示它认为是代表性的样本。
您可以使用hue
来规避这一点。
legend="full"
另一种方法是确保将值分类处理 不幸的是,即使您将数字作为字符串插入,它们也将被转换为数字,并退回到上述相同的机制。可以看到as a bug。
不过,您的选择之一就是使用真实类别,例如单个字母。
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()
工作正常,
'cluster':list("ABCDE")
上述方法的替代方法是使用数字转换为字符串,然后确保使用具有与唯一色调相同数量的颜色的自定义调色板。
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()