【问题标题】:Python Matplotlib: plot with 2-dimensional arguments : how to specify options?Python Matplotlib:带有二维参数的绘图:如何指定选项?
【发布时间】:2013-06-14 19:12:10
【问题描述】:

我正在绘制如下几条曲线:

import numpy as np
import matplotlib.pyplot as plt

plt.plot(x, y)

其中xy 是二维的(在本示例中,例如 N x 2)。

现在我想独立设置每条曲线的颜色。我试过这样的事情:

plot(x, y, color= colorArray)

例如colorArray= ['red', 'black'],但无济于事。其他选项(线条样式、标记等)也是如此。

我知道这可以通过 for 循环来完成。然而,由于这个plot 命令接受多维 x/y,我认为应该可以通过这种方式指定绘图选项。

有可能吗?这样做的正确方法是什么? (我在搜索时发现的一切都有效地使用了循环)

【问题讨论】:

  • 我觉得不一样。另一篇文章中的答案依赖于for 循环 - 基本上我可以找到关于这个主题的所有答案。如前所述,我知道这种可能性,我的问题是是否有可能实现对显示选项的控制(颜色,线条样式,标记等)以与使用二维数据一致的方式 - 即不使用循环。也许我不够清楚。

标签: python colors matplotlib plot


【解决方案1】:

你可以使用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()

产量

【讨论】:

  • 谢谢,这行得通。不过,您将如何为每条曲线设置其他绘图选项(标记、线型等)?
  • 似乎没有类似的方式来循环标记或线条样式。我想你需要use a for-loop
  • 好的,谢谢。那么使用for 循环可能确实更简单。
【解决方案2】:

这样做时我通常会传递一维数组,如下所示:

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

【讨论】:

    【解决方案3】:

    我会按照您的方式进行绘图,然后执行 for 循环,根据您的 colorArray 更改颜色:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 2014-05-21
      • 1970-01-01
      • 2012-08-29
      相关资源
      最近更新 更多