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

如何强制设置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)
      
  • 如果需要保证单元格比例不受坐标轴数据范围影响,可以添加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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:39:01