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

如何基于X、Y、Z坐标绘制自定义坐标轴起始值的热力图

解决热力图坐标轴起始值问题

要让热力图的x轴从100开始、y轴从5开始,核心是利用imshow的extent参数指定坐标轴范围,同时配合origin参数调整y轴方向,具体步骤如下:

1. 将一维Z数据转为二维矩阵

你的循环是外层遍历x(100-119,共20个值)、内层遍历y(5-14,共10个值),因此需要把Z重塑为20行×10列的二维数组,对应每个x值下的所有y值:

Z_matrix = np.array(Z).reshape(20, 10)

2. 调用imshow时指定坐标轴参数

使用extent参数定义坐标轴的范围,格式为[x_min, x_max, y_min, y_max];同时设置origin='lower'让y轴从下到上递增(默认imshow的y轴是从上到下):

import matplotlib.pyplot as plt

plt.imshow(Z_matrix, extent=[100, 120, 5, 15], origin='lower', cmap='viridis')
plt.colorbar(label='Z值')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('自定义坐标轴的热力图')
plt.show()

完整可运行代码

import numpy as np
import matplotlib.pyplot as plt

X, Y, Z = [], [], []

for x in range(100, 120):
    for y in range(5, 15):
        X.append(x)
        Y.append(y)
        Z.append(np.random.random())

# 转换为二维矩阵
Z_matrix = np.array(Z).reshape(20, 10)

# 绘制热力图并设置坐标轴
plt.imshow(Z_matrix, extent=[100, 120, 5, 15], origin='lower', cmap='viridis')
plt.colorbar(label='Z值')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

关键参数说明

  • extent=[100, 120, 5, 15]:直接指定x轴范围为100到120,y轴范围为5到15,完全匹配你需要的矩形区域。
  • origin='lower':修正imshow默认的y轴方向(原点在左上角),让y轴从下到上递增,符合常规的坐标轴显示逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 01:27:19