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

Posted

技术标签:

【中文标题】一次绘制多条线,但都根据当前的循环器状态【英文标题】:Plot multiple lines at once, but all according to the current cycler state 【发布时间】:2016-06-22 12:23:42 【问题描述】:

当我一次绘制三条线时,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】:

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

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

【讨论】:

创意!这也为另一个挑战提供了解决方案,即在使用label=x 时如何获取正确的图例条目。

以上是关于一次绘制多条线,但都根据当前的循环器状态的主要内容,如果未能解决你的问题,请参考以下文章

如何根据不同的dataFrame部分绘制(plotly.express)多条线

excel中如何用一个图表绘制多条折线

绘制折线图 - 多条线

如何在 d3 折线图中显示多条线?

OpenGL:如何在一次调用中绘制多条线带?

使用 JSON 绘制具有多条线的单个 Google 折线图