一文搞懂matplotlib中的颜色设置

时间:2022-07-22
本文章向大家介绍一文搞懂matplotlib中的颜色设置,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在matplotlib中,颜色设置有以下多种方式

1. 常用颜色的字母表示及缩写

最常用的颜色表示方法,有以下几种常用颜色

1. red,表示红色, 简写为r

2. green, 表示绿色,简写为g

3. blue,表示蓝色,简写为b

4. yellow,表示黄色,简写为y

5. cyan,表示蓝绿色,简写为c

6. magenta,表示粉紫色,简写为m

7. black,表示黑色,简写为k

8. white,表示白色,简写为w

上述颜色和缩写的图例如下

2. T10调色盘

在matplotlib中,默认的颜色盘通过参数rcParams["axes.prop_cycle"]参数来指定, 初始的调色盘就是T10调色盘。

T10调色盘适用于离散分类,其颜色名称以tab:为前缀,具体的包含了以下10种颜色

1. tab:blue

2. tab:orange

3. tab:green

4. tab:red

5. tab:purple

6. tab:brown

7. tab:pink

8. tab:gray

9. tab:olive

10. tab:cyan

图例如下

在matplotlib中,默认就是通过这个T10调色盘来个不同的label上色的,代码如下

plt.pie(x=[1,1,1,1,1,1,1,1,1,1])

输出结果如下

3. CN式写法

CN式写法以字母C为前缀,后面加从0开始的数字索引,其索引的对象为rcParams["axes.prop_cycle"]指定的调色盘,所以默认情况下,下列写法和T10调色盘的输出完全一致

plt.pie(x=[1,1,1,1,1,1,1,1,1,1],colors=['C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9'])

输出结果如下

当我们修改调色盘时,CN式写法对应的颜色也会发生变化,代码如下

import matplotlib as mpl
from cycler import cycler
mpl.rcParams['axes.prop_cycle'] = cycler(color=['r', 'g', 'b', 'y', 'c', 'm', 'k'])
plt.pie(x=[1,1,1,1,1,1,1], colors=['C0','C1', 'C2', 'C3', 'C4', 'C5', 'C6'])

输出结果如下

4. xkcd颜色名称

xkcd调色盘是通过对上万名参与者进行调查而总结出的954种最常用的颜色,官方网站如下

https://xkcd.com/color/rgb/

在matplotlib中,通过xkcd:前缀加对应的颜色名称进行使用,而且是不区分大小写的,代码如下

plt.pie(x=[1,2,3,4], colors=['xkcd:blue','xkcd:orange','xkcd:green','xkcd:red'])

输出结果如下

5. X11/CSS4颜色名称

X11系列颜色通过名称来对应具体的颜色编码,后来的CSS颜色代码也是在其基础上发展而来,部分颜色示意如下

在matplotlib中,X11/CSS4相关的颜色名称和十六进制编码存储在一个字典中,可以通过以下方式进行查看

import matplotlib._color_data as mcd
for key in mcd.CSS4_COLORS:
    print('{}: {}'.format(key, mcd.CSS4_COLORS[key]))

部分结果如下

'aliceblue': '#F0F8FF',
'antiquewhite': '#FAEBD7',
'aqua': '#00FFFF',
'aquamarine': '#7FFFD4',
'azure': '#F0FFFF',
'beige': '#F5F5DC',
'bisque': '#FFE4C4',
'black': '#000000',
'blanchedalmond': '#FFEBCD',
'blue': '#0000FF',
'blueviolet': '#8A2BE2',

通过颜色名称来使用X11/CSS4颜,用法如下

plt.pie(x=[1,2,3,4], colors=['aliceblue','antiquewhite','aqua','aquamarine'])

输出结果如下

6. 十六进制颜色代码

十六进制的颜色代码可以精确的指定颜色,在matplotlib中当然也支持,用法如下

plt.pie(x=[1,2,3,4], colors=['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728'])

输出结果如下

7. RGB/RGBA元组

所有的颜色都是有RGB三原色构成,在matplotlib中,可以通过一个元组来表示表示red, green, blue三原色的比例,以及一个可选的alpha值来表示透明度,取值范围都是0到1,用法如下

plt.pie(x=[1,2,3,4], colors=[(0.1, 0.2, 0.5),(0.1, 0.3, 0.5),(0.1, 0.4, 0.5),(0.1, 0.5, 0.5)])

输出结果如下

8. 灰度颜色

在matplotlib中,通过0到1之间的浮点数来对应灰度梯度,在使用时,为了有效区分,需要通过引号将其装换为字符,用法如下

plt.pie(x=[1,2,3,4], colors=['0','0.25', '0.5', '0.75'])

输出结果如下

通过上述几种方式,可以灵活地指定我们需要的颜色。

·end·