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

使用Matplotlib绘制矩形补丁时尺寸不一致,如何修复?

修复Matplotlib矩形补丁尺寸不一致问题

我用Matplotlib生成矩形补丁,明明设置了固定尺寸参数,却有部分矩形大小不一致,怎么让所有矩形保持相同尺寸?

代码示例:

import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
from matplotlib.colors import Normalize
from matplotlib import cm

fig,ax = plt.subplots(1)

n=67
i=1
j=5
Factor=1000
for i in range(0, n):
    rect = mpl.patches.Rectangle((Factor+Factor*i, Factor+Factor*j), 10*n, 10*n, linewidth=1, edgecolor='black', facecolor='black')
    ax.add_patch(rect)
ax.set_xlim(left = 0, right = Factor*1.1*n)
ax.set_ylim(bottom = 0, top = Factor*1.1*n)
plt.show()

效果截图:
矩形尺寸不一致效果


解决方案

问题根源是坐标轴纵横比不相等,Matplotlib默认会根据图表尺寸自动调整坐标轴缩放比例,导致原本正方形的矩形被拉伸变形。

只需在设置坐标轴范围后添加一行代码,强制坐标轴保持等比例:

ax.set_aspect('equal')

修改后的完整代码:

import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

fig,ax = plt.subplots(1)

n=67
j=5
Factor=1000
for i in range(0, n):
    rect = mpl.patches.Rectangle((Factor+Factor*i, Factor+Factor*j), 10*n, 10*n, linewidth=1, edgecolor='black', facecolor='black')
    ax.add_patch(rect)
ax.set_xlim(left = 0, right = Factor*1.1*n)
ax.set_ylim(bottom = 0, top = Factor*1.1*n)
ax.set_aspect('equal')  # 强制坐标轴等比例
plt.show()

另外,原代码中开头定义的i=1会被循环变量覆盖,属于冗余代码,可直接删除,不影响功能且代码更整洁。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 03:23:21