Matplotlib is hiring a Research Software Engineering Fellow! See discourse for details. Apply by January 3, 2020
matplotlib识别以下格式以指定颜色:
[0, 1]
(例如, (0.1, 0.2, 0.5)
或 (0.1, 0.2, 0.5, 0.3)
)rgba是红色、绿色、蓝色、alpha的缩写;'#0F0F0F'
或 '#0F0F0F0F'
;[0, 1]
包括灰级(例如, '0.5'
;{{'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}}
;'xkcd:'
(例如, 'xkcd:sky blue'
;{{'tab:blue', 'tab:orange', 'tab:green', 'tab:red', 'tab:purple', 'tab:brown', 'tab:pink', 'tab:gray', 'tab:olive', 'tab:cyan'}}
这是“t10”分类调色板中的表格颜色(默认颜色周期);'C'
后跟一个数字,这是默认属性循环的索引 (matplotlib.rcParams['axes.prop_cycle']
);索引发生在艺术家创建时,如果循环不包括颜色,则默认为黑色。“红”、“绿”和“蓝”是这些颜色的强度,它们的组合跨越了色彩空间。
“alpha”的行为取决于 zorder
艺术家的作品。较高的 zorder
艺术家被画在下层艺术家的上面,“阿尔法”决定下层艺术家是否被上层艺术家所覆盖。如果像素的旧RGB是 RGBold
被添加的艺术家像素的RGB是 RGBnew
用alpha alpha
,则像素的RGB更新为: RGB = RGBOld * (1 - Alpha) + RGBnew * Alpha
. alpha为1表示旧颜色完全被新艺术家覆盖,alpha为0表示艺术家的像素是透明的。
除“cn”之外,所有颜色的字符串规范都不区分大小写。
有关matplotlib中颜色的详细信息,请参见
matplotlib.colors
应用程序编程接口;“cn”颜色在艺术家创建后立即转换为rgba。例如,
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
th = np.linspace(0, 2*np.pi, 128)
def demo(sty):
mpl.style.use(sty)
fig, ax = plt.subplots(figsize=(3, 3))
ax.set_title('style: {!r}'.format(sty), color='C0')
ax.plot(th, np.cos(th), 'C1', label='C1')
ax.plot(th, np.sin(th), 'C2', label='C2')
ax.legend()
demo('default')
demo('seaborn')
将使用标题的第一种颜色,然后使用每个样式的第二种和第三种颜色打印 mpl.rcParams['axes.prop_cycle']
.
xkcd的颜色来源于网络漫画xkcd进行的用户调查。 Details of the survey are available on the xkcd blog .
在CSS颜色列表中的148种颜色中,x11/css4名称与xkcd名称之间存在95种名称冲突,其中3种名称的十六进制值不同。例如 'blue'
地图到 '#0000FF'
在哪里 'xkcd:blue'
地图到 '#0343DF'
. 由于这些名称冲突,所有XKCD颜色 'xkcd:'
前缀。正如博客文章中提到的,虽然基于这样的调查重新定义x11/css4名称可能很有趣,但我们不会单方面这样做。
名称冲突显示在下表中;十六进制值一致的颜色名称显示为粗体。
import matplotlib._color_data as mcd
import matplotlib.patches as mpatch
overlap = {name for name in mcd.CSS4_COLORS
if "xkcd:" + name in mcd.XKCD_COLORS}
fig = plt.figure(figsize=[4.8, 16])
ax = fig.add_axes([0, 0, 1, 1])
for j, n in enumerate(sorted(overlap, reverse=True)):
weight = None
cn = mcd.CSS4_COLORS[n]
xkcd = mcd.XKCD_COLORS["xkcd:" + n].upper()
if cn == xkcd:
weight = 'bold'
r1 = mpatch.Rectangle((0, j), 1, 1, color=cn)
r2 = mpatch.Rectangle((1, j), 1, 1, color=xkcd)
txt = ax.text(2, j+.5, ' ' + n, va='center', fontsize=10,
weight=weight)
ax.add_patch(r1)
ax.add_patch(r2)
ax.axhline(j, color='k')
ax.text(.5, j + 1.5, 'X11', ha='center', va='center')
ax.text(1.5, j + 1.5, 'xkcd', ha='center', va='center')
ax.set_xlim(0, 3)
ax.set_ylim(0, j + 2)
ax.axis('off')