2013-06-18 38 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')