You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Plotly绘制以DataFrame索引为X轴、列名为Y轴的热力图?

问题描述

给定如下DataFrame:

import pandas as pd
import plotly.express as px

df = pd.DataFrame({"A":[1,2,3],"B":[4,5,6]})
print(df)

输出结果:

A  B
0  1  4
1  2  5
2  3  6

使用px.density_heatmap(df)生成的热力图不符合需求,实际需要将索引(0,1,2)作为X轴,列名(A,B)作为Y轴,单元格数值用颜色表示的热力图。

解决方案

方法一:使用px.imshow(推荐)

px.imshow专为矩阵型热力图设计,直接匹配你的需求:

import pandas as pd
import plotly.express as px

df = pd.DataFrame({"A":[1,2,3],"B":[4,5,6]})

fig = px.imshow(
    df,
    x=df.columns,
    y=df.index,
    labels=dict(x="列名", y="索引", color="单元格数值"),
    text_auto=True  # 可选:在单元格内显示对应数值
)
fig.show()
  • 该方法默认将行索引作为Y轴、列名作为X轴,无需额外转换数据;
  • text_auto=True可在热力块上显示数值,提升可读性;
  • 可通过color_continuous_scale参数自定义配色方案。

方法二:转换为长格式后使用px.density_heatmap

如果坚持使用px.density_heatmap,需先将数据转为长格式:

import pandas as pd
import plotly.express as px

df = pd.DataFrame({"A":[1,2,3],"B":[4,5,6]})
# 转换为长格式
df_melted = df.reset_index().melt(id_vars="index", var_name="列名", value_name="数值")

fig = px.density_heatmap(
    df_melted,
    x="index",
    y="列名",
    z="数值",
    labels=dict(x="索引", y="列名", z="单元格数值"),
    text_auto=True
)
fig.show()

内容的提问来源于stack exchange,提问作者Oblomov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 19:05:07