2015-11-11 114 views
0

我正在嘗試使用數據框來創建一個散點圖。這是一個什麼樣的數據框看起來像一個例子:熊貓:從數據框中創建一個matplotlib圖例

---------------------------------------------- 
| Index | x | y | color | name | 
---------------------------------------------- 
| 0 | 4.3 | 2.2 | 'b' | 'First'| 
---------------------------------------------- 
| 1 | 2.3 | 3.2 | 'c' | 'Secd' | 
---------------------------------------------- 

我使用繪製代碼如下所示:

plt.scatter(dframe['x'], dframe['y'], color=dframe['color'], label=dframe['name']) 
plt.title('Title') 
plt.xlabel('X label') 
plt.ylabel('Y label') 
plt.xlim(0, 10) 
plt.ylim(0, 10) 
plt.legend(scatterpoints=1, loc='lower left', fontsize=10) 
plt.show() 

無論出於何種原因,這增加了1項圖例和標籤對於該項目是重複2x的整個「名稱」列。

如何獲取圖例以在名稱列中分別顯示每個項目並僅顯示該列一次?

謝謝!

由於信息,我曾嘗試以下無濟於事:

plt.legend(dframe['name'], loc = 'lower.... 

for i in range(len(dframe['name'])): 
    plt.legend(dframe['name'][i], loc = .. 

plt.legend([dframe['name']], loc = 'lower.... 

回答

0

plt.scatter僅得到一個每次通話圖例標籤。如果你想爲每個點有一個標籤,你必須做這樣的事情:

for index, row in dframe.iterrows(): 
    plt.scatter(row['x'], row['y'], color=row['color'], label=row['name']) 
plt.title('Title') 
plt.xlabel('X label') 
plt.ylabel('Y label') 
plt.xlim(0, 10) 
plt.ylim(0, 10) 
plt.legend(scatterpoints=1, loc='lower left', fontsize=10) 
plt.show() 
+0

這工作!非常感謝! – Marto