如何避免matplotlib.pyplot中的线条颜色重复?

9 投票
4 回答
22167 浏览
提问于 2025-04-16 17:47

我在用matplotlib.pyplot比较一些算法的结果,但因为好几条线的颜色完全一样,所以很难看清楚发生了什么。有没有办法解决这个问题?我觉得pyplot的颜色不止七种吧?

4 个回答

12

如果你知道自己要画多少个图,最好的做法是提前定义好颜色映射。

import matplotlib.pyplot as plt
import numpy as np

fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
number_of_plots=10
colormap = plt.cm.nipy_spectral #I suggest to use nipy_spectral, Set1,Paired
ax1.set_color_cycle([colormap(i) for i in np.linspace(0, 1,number_of_plots)])
for i in range(1,number_of_plots+1):
    ax1.plot(np.array([1,5])*i,label=i)

ax1.legend(loc=2)  

使用 nipy_spectral 这个配色方案

这里插入图片描述

使用 Set1 这个配色方案

这里插入图片描述

13

对于Python 3,从上面的解决方案中,你可以使用:

colormap = plt.cm.nipy_spectral
colors = colormap(np.linspace(0, 1, number_of_plots))
ax.set_prop_cycle('color', colors)

或者:

import seaborn as sns
colors = sns.color_palette('hls', number_of_plots)
ax.set_prop_cycle('color', colors)
5

Matplotlib有超过七种颜色。你可以用很多种方式来指定你想要的颜色(具体可以查看这个链接)。

比如,你可以使用HTML的十六进制字符串来指定颜色:

pyplot.plot(x, y, color='#112233')

撰写回答