我有一个有多个标签的数据集。我想用Pandas和Seaborn创建一个散点图的Facetgrid。此外,这个数据集有不同的起源,我也想比较。 (例如,这可能是不同ML算法的预测和两个图中的真实标记并排)。我想要的情节是这样的,有更多方法和标签的空间:
这里右列是第一个标签,左边是第二个。
目前我的Pandas数据框如下所示:l1,l2,method,x,y。其中l1和l2是不同的标签。我可以使用以下代码绘制一列:
g = sns.FacetGrid(df, row='method', hue='l1')
g.map(plt.scatter, 'x', 'y')
sns.plt.show()
但是如何获得第二列?直观的做法是让hue参数成为一个列表但不起作用。
答案 0 :(得分:1)
我认为您需要修改数据框:
l1_df = df[['l1','method','x','y']]
l1_df['label_type'] = 'l1'
l1_df.rename(columns={'l1':'label'}, inplace=True)
l2_df = df[['l2','method','x','y']]
l2_df['label_type'] = 'l2'
l2_df.rename(columns={'l2':'label'}, inplace=True)
df = pd.concat([l1_df,l2_df])
然后使用docs:
中真正直观的选项col
g = sns.FacetGrid(df, row='method', col='label_type', hue='label')
g.map(plt.scatter, 'x', 'y')
sns.plt.show()