暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python气象数据处理与绘图: 热力图 heatmap

气海无涯 2021-09-27
4371



1、前言

     热力图是一种二维可视化的方法,它显示了不同颜色代表的特定现象的大小变化。总体来说是一种数据可视化技术,可以显示一组数据点在不同xy的设置下的特征。现在已经有很多高水平期刊开始更多的使用热力图,比如下图中每一个格点的值代表是相关系数,从色标的颜色来看颜色冷色调越深就代表相关系数的值越高,从而说明相关性最好。图中可以得到结论:CMIP5的各个模式间的数据在TXn都表现出比较好的相关性。



2、使用Seaborn来进行热力图绘制

这里我们随机创建一组数据,在实际做科研或者业务的时候这一组数据可以是相关系数、RMSE、趋势、最大值和最小值等各种数据。

第一步是导入库
1import seaborn as sns
2import numpy as np


第二步是创建随机数组8行12列

1data_ = np.random.randn(8,12)
2ax = sns.heatmap(data_)


默认图的效果

在上面的示例中,我们使用Numpy随机函数绘制了一个带有随机数的简单热力图,使用sns .heatmap()函数绘制了热图。在第一步中,我们导入了seaborn库,并将其命名为sns,将Numpy库命名为np。在下一步中,我们使用随机生成的8×12矩阵创建了数据集。在最后一步中,我们通过向heatmap函数传递所需的参数绘制了heatmap。


第三步,范围设置

1import seaborn as sns
2import numpy as np
3np.random.seed(0)
4data_ = np.random.randn(8,12)
5ax = sns.heatmap(data_, vmin=1, vmax=2)


上面热力图中的值分布在2到-2之间,然后我们的把色标值在1到2之间看一下变化。我们可以看到不同的颜色色调,其中较高的值是淡白色,范围较小的值是深红色。在下面的例子中,我们使用了一个vmin和vmax这2个参数,它允许我们设置热力图的显示范围。我们可以使用这个参数来过滤我们需要的值,可以我们在热力图内部设置最小和最大限制。我们已经将热图的最小限制设置为1,最大值设置为2。因此,热图只显示1和2的值,而所有其他不属于最小和最大限制的值在热力图中显示为上下2个极值。



第四步,色标设置
1import seaborn as sns
2import numpy as np
3np.random.seed(0)
4data_ = np.random.randn(8,12)
5ax = sns.heatmap(data_, cmap = 'Paired' )

在上面的图中,我们使用cmap这个参数,可以使用来自seaborn库的不同色标。


第五步,显示数值

1import seaborn as sns
2import numpy as np
3import matplotlib.pyplot as plt
4data_ = np.random.randn(8,12)
5plt.subplots(figsize=(15,10))
6ax = sns.heatmap(data_, cmap = 'Paired', annot = True, square = True)

在上面的例子中,我们已经使用matplotlib库绘制了适当大小的热图。我们将布局大小设置为(15,10),因为这个图的范围要显示数值所以为了看清楚要把布局调大一些。seaborn库中使用了一个名为annot的参数可以显示热力图中的值。


第六步,多种参数并用
1import seaborn as sns
2import numpy as np
3import matplotlib.pyplot as plt
4data_ = np.random.randn(8,12)
5plt.subplots(figsize=(15,10))
6ax = sns.heatmap(data_, cmap = 'Paired', annot = True, square = True,
7linewidths=1, linecolor = 'k')



在本例中,为了达到更好看的图形效果我们使用了多个参数来进行调试,如来自seaborn库的线宽和线颜色这两个参数,目的是可以用不同的颜色和不同粗细线来分隔每个方块,这样每个方块就可以清晰而整齐地显示出来。我们使用了线宽为1,线颜色为黑色(' k '),这样我们就可以清楚地看到分隔各个方块的黑线。


3、总结

本文使用seaborn库和Matplotlib库绘制了各种heatmap,并演示了heatmap函数的不同属性和参数。这篇文章只是热力图的较为简单的一个小教程,具体详细的信息大家可以去seaborn的官网详细测试一下。





有问题可以到QQ群里进行讨论,我们在那边等大家。

QQ群号:854684131


往期文章
2021年大气科学最新SCI影响因子公布

文章转载自气海无涯,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论