2016-02-01 46 views
2

我想弄清楚爲什麼這段代碼不起作用。我試圖將「標記」設置爲一個變量,以便它可以根據某個列讀取的內容使用不同的標記。其他的一切在小區工作正常,但是當我添加此部分:使用標記函數時無法識別的標記樣式

mark = ["s" if t == "M" else "o" for t in z] 

plt.scatter(x2[yesGEM],y1[yesGEM],c="green",label='Observed (GemN)', marker=mark) 

我得到:

ValueError: Unrecognized marker style ['o', 's', 'o', 'o', 'o', 's', 'o', 'o',......'o'] 

任何想法,這是爲什麼?

+1

http://stackoverflow.com/questions/26490817/matplotlib-scatter-plot-with-different-markers-and-colors – furas

回答

0

我不認爲你可以設置視爲可迭代,當你調用scatter(見the docs),所以你必須將數據分成兩組,並分別使他們四散,例如(假設x2y1和對應於值z):

data_s = [] 
data_o = [] 
for i,t in enumerate(z): 
    if t == 'M': 
     data_s.append(x2[i], y1[i]) 
    else: 
     data_o.append(x2[i], y1[i]) 

plt.scatter(*zip(*data_s), marker='s', c='g') 
plt.scatter(*zip(*data_o), marker='o', c='g') 
相關問題