如何强制设置pcolormesh生成的热图单元格为矩形
你代码中使用的ax.set_aspect("auto")会让坐标轴自适应画布比例,导致单元格宽高被拉伸,无法保证为固定比例的矩形,按以下方法修改即可:
解决方案
- 调整
set_aspect的参数为固定数值,该数值表示Y轴单位长度与X轴单位长度的比值:- 想要正方形单元格(特殊矩形),直接设为1即可:
# 替换原来的ax.set_aspect("auto") ax.set_aspect(1) - 想要自定义宽高比的矩形,按需调整数值即可。比如想要单元格宽度是高度的2倍,设置为0.5即可:
ax.set_aspect(0.5)
- 想要正方形单元格(特殊矩形),直接设为1即可:
- 如果需要保证单元格比例不受坐标轴数据范围影响,可以添加
adjustable='box'参数,让画布边界自动适配你设定的比例:ax.set_aspect(1, adjustable='box')
修改后完整参考代码
import matplotlib.pyplot as plt from matplotlib import colors import numpy as np # 这里替换为你自己的grid数据 grid = np.random.randint(0, 11, size=(10, 10)) heatmap = plt.pcolormesh( grid, edgecolors="k", cmap=colors.ListedColormap( [ "white", "red", "blue", "green", "orange", "black", "purple", "yellow", "brown", "violet", "gray", ] ), linewidth=2, ) ax = plt.gca() # 替换原来的auto为你需要的比例 ax.set_aspect(1) plt.show()
内容的提问来源于stack exchange,提问作者YNWA
相关产品推荐
相关产品推荐

