如何使用facetgrid在Seaborn中绘制Pandas multilabel数据散点图?

时间:2017-06-29 13:06:41

标签: python pandas scatter-plot seaborn

我有一个有多个标签的数据集。我想用Pandas和Seaborn创建一个散点图的Facetgrid。此外,这个数据集有不同的起源,我也想比较。 (例如,这可能是不同ML算法的预测和两个图中的真实标记并排)。我想要的情节是这样的,有更多方法和标签的空间:

enter image description here

这里右列是第一个标签,左边是第二个。

目前我的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参数成为一个列表但不起作用。

1 个答案:

答案 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()