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

clj7thdc  于 2022-11-15  发布在  其他
关注(0)|答案(4)|浏览(390)

我正在用matplotlib.pyplot比较一些算法的结果,但是很难理解是怎么回事,因为几条线的颜色完全相同。有没有办法避免这种情况?我不认为pyplot只有七种颜色,是吗?

vmpqdwk3

vmpqdwk31#

对于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)
vmdwslir

vmdwslir2#

如果您知道要绘制多少个图,最好在以下操作之前定义色彩Map表:

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

kgsdhlau

kgsdhlau3#

Matplotlib有七种以上的颜色。您可以通过多种方式指定颜色(请参阅http://matplotlib.sourceforge.net/api/colors_api.html)。
例如,可以使用html十六进制字符串指定颜色:

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

xtupzzrd4#

我还建议使用Seaborn。使用这个库,可以非常容易地生成所需颜色数量的连续或定性调色板。还有一个工具可以可视化调色板。例如:

import seaborn as sns

colors = sns.color_palette("hls", 4)
sns.palplot(colors)
plt.savefig("pal1.png")
colors = sns.color_palette("hls", 8)
sns.palplot(colors)
plt.savefig("pal2.png")
colors = sns.color_palette("Set2", 8)
sns.palplot(colors)
plt.savefig("pal3.png")

以下是产生的选项板:

相关问题