一次绘制多条线,但都根据当前的循环器状态

时间:2016-06-22 12:23:42

标签: python matplotlib

当我一次性绘制三条线时,matplotlib通过当前循环器的三个步骤进行采样,给出每个自己的风格:

In [11]: x = linspace(0, 5, 50)

In [12]: y = vstack([x**2, x**3, x**4]).T

In [13]: plot(x, y)
Out[13]: 
[<matplotlib.lines.Line2D at 0x7edfa9144550>,
 <matplotlib.lines.Line2D at 0x7edfa9144b38>,
 <matplotlib.lines.Line2D at 0x7edfa9144cf8>]

我可以使用plot(x, y, color="black")使它们具有相同的颜色。但是,我不希望它们都是黑色的;我希望每一行都遵循循环的当前(下一个)状态。

获取current state充其量是麻烦的。我可以展开x并展平y以使所有三个具有相同的风格:

In [54]: plot(vstack([x]*3).ravel(), y.T.ravel())

但是这会产生连接三者的虚假线,所以它只适用于绘制标记而不是线条的绘图样式。

有没有一种令人愉快的方法告诉matplotlib我想使用相同的循环状态来绘制多条线?

1 个答案:

答案 0 :(得分:2)

这里通过获取当前状态:(不愉快,但不是太麻烦。)

In [94]: plt.plot(x, y[:,1:], c=plt.plot(x, y[:,0])[0].get_c())