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

发布于 2024-11-07 20:43:14 字数 100 浏览 0 评论 0原文

我正在使用 matplotlib.pyplot 比较一些算法结果,但是很难理解发生了什么,因为几条线具有相同的确切颜色。有办法避免这种情况吗?我不认为 pyplot 只有七种颜色,是吗?

I am comparing some algorithmic results using matplotlib.pyplot, however it is very difficult to understand what is going on since several lines have the same exact color. Is there a way to avoid this? I don't think that pyplot has only seven colors, has it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

仙女山的月亮 2024-11-14 20:43:14

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

For Python 3, from the solutions above you can use:

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

or:

import seaborn as sns
colors = sns.color_palette('hls', number_of_plots)
ax.set_prop_cycle('color', colors)
回忆追雨的时光 2024-11-14 20:43:14

如果您知道要绘制多少个图,最好的办法是在之前定义颜色图:

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
输入图像描述这里

The best thing if you know how many plots you are going to plot is to define the colormap before:

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)  

Using nipy_spectral

enter image description here

Using Set1
enter image description here

懷念過去 2024-11-14 20:43:14

我还建议使用 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")

这些是生成的调色板:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

I would also suggest the use of Seaborn. With this library it is very easy to generate sequential or qualitative colour palettes with the number of colours you need. There is also a tool to visualize the palettes. For example:

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")

These are the resulting palettes:

enter image description here

enter image description here

enter image description here

失与倦" 2024-11-14 20:43:14

Matplotlib 有七种以上的颜色。您可以通过多种方式指定颜色(请参阅 http://matplotlib.sourceforge.net/api/colors_api .html)。

例如,您可以使用 html 十六进制字符串指定颜色:

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

Matplotlib has more than seven colors. You can specify your color in many ways (see http://matplotlib.sourceforge.net/api/colors_api.html).

For example, you can specify the color using an html hex string:

pyplot.plot(x, y, color='#112233')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文