如何基于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
相关产品推荐
相关产品推荐

