给你的热图挑选一个合适的渐变色

时间:2022-07-23
本文章向大家介绍给你的热图挑选一个合适的渐变色,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一个合适的渐变色可以让我们的热图更加的美观,在matplotlib中内置了许多的渐变色,如何挑选合适的渐变色就诚成为了一个问题,这么多的渐变色,其分布有没有什么规律,挑选的时候有没有什么技巧呢?

答案是有的,matplotlib内置的渐变色可以分为以下4大类

1. sequential

2. diverging

3. cyclic

4. qualitative

每一大类都有各自的适用场景,下面来具体看下

1. sequential colormaps

sequential系列大多数都是在某种单一颜色的基础上,通过改变色彩的饱和度而形成的渐变色,所以适用于数值分布线性分布的情况,绝大多数情况下,该系列的渐变色可以作为首选。

在该系列中,又细分为以下3类

1. perceptually uniform sequential colormaps

2. sequential colormaps

3. sequential2 colormaps

第一类对应的渐变色图示如下

其中,viridis是matplotlib中热图的默认渐变色。第二类对应的渐变色图示如下

来源于ColorBrewer系列色彩中的单色。第三类对应的渐变色图示如下

2. diverging colormaps

该系列通常由两种颜色构成,从一种颜色过滤到另外一种颜色,先是饱和度组逐渐减小,再然后饱和度逐渐增大,具体的渐变色图示如下

该系列适合数据有中值和左右两个边界的情况,最经典的就是相关系数了,相关系数的取值范围为-1到1,-1到0是负相关,0到1是正相关,对于这样的数据,用该系列渐变色就特别的合适。

3. cycling colormaps

该系列的起点和终点是相同的颜色,中间可以混合多种颜色的渐变,具体的渐变色图示如下

对于围绕中心对称的数据,采用该系列比较合适。

4. qualitative colormaps

该系列适合数据是离散分布的情况,是有多个独立颜色组合而成的渐变色,具体的渐变色图示如下

除了以上4大类外,还有一类内置的,针对某种具体场景而开发的渐变色,称之为miscellaneouse colormaps, 具体的渐变色图示如下

内置的这一系列渐变色,已经能够满足绝大多数的需求了。当然,如果这些你都不满意,matplotlib也支持自定义渐变色,主要有以下两种方式

1. ListedColormap

2. LinearSegmentedColormap

第一种方式直接将单独的颜色合并构成一个颜色梯度,第二种方式则根据指定的颜色,通过颜色的渐变来形成颜色梯度,用法如下

from matplotlib.colors import ListedColormap, LinearSegmentedColormap
colors = ["darkorange", "gold", "lawngreen", "lightseagreen"]
cmap_list = ListedColormap(colors)
cmap1 = LinearSegmentedColormap.from_list("mycmap", colors)

用ListedColormap来绘制热图,代码如下

>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> np.random.seed(123456789)
>>> data = np.random.rand(25).reshape(5, 5)
>>> plt.imshow(data, cmap = cmap)
>>> plt.colorbar()

输出结果如下

用LinearSegmentedColormap来绘制热图,代码如下

>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> np.random.seed(123456789)
>>> data = np.random.rand(25).reshape(5, 5)
>>> plt.imshow(data, cmap = cmap1)
>>> plt.colorbar()

输出结果如下

matplotlib通过丰富的内置颜色梯度,以及灵活的自定义颜色梯度, 可以创建多种多样的热图,了解内置颜色梯度的适用场景,可以帮助我们快速的做出选择。