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

如何基于MultiIndex确定的数值范围绘制位置准确的热力图

问题原因

你用imshow出错的核心原因是imshow默认将输入的二维数组视为均匀等距的网格,每个网格单元的宽高完全一致。但你的数据里每行对应的y轴区间是不等宽的(示例里第一行y区间高度0.5,第二行高度1.5),imshow没法识别这种非均匀的区间划分,自然会出现色块大小错误、位置偏移的问题。


解决方法

改用matplotlib.pyplot.pcolormesh,这个接口支持自定义非均匀的坐标轴边界,可以完美适配你的数据结构。

实现代码

import numpy as np
import matplotlib.pyplot as plt

# 提取y轴边界:把前两列的所有边界值去重排序,刚好对应每个行的上下边界
y_bounds = np.sort(np.unique(df.iloc[:, [0,1]].values.flatten()))
# 提取x轴边界:如果你的x列需要映射到1-80的范围,按列数生成等距边界即可
x_col_count = len(df.columns) - 2
x_bounds = np.linspace(1, 80, x_col_count + 1)
# 提取需要绘制的数值矩阵
plot_data = df.iloc[:, 2:].values

# 绘图
plt.axis([1, 80, 14, 32])
plt.pcolormesh(
    x_bounds, y_bounds, plot_data,
    cmap='rainbow', vmin=2.0, vmax=6.3
)
plt.gca().set_aspect(100/8)
plt.show()

如果你的x轴也不是等距的,只需要把x_bounds换成你自己的x区间边界数组即可,pcolormesh支持x、y双维度的非均匀网格。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:15:00