Python绘制相关性热力图的方法与技巧
探索Python绘制相关性热力图的实用方法与技巧
在数据分析和可视化领域,相关性热力图是一种重要的工具。它能够直观地展示不同变量之间的关联程度,帮助我们更好地理解数据。Python作为一种强大的编程语言,提供了多种绘制相关性热力图的库和工具。接下来,我们将深入探讨Python绘制相关性热力图的方法与技巧。
Python,这门由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计的编程语言,因其功能强大、生态完善而广受喜爱。为了纪念那位英国电视喜剧Monty Python’s Flying Circus的编剧,它甚至被赋予了这样的名字。Python拥有众多第三方库,使得数据处理和可视化变得简单易懂。本文将引导您探索如何使用Python来绘制论文中的相关性热力图。这种图表能够清晰地展示多个因素之间的关联程度及其显著性。
2. 原理简述
在本次相关性热力图的绘制过程中,我们采用了Pearson相关系数来分析变量间的相关性。这一系数有效地衡量了变量X与Y之间的线性关联强度。
3. 代码实现
(1)导入所需库
首先,我们需要导入pandas、seaborn、matplotlib.pyplot、numpy以及scipy.stats中的pearsonr函数。同时,为了确保中文字体能够正常显示,我们还需要对matplotlib的配置进行适当调整。
(2)计算Pearson相关系数并绘制热力图
接下来,我们定义一个函数cm2inch,用于转换厘米单位为英寸单位,这是因为在matplotlib中,有时需要这种单位转换。然后,我们可以开始计算变量间的Pearson相关系数,并使用seaborn库来绘制热力图。
2.54
, 2.54
)
, dpi=100)
)
接下来,我们定义一个字典fontdict,用于设置字体样式和大小。在字典中,我们指定了字体的粗细、大小和名称。
然后,我们使用pandas库读取一个名为data.xlsx的Excel文件,并将其存储在变量df中。该文件应包含我们想要分析的数据。
之后,我们计算数据框df中变量间的相关性,使用corr()函数得到相关系数矩阵df_coor。
最后,我们创建一个新的图形窗口,并指定其大小和分辨率。在这里,我们使用之前定义的cm2inch()函数进行单位转换,确保图形尺寸符合要求。
接下来,我们设置图形窗口中的坐标轴ax1,并使用sns.heatmap()函数创建一个热力图im1。在热力图中,我们使用df_coor作为数据源,并设置相关参数以显示相关系数值。我们选择“RdBu”作为热力图的颜色映射方案,并确保方格设置为正方形,以便更好地展示数据。同时,我们还指定了线条宽度,以增强图形的清晰度。
接下来,我们设置热力图的最大值vmax,以确定颜色映射的范围。这个参数对于控制热力图的色彩饱和度和对比度至关重要。通过合理地设置vmax,我们可以确保图形中的颜色变化能够清晰地反映数据的差异。
)plt.show()
结果展示如下:
(3)构造mask以去除重复数据显示
首先,我们创建一个mask来隐藏重复的数据。使用NumPy的np.zeros_like()函数,我们生成一个与df_coor形状相同的零矩阵。接着,利用np.triu_indices_from()函数,我们获取上三角矩阵的索引,并将其设置为True,从而生成一个上三角mask。然后,我们对mask进行一系列操作,包括上下翻转、旋转和调整,以适应我们的需求。
在构造完mask后,我们使用Seaborn的sns.heatmap()函数来绘制热力图。我们设置annot=True以显示相关系数值,并选择"RdBu"作为颜色映射。同时,我们设置square=True以确保方格为正方形,以及linewidths=0.5来调整间隙大小。此外,我们还设置了vmax和vmin来限定颜色映射的范围,并使用fmt='.2f'来格式化显示两位小数。最后,我们通过ax1.tick_params()调整坐标轴的参数,并使用plt.show()来展示最终结果。
完成上述步骤后,我们得到了一个去除重复数据显示的热力图。
(4)计算Pearson相关系数及显著性
首先,我们初始化两个空列表rlist和plist,用于存储计算得到的相关系数和显著性值。接着,我们使用双重循环遍历df的每一列,对每一对列之间进行Pearson相关系数的计算。这里,我们利用SciPy的pearsonr()函数来获取相关系数r和显著性值p。计算完成后,我们将相关系数添加到rlist中,同时将显著性值添加到plist中。
随后,我们将rlist和plist转换为NumPy数组,并使用reshape()方法将其塑形为与df.columns.values相同形状的二维数组。这样,我们就得到了一个完整的相关系数矩阵和显著性矩阵。
最后,我们使用Matplotlib的plt.figure()函数来创建一个新的图形窗口,准备用于后续的数据可视化。
2020)
ax1 = plt.gca()
im1 = sns.heatmap(df_coor, annot=True, cmap="RdBu", square=True, mask=mask, linewidths=0.5)
设置线条宽度为0.5
.,# 调整热力图间隙
vmax=
4.设置热力图的最大值
在上述代码中,我们通过sns.heatmap()函数创建了一个热力图,并对其进行了多种设置,包括是否显示相关系数值、热力图的颜色、方格的形状、数据遮罩以及线条宽度等。接下来,我们想要进一步调整热力图的间隙,即设置vmax参数。然而,由于原文中的.,#设置间隙部分并不完整,且缺乏上下文,我无法直接推断出其完整意图和具体设置。但根据常规理解,我们可以推测这是指在创建热力图时,通过设置vmax参数来调整颜色的映射范围,从而控制热力图中颜色的分布和间隙。不过,需要注意的是,在实际使用时,我们需要根据具体的数据和需求来合理设置vmax的值。
设置热力图的最小值vmin=-1,
同时设置最小值和最大值,以控制颜色的映射范围
fmt='.2f',
5.将热力图绘制在指定的坐标轴上
ax=ax1,
设置坐标轴的刻度参数,确保刻度长度适中且清晰可见
ax1.tick_params(axis='both', length=)
在上述代码中,我们继续对热力图进行设置。通过vmin=-1,我们指定了热力图的最小值。同时,通过fmt='.2f',我们设置了数据的格式,确保在热力图中显示的数据具有两位小数。接下来,我们使用ax=ax1将热力图绘制在特定的坐标轴上。最后,通过ax1.tick_params()函数,我们调整了坐标轴的刻度参数,包括刻度的位置和长度,以确保刻度清晰且易于理解。这些设置将进一步优化热力图的显示效果,使其更符合我们的需求。
)xlist = ax1.get_xticks() # 获取x轴的刻度位置
ylist = ax1.get_yticks() # 获取y轴的刻度位置
接下来,我们可以使用这些刻度位置来进行进一步的操作,比如根据刻度位置对数据进行处理,或者根据刻度位置调整热力图的显示范围等。同时,我们还可以通过im1.collections来获取热力图中的多个集合,以便进行更复杂的操作和分析。这些步骤将进一步丰富我们的热力图分析和处理能力。
接下来,我们可以通过.colorbar属性来获取热力图的颜色条(colorbar)。颜色条是热力图中非常重要的一个部分,它展示了数据值与颜色之间的对应关系。一旦获取了颜色条,我们就可以利用其轴对象(ax)来调整刻度标签的大小,以便更清晰地展示数据和颜色之间的关系。这只是一个简单的示例,实际上,通过颜色条,我们可以进行更多高级的操作和分析,进一步增强热力图的可读性和实用性。
接下来,我们可以进一步探索.colorbar属性的其他功能。例如,我们可以设置颜色条的刻度标签的颜色,以更好地与背景或数据相区分。通过调整这些属性,我们可以更灵活地定制热力图的颜色条,从而更好地展示数据和颜色之间的关系。
接下来,我们可以继续深入探讨.colorbar属性的更多功能。比如,我们可以尝试调整颜色条刻度标签的颜色,使其与背景或数据更加区分开来。通过这些细致的调整,我们能更自如地设计热力图的颜色条,从而更清晰地展现数据与颜色之间的内在联系。
尝试调整颜色条刻度标签的颜色,以增强其与背景或数据的对比度。通过这种细微的调整,我们可以更灵活地设计热力图的颜色条,进而更清晰地揭示数据与颜色之间的内在关联。
.:ifpv <
尝试改变颜色条刻度标签的颜色,以提升其与背景或数据的对比度。这样的调整让热力图的颜色条设计更加灵活多变,从而更有效地揭示数据与颜色之间的内在联系。
尝试调整颜色条刻度标签的颜色,以增强其与背景或数据的对比度。这样的改动使得热力图的颜色条设计更加灵活多变,进而能够更清晰地揭示数据与颜色之间的内在关联。
在热力图中,我们可以通过调整颜色条刻度标签的颜色来增强其与背景或数据的对比度。这样的调整使得热力图的设计更加灵活,能够更清晰地揭示数据与颜色之间的内在联系。
在热力图中,我们可以通过调整颜色条刻度标签的颜色来增强其与背景或数据的对比度,从而使得热力图的设计更加灵活,能够更清晰地揭示数据与颜色之间的内在联系。此外,我们还可以结合其他设计元素,如标签位置和字体样式等,来进一步优化热力图的呈现效果。
.andpv >=
(此处可以添加具体内容或进行其他必要的调整)
.ax1.text(n + widthx, m + widthy,
, ha='center', color='k' if pv <
(此处可以添加具体内容或进行其他必要的调整)
)
在这个代码片段中,.ax1.text() 是一个用于在图表上添加文本的方法。其中,n + widthx 和 m + widthy 指定了文本的位置,ha='center' 表示文本水平居中,color='k' 设置了文本颜色为黑色。而 if pv < 是一个条件表达式,如果 pv 的值小于某个阈值,那么文本颜色将设置为黑色,否则不会执行这个条件语句。你可以根据需要调整这个阈值和其他参数,以达到你想要的效果。
在代码片段中,.ax1.text() 方法用于在图表上添加文本。其中,文本的位置由 n + widthx 和 m + widthy 确定,ha='center' 确保文本水平居中,而 color='k' 则设置了文本颜色为黑色。此外,还提供了一个条件表达式 if pv >= 0.001:,当 pv 的值大于或等于0.001时,会执行相应的代码块。在这个代码块中,我们使用 .ax1.text() 方法继续添加文本,并保持其位置和颜色属性不变。同时,我们还创建了一个名为 cbar 的变量,它引用了 im1.collections 中的某个对象。请注意,由于原始代码片段在此处被截断,因此我们无法确定 cbar 的具体用途和值。你可以根据实际需求进一步补充和完善这段代码。
].colorbar
cbar.ax.tick_params(labelsize=
在上述代码片段中,我们通过 .colorbar 访问了图表的色条,并使用 cbar.ax.tick_params(labelsize=10) 设置了色条上刻度标签的字体大小为10。这样,色条上的刻度标签将更加清晰可读。请注意,由于原始代码片段在此处被截断,因此我们无法看到完整的效果。你可以在实际应用中尝试这段代码,并观察色条刻度标签的变化。
20, labelcolor="black")
plt.savefig(r'.\相关性.png', dpi=600)
在上述代码中,我们设置了色条的刻度标签字体大小为20,并指定了标签颜色为黑色。接着,使用 plt.savefig 函数将图表保存为PNG格式的图片,文件名为“相关性.png”,并设置了分辨率为600dpi,以确保图片的清晰度。
接下来,我们可以根据热力图中不同方块的颜色、对应的相关系数的大小及显著性,来判断变量之间的相关性及显著性的大小。这样的结果展示方式,使得我们可以直观地看到各个变量之间的关系强度和显著性水平。
6. 查阅教程
在深入探讨热力图的应用之前,我们建议读者先参考一些相关的教程。这些教程将提供详细的步骤和解释,帮助您更好地理解如何使用热力图来分析变量之间的相关性。通过查阅教程,您将能够更自信地运用热力图,并将其作为探索数据关系的有力工具。
【Python基础教程】使用Python自动标记热力图中的显著性 - CSDN博客Python绘制相关系数热力图的方法 - CSDN博客获取数据及源码文章中的代码片段可以直接复制并运行,同时,回复公众号“PearsonCorr”,即可获取本文的数据及完整源码。
网址:Python绘制相关性热力图的方法与技巧 https://m.mxgxt.com/news/view/1419131
相关内容
Python中绘制场景热力图python绘制社交网络图
python中如何绘制社交网络图 – PingCode
Python科研绘图技巧:如何绘制雷达图
基于Python的社交网络分析与图论算法实践
Python基于network模块制作电影人物关系图
怎么用python实现粉丝地域分布热力图
4种更快更简单实现Python数据可视化的方法!
数据分析实战:如何制作热力图
社工技巧揭秘:如何绘制家庭结构图与生态图?