强基初中数学&学Python——第279课 数字和数学第三方模块Matplotlib之九:颜色-指定颜色

  Matplotlib支持使用各种颜色和颜色映射可视化信息。这些教程涵盖了这些颜色映射的基本内容,包括如何创建自己的颜色映射,以及如何为您的用例自定义颜色映射

  有关的更多信息,请参阅示例页面(examples page)。

颜色格式

  Matplotlib可以识别以下格式来指定颜色。

格式描述

示例

数值是闭区间[0, 1]浮点数的RGB或RGBA(red,green,blue,alpha)的元组。

· (0.1, 0.2, 0.5)

· (0.1, 0.2, 0.5, 0.3)

不区分大小写的十六进制RGB或RGBA字符串。

· '#0f0f0f'

· '#0f0f0f80'

重复不区分大小写的十六进制RGB或RGBA字符串简写

· '#abc' as '#aabbcc'

· '#fb1' as '#ffbb11'

闭合区间[0, 1]浮点数灰度值的字符串表示。

· '0' as black

· '1' as white

· '0.8' as light gray

一些基本颜色的单字符简写法。

注意:

绿色、青色、品红色和黄色与X11/CSS4颜色不一致。选择它们的特殊色调是为了在典型背景下更好地显示彩色线条。

· 'b' as blue

· 'g' as green

· 'r' as red

· 'c' as cyan

· 'm' as magenta

· 'y' as yellow

· 'k' as black

· 'w' as white

不区分大小写的X11/CSS4颜色名称,不带空格。

· 'aquamarine' (碧绿色)

· 'mediumseagreen'  (适中的海洋绿)

前缀为“xkcd:”的xkcd颜色调查(xkcd color survey)中不区分大小写的颜色名称。

· 'xkcd:sky blue'

· 'xkcd:eggshell'

“T10”分类调色板中不区分大小写的Tableau颜色。

备注:

这是默认的颜色循环(cycle)。

· 'tab:blue'

· 'tab:orange'

· 'tab:green'

· 'tab:red'

· 'tab:purple'

· 'tab:brown'

· 'tab:pink'

· 'tab:gray'

· 'tab:olive'

· 'tab:cyan'

“CN”颜色规范,其中“C”位于作为默认属性循环(cycle)索引的数字之前。

备注:

Matplotlib在绘制时对颜色进行索引,如果循环不包括颜色,则默认为黑色。

· 'C0'

· 'C1'

----------

rcParams["axes.prop_cycle"] (default: cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']))

参看:
  以下链接提供了有关Matplotlib中颜色的详细信息。  · Color Demo Examplehttps://matplotlib.org/stable/gallery/color/color_demo.html  · matplotlib.colors APIhttps://matplotlib.org/stable/api/colors_api.html#module-matplotlib.colors  · List of named colors Examplehttps://matplotlib.org/stable/gallery/color/named_colors.html

  “Red(红色)”、“Green(绿色)”和“Blue(蓝色)”是这些颜色的强度。组合在一起来表示色彩空间。

透明度(Transparency)

  颜色的alpha值指定其透明度,其中0为完全透明,1为完全不透明。当一种颜色是半透明的时,背景颜色将显示出来。

  通过下面公式,用alpha值将前景颜色与背景颜色混合来确定结果颜色:

RGB结果 = RGB背景 * (1 -  α) + RGB前景 * α

 

  下面绘图示例展示了透明度的效果。

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

import matplotlib.pyplot as pltfrom matplotlib.patches import Rectangleimport numpy as np
fig, ax = plt.subplots(figsize=(6.5, 1.65), layout='constrained')ax.add_patch(Rectangle((-0.2, -0.35), 11.2, 0.7, color='C1', alpha=0.8))for i, alpha in enumerate(np.linspace(0, 1, 11)):    ax.add_patch(Rectangle((i, 0.05), 0.8, 0.6, alpha=alpha, zorder=0))    ax.text(i+0.4, 0.85, f"{alpha:.1f}", ha='center')    ax.add_patch(Rectangle((i, -0.05), 0.8, -0.6, alpha=alpha, zorder=2))ax.set_xlim(-0.2, 13)ax.set_ylim(-1, 1)ax.set_title('alpha values')ax.text(11.3, 0.6, 'zorder=1', va='center', color='C0')ax.text(11.3, 0, 'zorder=2\nalpha=0.8', va='center', color='C1')ax.text(11.3, -0.6, 'zorder=3', va='center', color='C0')ax.axis('off')
fig.show()

 

  橙色矩形是半透明的,alpha=0.8。上面一行蓝色正方形绘制在下面,下面一行蓝色方块绘制在橙色矩形的上面。  另请参见Zorder Demo以了解有关绘图顺序的更多信息。

“CN”颜色选择

  Matplotlib绘制“艺术家(Artists”时,会将“CN”颜色转换为RGBA。“循环器样式(Styling with cycler”部分包含有关控制颜色和样式特性的其他信息。

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

import numpy as npimport matplotlib.pyplot as pltimport 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-v0_8')plt.show()

  标题用第一种颜色“C0”。每个绘图使用每个样式的第二种和第三种颜色:rcParams["axes.prop_cycle"] (default: cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']))。它们分别是“C1”和“C2”。

X11/CSS4和xkcd颜色的比较  xkcd的颜色来自网络漫画xkcd进行的一项用户调查(user survey conducted by the webcomic xkcd)。  148个X11/CSS4颜色名称中的95个也出现在xkcd颜色调查中。它们几乎都映射到X11/CSS4和xkcd调色板中的不同颜色值。只有“黑色(black)”、“白色(white)”和“青色(cyan)”是相同的。  例如,“blue”映射到“#0000FF”,而“xkcd:blue”则映射到“#0343DF”。由于这些名称冲突,所有xkcd颜色都有“xkcd:”前缀。  下面的可视化显示了名称冲突。颜色值一致的颜色名称以粗体显示。

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

import matplotlib.colors as mcolorsimport matplotlib.patches as mpatch
overlap = {name for name in mcolors.CSS4_COLORS           if f'xkcd:{name}' in mcolors.XKCD_COLORS}
fig = plt.figure(figsize=[9, 5])ax = fig.add_axes([0, 0, 1, 1])
n_groups = 3n_rows = len(overlap) // n_groups + 1
for j, color_name in enumerate(sorted(overlap)):    css4 = mcolors.CSS4_COLORS[color_name]    xkcd = mcolors.XKCD_COLORS[f'xkcd:{color_name}'].upper()
    # Pick text colour based on perceived luminance.    rgba = mcolors.to_rgba_array([css4, xkcd])    luma = 0.299 * rgba[:, 0] + 0.587 * rgba[:, 1] + 0.114 * rgba[:, 2]    css4_text_color = 'k' if luma[0] > 0.5 else 'w'    xkcd_text_color = 'k' if luma[1] > 0.5 else 'w'
    col_shift = (j // n_rows) * 3    y_pos = j % n_rows    text_args = dict(fontsize=10, weight='bold' if css4 == xkcd else None)    ax.add_patch(mpatch.Rectangle((0 + col_shift, y_pos), 1, 1, color=css4))    ax.add_patch(mpatch.Rectangle((1 + col_shift, y_pos), 1, 1, color=xkcd))    ax.text(0.5 + col_shift, y_pos + .7, css4,            color=css4_text_color, ha='center', **text_args)    ax.text(1.5 + col_shift, y_pos + .7, xkcd,            color=xkcd_text_color, ha='center', **text_args)    ax.text(2 + col_shift, y_pos + .7, f'  {color_name}', **text_args)
for g in range(n_groups):    ax.hlines(range(n_rows), 3*g, 3*g + 2.8, color='0.7', linewidth=1)    ax.text(0.5 + 3*g, -0.3, 'X11/CSS4', ha='center')    ax.text(1.5 + 3*g, -0.3, 'xkcd', ha='center')
ax.set_xlim(0, 3 * n_groups)ax.set_ylim(n_rows, -1)ax.axis('off')
plt.show()

 

 

examples page:

https://matplotlib.org/stable/gallery/color/index.html#color-examples

xkcd color survey:

https://xkcd.com/color/rgb/rcParams["axes.prop_cycle"]:https://matplotlib.org/stable/tutorials/introductory/customizing.html?highlight=axes.prop_cycle#matplotlibrc-sampleZorder Demo:https://matplotlib.org/stable/gallery/misc/zorder_demo.htmlStyling with cycler:https://matplotlib.org/stable/tutorials/intermediate/color_cycle.htmluser survey conducted by the webcomic xkcd:

https://blog.xkcd.com/2010/05/03/color-survey-results/