2013-06-18 40 views
4

我繪製幾條曲線如下:Python Matplotlib:用二維參數繪圖:如何指定選項?

import numpy as np 
import matplotlib.pyplot as plt 

plt.plot(x, y) 

其中xy是2維(說的N×2這個例子起見)。

現在我想獨立設置每條曲線的顏色。我試過的東西是:

plot(x, y, color= colorArray) 

與例如colorArray= ['red', 'black'],但無濟於事。其他選項(linestyle,marker等)也是如此。

我知道這可以通過for循環來完成。然而,由於這個plot命令接受多維x/y,我認爲應該可以通過這種方式指定繪圖選項。

可能嗎?什麼是正確的方法來做到這一點? (一切,我發現搜索得到有效使用循環時)

+0

可能重複[如何獲得在一個單一的數字不同線路的不同地塊?](http://stackoverflow.com/questions/4805048/how-to-get-different-lines - 爲不同的情節 - 在一個單一的數字) – tacaswell

+0

我認爲這是不同的。在另一篇文章中的答案依賴於for循環 - 基本上我可以找到關於這個主題的所有答案。如前所述,我意識到這種可能性,我的問題是是否可以實現對顯示選項的控制(顏色,線型,標記等)的方式與使用二維數據一致 - 即不使用循環。也許我還不夠清楚。 – tave

回答

5

你可以使用ax.set_color_cycle

import numpy as np 
import matplotlib.pyplot as plt 
np.random.seed(2013) 
N = 10 
x, y = np.random.random((2,N,2)) 
x.cumsum(axis=0, out=x) 
y.cumsum(axis=0, out=y) 
fig, ax = plt.subplots() 
colors = ['red', 'black'] 
ax.set_color_cycle(colors) 
ax.plot(x,y) 
plt.show() 

產生 enter image description here

+0

謝謝,這是工作。你將如何爲每條曲線設置其他繪圖選項(標記,線型等)? – tave

+3

似乎沒有類似的方式來循環標記或線條。我想你將需要[使用'for-loop'](http://stackoverflow.com/q/7799156/190597)。 – unutbu

+0

好的,謝謝。那麼使用'for'循環可能更簡單一些。 – tave

1

我會在你正在做的方式繪製,然後相應地做了for循環改變顏色,你colorArray

plt.plot(x,y) 
for i, line in enumerate(plt.gca().lines): 
    line.set_color(colorArray[i]) 
1

我通常通過一個當這樣做維數組這個,像這樣:

plot(x[0], y[0], 'red', x[1], y[1], 'black')