如何在Jupyter Notebook生成各Expression的Spearman相关性热力图?
解决方法
要实现按Expression分组计算PR与Metrics的Spearman相关性,并生成带指定轴标题的热力图,可按以下步骤操作:
1. 导入依赖库
需要用到pandas处理数据,seaborn和matplotlib绘制热力图:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt
2. 分组计算相关性
按Expression分组,计算每组内PR与Metrics的Spearman相关系数:
# 分组计算每个Expression的PR与Metrics的Spearman相关 corr_results = df.groupby('Expression').apply( lambda group: group['PR'].corr(group['Metrics'], method='spearman') ).reset_index(name='Spearman_Correlation')
3. 生成热力图
将结果转换为适合热力图的格式,绘制并设置轴标题:
# 设置画布大小 plt.figure(figsize=(10, 7)) # 绘制热力图,annot参数显示相关系数数值,cmap设置配色 heatmap = sns.heatmap( corr_results.set_index('Expression'), annot=True, cmap='coolwarm', vmin=-1, vmax=1, fmt='.2f' ) # 设置轴标题和图表标题 heatmap.set_xlabel('Metrics') heatmap.set_ylabel('PR') plt.title('Spearman Correlation between PR & Metrics (by Expression)') # 显示图表 plt.show()
说明
- 分组计算时,
apply函数会遍历每个Expression分组,单独计算组内PR与Metrics的Spearman相关系数。 - 热力图的纵轴为
Expression类别,横轴设为Metrics,纵轴标签设为PR,完全匹配需求;单元格内的数值为对应分组的相关系数,配色范围设置为[-1,1](符合相关性系数的取值范围)。
内容的提问来源于stack exchange,提问作者Jun
相关产品推荐
相关产品推荐

