赶项目停了好久啊,这个事情还是要坚持下去的。
matplotlib可以用以下几种方式指定颜色:
- RGB或RGBA(red, green, blue, alpha,alpha代表透明度)的元组,其中的元素是[0,1]区间内的数值,例如(0.1, 0.2, 0.5) or (0.1, 0.2, 0.5, 0.3);
- 16进制的RGB或RGBA字符串,例如 '#0f0f0f' or '#0f0f0f80',不区分大小写;
- 字符型的[0,1]区间内的数值,例如,'0.5';
- 颜色的首字母简写形式,从{'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}中取值;
- X11/CSS4 的颜色名称,不区分大小写;
-
xkcd color survey中的颜色名称, 需要加上前缀
'xkcd:'
,例如'xkcd:sky blue'
; - 默认的 'T10' 调色板中的一种颜色:{'tab:blue', 'tab:orange', 'tab:green', 'tab:red','tab:purple', 'tab:brown', 'tab:pink', 'tab:gray', 'tab:olive', 'tab:cyan'},不区分大小写;
- 'CN'方式指定,其中的 'N' 表示数字,代表默认的属性循环的index(matplotlib.rcParams['axes.prop_cycle']);
更多matplotlib颜色的信息:
- the Specifying Colors tutorial;
- the
matplotlib.colors
API; - the List of named colors example.
颜色当中 "alpha" 的表现取决于图形的zorder
值,同一个坐标系中的图形是分层渲染的,高 zorder 值的图形被置于低 zorder 值的图形之上,"alpha" 值就决定了下层的图形是否会被上层图形覆盖。假设某个像素点原先的 RGB 为 RGBold ,加在其上的Alpha
值为 alpha 的新图形的 RGB 为 RGBnew ,那么这个像素点当前的 RGB 则更新为:RGB = RGBOld * (1 - Alpha) + RGBnew * Alpha。Alpha 为1表示原来的颜色被完全覆盖,alpha 为0则表示新图形的像素是透明的。
下面来看例子:
import matplotlib.pyplot as plt
import numpy as np
t = np.linspace(0.0, 2.0, 201)
s = np.sin(2 * np.pi * t)
# 1) RGB tuple:
fig, ax = plt.subplots(facecolor=(.18, .31, .31))
# 2) hex string:
ax.set_facecolor('#eafff5')
# 3) gray level string:
ax.set_title('Voltage vs. time chart', color='0.7')
# 4) single letter color string
ax.set_xlabel('time (s)', color='c')
# 5) a named color:
ax.set_ylabel('voltage (mV)', color='peachpuff')
# 6) a named xkcd color:
ax.plot(t, s, 'xkcd:crimson')
# 7) Cn notation:
ax.plot(t, .7*s, color='C4', linestyle='--')
# 8) tab notation:
ax.tick_params(labelcolor='tab:orange')
plt.show()