如何避免matplotlib.pyplot中的线条颜色重复?
我在用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')