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

如何强制Matplotlib缩放图像?解决长条形图像显示挤压问题

解决Python Notebook中长条形图像显示挤压的问题

嘿,我完全懂你这个困扰——这种高度远大于宽度的长条形图像,默认设置下确实会被挤得不成样子,哪怕调大figsize也没用。咱们来搞定它:

问题根源

你设置的figsize=(20,20)是正方形画布,但你的图像是[714,180](高度714,宽度180),而plt.imshow()默认的aspect='equal'参数会强制每个像素的宽高比例一致,这就导致图像在正方形画布上被横向压缩,看起来特别窄。

两种有效解决方案

1. 匹配图像比例设置画布尺寸 + 自适应像素比例

先计算图像的真实宽高比(宽度/高度),然后按照这个比例设置figsize,再把imshow的aspect设为'auto'让图像自适应画布:

evidence = hough_forests(edges)
# 计算图像宽高比:列数(宽度)/ 行数(高度)
aspect_ratio = evidence.shape[1] / evidence.shape[0]
# 按比例设置画布,比如固定高度为20,宽度自动匹配比例
fig = plt.figure(figsize=(20 * aspect_ratio, 20))
# 设置aspect为auto,让图像自适应画布比例
plt.imshow(evidence, cmap="gray", aspect='auto')
plt.show()

2. 固定像素比例,让画布自动适配

如果你想保持每个像素的真实比例,只需要把aspect设为图像的宽高比,画布尺寸可以按需调整:

evidence = hough_forests(edges)
aspect_ratio = evidence.shape[1] / evidence.shape[0]
fig = plt.figure(figsize=(8, 30))  # 这里可以根据显示需求调整画布大小
plt.imshow(evidence, cmap="gray", aspect=aspect_ratio)
plt.show()

额外小技巧

如果已经创建了画布,也可以通过修改当前坐标轴的比例来调整:

plt.imshow(evidence, cmap="gray")
plt.gca().set_aspect(aspect_ratio)  # gca()获取当前坐标轴对象
plt.show()

这样调整后,你的长条形图像就能正常显示,不会再被挤压啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:20:36