我不想为每个绘制的线指定颜色:
from matplotlib import pyplot as plt
for i in range(20):
plt.plot([0, 1], [i, i])
plt.show()
Run Code Online (Sandbox Code Playgroud)
如果您为此查看图像,matplotlib会尝试为每行不同的颜色选择颜色,但最终会重新使用颜色.我只是想阻止它重复已经使用的颜色和/或提供一个颜色列表来使用.
matplotlib中使用的默认颜色(例如:http://matplotlib.org/examples/pylab_examples/pie_demo.html)有点简单和丑陋.我还注意到,如果你在一个图中绘制超过5-6个不同的系列,matplotlib开始重复颜色.
我已经看到一些华丽的图形来自其他可视化软件包(在其他语言中,默认情况下),可以有5-6个不同的系列,只有一种颜色以不同的色调覆盖.有没有人有一个很好的颜色设置在matplotlib中使用?还有一种方法可以让matplotlib默认使用它吗?
我最喜欢在Matplotlib上做的事情之一就是设置颜色循环以匹配一些颜色图,以便生成线条图,颜色在线条上有很好的渐变.像这个:
以前,这是一行代码使用set_color_cycle:
ax.set_color_cycle([plt.cm.spectral(i) for i in np.linspace(0, 1, num_lines)])
Run Code Online (Sandbox Code Playgroud)
但是,最近我看到一个警告:
MatplotlibDeprecationWarning:
The set_color_cycle attribute was deprecated in version 1.5.
Use set_prop_cycle instead.
Run Code Online (Sandbox Code Playgroud)
使用set_prop_cycle,我可以实现相同的结果,但我需要import cycler,并且语法不那么紧凑:
from cycler import cycler
colors = [plt.cm.spectral(i) for i in np.linspace(0, 1, num_lines)]
ax.set_prop_cycle(cycler('color', colors))
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:
我使用set_prop_cycle得当吗?(并以最有效的方式?)
有没有更简单的方法将颜色周期设置为色彩图?换句话说,这样有一些神话般的功能吗?
ax.set_colorcycle_to_colormap('jet', nlines=30)
Run Code Online (Sandbox Code Playgroud)
以下是完整示例的代码:
import numpy as np
import matplotlib.pyplot as plt
ax = plt.subplot(111)
num_lines = 30
colors = [plt.cm.spectral(i) for i in np.linspace(0, 1, num_lines)]
# old way:
ax.set_color_cycle(colors) …Run Code Online (Sandbox Code Playgroud) 我正在使用pandas和matplotlib来生成包含大量条形图的条形图.
我知道如何循环选择所选颜色的列表(如何给出pandas/matplotlib条形图自定义颜色).问题是要选择什么颜色,以便我的图形可以很好地打印在纸上(这是一篇研究论文).我最感兴趣的是柱子和选择的颜色之间的足够对比,看起来很舒服.我想要多种颜色而不是灰度或单色调颜色.
是否有任何预定的方案可供人们使用?
我想为我的 python 图设置一个配色方案,这样它们就不会像下面显示的顶部图中的 A 和 H 一样重复相同的颜色。(对不起,如果它很难看到)。

我使用的代码很简单,
ax1.plot(sections,A,label='A',linewidth=2) ax1.plot(sections,B,label='B',linewidth=2) ax1.plot(sections,C,label='C', linewidth=2) ax1.plot(sections,D,label='D',linewidth=2) ax1.plot(sections,E,label='E',linewidth=2) ax1.plot(sections,F,label= 'F',linewidth=2) ax1.plot(sections,G,label='G',linewidth=2) ax1.plot(sections,H,label='H',linewidth=2)
设置配色方案的最佳方法是什么?是否使用颜色图功能?谢谢你的帮助!
我想对Jupyter笔记本中的每个图使用相同的颜色图/颜色周期/调色板。
使用seaborn软件包,我可以使用:
seaborn.set_palette('Set1')
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以只使用matplotlib而不使用seaborn?
我知道如何分别为每个图定义颜色图,并且我知道预定义的样式(例如ggplot),但是我找不到一种可以一次仅对所有图定义颜色图的方法。
我的目的是为我的学生简化代码,因此set_palette()不要使用后面的复杂代码。
编辑:如已接受的答案所示,我将颜色映射与颜色循环混淆。