【问题标题】:How to I set different colors to subsets of line plot iterations in matplotlib?如何在 matplotlib 中为线图迭代的子集设置不同的颜色?
【发布时间】:2019-07-25 07:19:26
【问题描述】:

我正在迭代地绘制来自二维数组(12,5000)out_array 的 12 行数据的np.exp 结果。所有数据共享相同的 x 值 (x_d)。我希望前 4 次迭代都绘制为相同的颜色,接下来的 4 次是不同的颜色,接下来的 4 次是不同的颜色......这样我有 3 种不同的颜色,每种颜色对应于第 1-4、第 5-8 , 和第 9-12 次迭代。最后,最好在图例中用它们对应的颜色来定义这些集合。

我研究了cycler (https://matplotlib.org/examples/color/color_cycle_demo.html),但我无法弄清楚如何将颜色分配给 > 1 的迭代集。(在我的情况下为 4)。正如您在我的代码示例中看到的那样,我可以用不同的(默认)颜色绘制所有 12 行 - 或者 - 我知道如何使它们都具有相同的颜色(即 ...,color = 'r',...

plt.figure()
for i in range(out_array.shape[0]):
    plt.plot(x_d, np.exp(out_array[i]),linewidth = 1, alpha = 0.6)
plt.xlim(-2,3)

我期待这样的情节,总共只有 3 种不同的颜色,每种颜色对应于上述迭代块。

【问题讨论】:

  • 您不能只使用带有 idx/4 的比较器的 while 循环吗?如果结果为 1、2、3,则应用不同的颜色
  • 嗨克莱门特。我是一个新手程序员。如果您认为它会起作用,我会尝试一下。您是否有机会在现有代码中展示示例或建议新行?
  • 我也是初学者,不过思路和你的单色机箱完全一样。只需在 for 循环中添加 if 案例,将 NBR_OF_CURVES 除以 NBR_OF_CHUNKS,您将拥有一个块索引,可用于在预设颜色数组中拾取颜色。可能不是最好的pythonicway,但这就是我会这样做的方式。 PS:忘记我想说的第一条评论的while循环 if case
  • 这似乎是一个很好的逻辑。我应该如何迭代地计算曲线的数量?
  • 这不是你的 for 循环迭代器

标签: python matplotlib plot colors iteration


【解决方案1】:

另一种解决方案

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)

color = ['r', 'g', 'b', 'p']

for i in range(12):

    plt.plot(x, i*x, color[i//4])

plt.show()

【讨论】:

  • 您应该重写一个问题,因为这与 SO 网站清晰度目的不同。
【解决方案2】:
plt.figure()
n = 0
color = ['r','g','b']
for i in range(out_array.shape[0]):
    n = n+1
    if n/4 <= 1:
        c = 1
    elif n/4 >1 and n/4 <= 2:
        c = 2
    elif n/4 >2:
        c = 3
    else:
        print(n)
    plt.plot(x_d, np.exp(out_array[i]),color = color[c-1])
plt.show()

【讨论】:

  • 关于如何为 3 个迭代子集创建图例 (c = 1, c = 2, c = 3) 有什么想法吗?标题应分别为 0-45、5-45、10-45。
猜你喜欢
  • 2014-03-21
  • 2021-07-15
  • 2020-03-30
  • 2016-09-14
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多