In [1]: from matplotlib import rc_params
In [2]: rc_params()['axes.color_cycle']
/home/boffi/lib/miniconda3/lib/python3.6/site-packages/matplotlib/__init__.py:938: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.
warnings.warn(self.msg_depr % (key, alt_key))
Out[2]:
['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd',
'#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 1, 10)
for i in range(1, 6):
plt.plot(x, i * x + i, label='$y = {i}x + {i}$'.format(i=i))
plt.legend(loc='best')
plt.show()
如果要控制matplotlib循环使用的颜色,请使用ax.set_color_cycle:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 1, 10)
fig, ax = plt.subplots()
ax.set_color_cycle(['red', 'black', 'yellow'])
for i in range(1, 6):
plt.plot(x, i * x + i, label='$y = {i}x + {i}$'.format(i=i))
plt.legend(loc='best')
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 1, 10)
for i, color in enumerate(['red', 'black', 'blue', 'brown', 'green'], start=1):
plt.plot(x, i * x + i, color=color, label='$y = {i}x + {i}$'.format(i=i))
plt.legend(loc='best')
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 1, 10)
number = 5
cmap = plt.get_cmap('gnuplot')
colors = [cmap(i) for i in np.linspace(0, 1, number)]
for i, color in enumerate(colors, start=1):
plt.plot(x, i * x + i, color=color, label='$y = {i}x + {i}$'.format(i=i))
plt.legend(loc='best')
plt.show()
Joe Kington的excellent answer已经4岁了, Matplotlib已逐渐更改(特别是 以及新的主要版本Matplotlib 2.0.x, 从一个重要的角度介绍了文体差异 默认使用的颜色的视图。
单个线条的颜色
各条线的颜色(以及不同图的颜色 元素,例如散点图中的标记)由
color
控制 关键字参数my_color
是(0.,0.5,0.5)
)"#008080"
(RGB)或"#008080A0"
)"k"
表示黑色,可能是"bgrcmykw"
中的值)"teal"
)---也称为HTML颜色名(在the docs中也X11/CSS4颜色名)'xkcd:barbie pink'
)'tab:blue'
,'tab:olive'
)中的color from the Tableau Colors"C3"
,即字母"C"
,后跟"0-9"
中的一个数字)。颜色周期
默认情况下,使用不同的颜色绘制不同的线 默认情况下定义,并以循环方式使用(因此名称 颜色周期。
颜色循环是
axes
对象的一个属性,在较旧的 发行版只是一系列有效的颜色名称(默认情况下 一个字符颜色名称的字符串,"bgrcmyk"
),您可以设置它 就像在(如前所述,in a comment此API已被弃用,稍后将详细介绍)。
在Matplotlib 2.0中,默认的颜色周期是
["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"]
,即Vega category10 palette。(图像是来自https://vega.github.io/vega/docs/schemes/)的屏幕截图
循环器模块:可组合循环
下面的代码表明颜色循环概念已被弃用
现在相关的属性是
'axes.prop_cycle'
以前,
color_cycle
是有效颜色的通用序列 命名,现在默认是一个cycler
对象,包含 标签('color'
)和一系列有效的颜色名称。这个 相对于上一个接口,向前一步是 不仅可以在线条颜色上循环,还可以在其他颜色上循环 行属性,例如如您所见,
cycler
对象是可组合的对象,当您在组合的cycler
上迭代时,在每次迭代中,您得到的是plt.plot
的关键字参数字典。您可以对每
axes
对象比率使用新的默认值或者您可以临时安装新的默认值
或者完全更改编辑
.matplotlibrc
文件的默认值。最后一种可能是,使用上下文管理器
在一组不同的绘图中使用新的
cycler
,在上下文结束时恢复为默认值。函数
cycler()
的doc字符串是有用的,但是关于cycler
模块和cycler()
函数的(不是很多)血淋淋的细节以及示例可以找到in the fine docs。@tcaswell已经回答了,但我正在输入我的答案,所以我将继续发布它。。。
有很多不同的方法可以做到这一点。首先,
matplotlib
将自动循环显示颜色。默认情况下,它在蓝色、绿色、红色、青色、洋红、黄色、黑色之间循环:如果要控制matplotlib循环使用的颜色,请使用
ax.set_color_cycle
:如果要显式指定要使用的颜色,只需将其传递给
color
kwarg(接受html颜色名称,rgb元组和十六进制字符串也是如此):最后,如果要自动从existing colormap中选择指定数量的颜色:
相关问题 更多 >
编程相关推荐