Matplotlib is hiring a Research Software Engineering Fellow! See discourse for details. Apply by January 3, 2020

Version 3.1.1
matplotlib
Fork me on GitHub

目录

Related Topics

指定颜色

matplotlib识别以下格式以指定颜色:

  • 中浮点值的rgb或rgba元组 [0, 1] (例如, (0.1, 0.2, 0.5)(0.1, 0.2, 0.5, 0.3) )rgba是红色、绿色、蓝色、alpha的缩写;
  • 十六进制rgb或rgb a字符串(例如, '#0F0F0F''#0F0F0F0F'
  • 浮点值的字符串表示形式 [0, 1] 包括灰级(例如, '0.5'
  • 什么之中的一个 {{'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}}
  • x11/css4颜色名称;
  • 名字来自 xkcd color survey 前缀 '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”分类调色板中的表格颜色(默认颜色周期);
  • “CN”颜色规格,即 '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中颜色的详细信息,请参见

“CN”颜色选择

“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 V X11/CSS4

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')
指定颜色