使用Seaborn绘制热力图的数据可视化指南

图片[1]-使用Seaborn绘制热力图的数据可视化指南-山海云端论坛

引言

热力图的概念十分简单:用颜色来表示数字。如今,这种可视化风格已经从最初的颜色编码表格演变成了更加复杂的形式。热力图被广泛应用于地理空间数据分析,用于描述变量的密度、强度、模式可视化、方差甚至异常可视化等。

鉴于热力图的广泛应用,本文将介绍如何使用Seaborn库来创建热力图。

举个栗子

首先,我们导入Pandas和Numpy库,这两个库可以帮助我们进行数据预处理。

<code>import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import numpy as np</code>

为了举例,我们采用了一个包含80种不同谷物样本的数据集,让我们先来看看它们的成分。数据集的样本如下所示:

图片[2]-使用Seaborn绘制热力图的数据可视化指南-山海云端论坛

上图中,第一行为表头,接着对于每一行来说,第一列为谷物的名称,后面第4列到第16列为每种谷物含有的13种主要组成成分的数值。

数据预处理

接下来,我们将分析每种谷物13种不同成分之间的相关性。我们可以使用Pandas库中的corr()函数来计算相关系数。

<code># 读取数据集 df = pd.read_csv('data/cereal.csv') # 获取相关系数 df_corr = df.corr() # 13X13</code>

接下来,我们移除相关性不大的最后几个成分:

<code># 与相关性不大的字段 fields = ['rating', 'shelf', 'cups', 'weight'] # 删除行 df_corr.drop(fields, inplace=True) # 9X13 # 删除列 df_corr.drop(fields, axis=1, inplace=True) # 9X9</code>

绘制热力图

幸运的是,我们可以使用Mask矩阵来生成Seaborn中的热力图。首先,我们来生成Mask矩阵:

<code>np.ones_like(df_corr, dtype=np.bool)</code>

然后,我们得到上三角矩阵,使用Numpy中的np.triu函数可以返回上三角矩阵对应的Mask:

<code>mask = np.triu(np.ones_like(df_corr, dtype=np.bool))</code>

最后,我们画出热力图:

<code>sns.heatmap(df_corr, mask=mask) plt.show()</code>

显示数值

观察上图,我们使用Mask生成了热力图,但图像中仍有两个空的单元格。我们可以在绘制的时候将其进行过滤。即分别将和上述空单元格对应的mask和df_corr过滤掉:

<code># 调整mask和df mask = mask[1:, :-1] corr = df_corr.iloc[1:, :-1].copy()</code>

同时,我们可以设置heatmap相应的参数,让其显示对应的数值:

<code>sns.heatmap(corr, mask=mask, annot=True, fmt=".2f", cmap='Blues', vmin=-1, vmax=1, cbar_kws={"shrink": .8}) plt.yticks(rotation=0) plt.show()</code>

调色板优化

考虑到相关系数的范围为-1到1,颜色变化有两个方向。由中间向两侧发散的调色板相比连续的调色板视觉效果更好。在Seaborn库中,我们可以使用diverging_palette函数来创建发散调色板:

<code>cmap = sns.diverging_palette(0, 230, 90, 60, as_cmap=True)</code>

最后但同样重要的一点是,不要忘记为我们的图像设置标题:

<code>plt.title('CORRELATION MATRIX\nSAMPLED CEREALS COMPOSITION\n', loc='left', fontsize=18)</code>

总结

本文介绍了如何使用Seaborn对相关矩阵使用热力图进行数据可视化,并不断改进提升可视化效果。 Seaborn库为数据科学家和分析师提供了强大的工具,帮助他们更好地理解数据和相关性。 通过热力图,我们可以直观地看到变量之间的相关性,从而更好地指导后续的数据分析和决策过程。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容