如何将pandas DataFrame绘制的seaborn热力图旋转270度
seaborn热力图270度旋转实现方法
场景说明
- 使用pandas读取256×256规模的纯数值数据集,文件为制表符分隔格式,无行列标签,读取代码如下:
import pandas as pd import seaborn as sns df_Data = pd.read_csv(datapath, sep="\t", header=None)
- 测试数据结构:左上角区域值为100,其余区域值为0,结构示例:
100 100 100 100 100 100 100 100 0 0 0 0 0 ..... 0 100 100 100 100 100 100 100 100 0 0 0 0 0 ..... 0 100 100 100 100 100 100 100 100 0 0 0 0 0 ..... 0 100 100 100 100 100 100 100 100 0 0 0 0 0 ..... 0 100 100 100 100 100 100 100 100 0 0 0 0 0 ..... 0 0 . ... ... ... ... ... ... ... ... ... ... ... 0 ... ... ... ... ... ... ... ... ... ... ... ... . 0 . ... ... ... ... ... ... ... ... ... ... ... 0
- 初始绘图代码:
sns.heatmap(df_IntegratedData)
- 初始效果:数值为100的高亮块位于热力图左上角:

- 目标效果:将热力图旋转270度,使高亮块移动到左下角,坐标轴标签调整不属于核心需求,目标效果参考:

最优实现方案
不需要调整画布旋转参数,直接对输入数据做矩阵变换即可实现,无额外性能开销,也不会出现文字倒置、标签错位问题。
270度旋转的矩阵等价操作是:先对矩阵转置,再沿垂直方向上下翻转,直接在传入heatmap时完成变换即可:
sns.heatmap(df_IntegratedData.T.iloc[::-1])
代码逻辑说明
.T:pandas原生转置方法,等价于将矩阵顺时针旋转90度.iloc[::-1]:按行索引倒序取值,实现矩阵上下翻转,和转置操作叠加后刚好实现270度顺时针旋转效果- 该操作不会修改原始DataFrame的数据,若需要复用旋转后的数据,可以提前赋值给新变量:
df_rotated_270 = df_IntegratedData.T.iloc[::-1] sns.heatmap(df_rotated_270)
内容的提问来源于stack exchange,提问作者Beth Long
相关产品推荐
相关产品推荐

