Plotly教程:如何用X、Y、Intensity三个列表绘制热力图
使用Plotly Express绘制热力图的方法
针对你给出的三组列表数据,我们可以通过以下步骤用Plotly Express生成对应的热力图:
导入依赖库
先导入数据处理和绘图所需的库:import pandas as pd import plotly.express as px将数据整理为DataFrame
把x、y、intensity三个列表组合成pandas DataFrame,方便后续格式转换:x = [1,1,2,4,5,6,7,8,9] y = [11,12,13,14,15,16,17,18,19] intensity = [21,22,23,24,25,26,27,28,29] df = pd.DataFrame({'x': x, 'y': y, 'intensity': intensity})转换为热力图所需的宽格式数据
Plotly Express的imshow函数需要二维网格结构的数据,因此我们需要把长格式的DataFrame透视成宽表——行对应y值,列对应x值,单元格填充对应的强度值:heatmap_data = df.pivot(index='y', columns='x', values='intensity')这一步会自动处理缺失的x-y组合(比如x=3对应所有y值),这些区域会显示为空值,绘图时会以留白或特定颜色标识。
绘制热力图
使用px.imshow生成热力图,并配置轴标签和标题:fig = px.imshow(heatmap_data, labels=dict(x="X坐标", y="Y坐标", color="强度值"), x=heatmap_data.columns, y=heatmap_data.index, title="X-Y坐标对应强度热力图") fig.show()
如果你希望基于原始离散点直接生成聚合式热力图,也可以用px.density_heatmap,这种方式适合数据量较大的场景:
fig = px.density_heatmap(df, x='x', y='y', z='intensity', labels=dict(x="X坐标", y="Y坐标", intensity="强度值"), title="X-Y坐标强度热力图") fig.show()
你的数据中x=1对应两个不同的y值(11和12),两种方法都能准确展示对应关系,具体选择取决于你想要的可视化效果。
内容的提问来源于stack exchange,提问作者Taylor
相关产品推荐
相关产品推荐

