2017-06-29 45 views
0

我有一個數據集有多個標籤。我想用Pandas和Seaborn創建散點圖的Facetgrid。此外,這個數據集有不同的來源,我也想比較。 (例如,這可以是不同ML算法的預測和並排的兩個圖中的真實標記)。我想情節是這樣的有更多空間的方法和標號L:如何使用facetgrid在Seaborn中繪製Pandas multilabel數據散點圖?

enter image description here

這裏右列是第一個標籤和左側是第二個。

目前我的熊貓數據框看起來像這樣: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

你也許想讀的http:// VITA .had.co.nz/papers/tidy-data.html – mwaskom

回答

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]) 

然後使用真正直觀的選項,col,從docs

g = sns.FacetGrid(df, row='method', col='label_type', hue='label') 
g.map(plt.scatter, 'x', 'y') 
sns.plt.show() 
+0

作品!但是通過上面的代碼,我複製了x,y數據,使不同的標籤沿着列進行繪製。 –

+0

是的,但不是你想要的嗎?您的示例圖由複製的x,y數據組成。我認爲目標是用不同的色調並排創建完全相同的圖,表明每種方法中那些(x,y)座標的預測和真集的不同標籤。如果你想仍然能夠對原始數據進行分析,你可以通過'new_df = pd.concat([l1_df,l2_df])''使得連接的數據框成爲一個新的對象,這樣你仍然可以使用'df'工作用。 – jack6e

+0

正確。然而,對我來說,爲了能夠繪製多標籤數據,必須爲每個附加標籤重複每個實例似乎是錯誤的。或者,也許我對如何在熊貓中進行數據表示的理解有限? –

相關問題