2017-07-02 78 views
2

我是Python的新手,我試圖創建一個散點圖,顯示每個xtick的幾個y值。我發現這個問題,幫助我想出了一些代碼:Python Scatter Plot with Multiple Y values for each Xmatplotlib - scatterplot,爲y元組選擇顏色

x = [1,2,3,4] 
y = [(1,1,2,3,9),(1,1,2,4), (0.5,4), (0.1,2)] 

for xe, ye in zip(x, y): 
    plt.scatter([xe] * len(ye), ye, color=['blue', 'red']) 

plt.xticks([1, 2, 3, 4]) 
plt.axes().set_xticklabels(['5', '10', '15', '25']) 
plt.ylim(0, 1) 

plt.show() 

問題是,例如,這段代碼以紅色和藍色交替地打印第一個元組的點。然而,我喜歡用藍色打印第一個元組的所有點(例如(1,1,2,3,9)),下一個元組的所有點(例如(1,1,2,4))以紅色等等有沒有辦法以這種方式指定顏色?我還沒有遇到類似的問題。

我真的很感激任何提示或幫助!

+0

在'第一個元組y'有5項,但你只有4'x'值。這有什麼預期的結果? – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnest我喜歡爲每個x繪製所有幾個y值(在我的真實代碼中,每個元組都包含1000個數字),所以第一個元組繪製在第一個xtick上,下一個元組繪製在下一個xtick上。對於不同數量的值沒有問題。你在這裏看到一個錯誤嗎? –

回答

2

使用itertools.cycle循環你的顏色和郵政編碼,他們與你的元組的循環:

for (xe, ye), color in zip(zip(x, y), itertools.cycle(['blue', 'red'])): 
    pyplot.scatter([xe] * len(ye), ye, color=color) 
+0

很好,非常感謝你的快速回復!這十分完美! –