2014-03-31 69 views
2

我正在根據數據中的條件製作使用兩個不同符號的散點圖。 在for循環中,通過數據的行迭代,如果滿足條件的點被標繪有圓圈,並且如果不滿足點繪製具有正方形:在plt.plot()命令之外定義繪圖標籤 - Matplotlib

for i in thick.index: 
    if thick['Interest'][i] == 1: 
     plt.scatter(thick['NiThickness'][i], thick['GdThickness'][i], marker = 'o', color = 'b') 
    else: 
     plt.scatter(thick['NiThickness'][i], thick['GdThickness'][i], marker = 's', color = 'r') 

其中「興趣」是一列填充1和零(零?)。

我想有圖例爲圓一個標籤,一個是方形,但如果我在plt.scatter(...)命令聲明label = 'circle'我的傳說在我的數據文件中獲得儘可能多的行,有行。

有沒有一個簡單的技巧,我失蹤了?

謝謝。

回答

1

這是我在這種情況下使用的模式:

label_o = 'Circle' 
label_s = 'Square' 
for i in thick.index: 
    if thick['Interest'][i] == 1: 
     plt.scatter(thick['NiThickness'][i], thick['GdThickness'][i], marker=o', color='b', label=label_o) 
     label_o = None 
    else: 
     plt.scatter(thick['NiThickness'][i], thick['GdThickness'][i], marker='s', color='r', label=label_s) 
     label_s = None 

這也很好地採用其中僅類別之一是存在的情況下的服務。

+0

即整理出來,謝謝。 – user3087409

1

如果thick是一個數據幀:

idx = thick['Interest'] == 1 
ax = plt.subplot(111) 
ax.scatter(thick['NiThickness'][idx], thick['GdThickness'][idx], 
      marker='o', color='b', label='circle') 
ax.scatter(thick['NiThickness'][~idx], thick['GdThickness'][~idx], 
      marker='s', color='r', label='square')