首页 > 解决方案 > 如何使用 matplotlib.pyplot 格式为每一行设置唯一的颜色

问题描述

试图让我制作的图表中的每一行都具有独特的颜色时,我遇到了很多麻烦。Matplotlib.pyplot 函数plt.errorbar()似乎在 10 种颜色之间循环并重复。我的绘图是使用 for 循环生成的,其中包含来自数据框索引的静态 x 和来自数据框列的多个 y:

fig = plt.figure()
for col in df_avg_diff.columns:
        plt.errorbar(x=df_avg_diff.index, y=df_avg_diff[col])
plt.show()

我将如何更改此代码以包含每个 y 的颜色变化?谢谢!

标签: pythonmatplotlibjupyter-notebook

解决方案


这不是 errorbar 函数的问题,而是 matplotlib 的默认颜色循环(或更一般地说,属性循环)的问题。查看此链接以获取示例。

为每一行获得不同颜色的最简单方法可能是使用任何预定义的颜色图自己定义它们- 例如jet

colors = plt.cm.jet(np.linspace(0, 1, n_columns))

这会将颜色图范围划分为您需要的颜色数量。然后,您可以将默认属性循环器更改为新创建的循环器,或者简单地为每一行传递颜色代码:

for i, col in enumerate(df_avg_diff.columns):
        plt.errorbar(x=df_avg_diff.index, y=df_avg_diff[col], color=colors[i])

推荐阅读