Python matplotlib.pyplot,保留绘图的纵横比

Python matplotlib.pyplot,保留绘图的纵横比,python,matplotlib,Python,Matplotlib,假设多边形坐标为polygon=[(x1,y1),(x2,y2),…],下面的代码显示该多边形: import matplotlib.pyplot as plt plt.fill(*zip(*polygon)) plt.show() 默认情况下,它尝试调整纵横比,使多边形(或任何其他图表)适合窗口内,并自动更改它,使其即使在调整大小后也适合。这在很多情况下都是很好的,除非你试图通过视觉来判断图像是否失真。如何将纵横比严格固定为1:1 (不确定这里的“纵横比”是否正确,如果不正确,我需要X轴和Y

假设多边形坐标为polygon=[(x1,y1),(x2,y2),…],下面的代码显示该多边形:

import matplotlib.pyplot as plt
plt.fill(*zip(*polygon))
plt.show()
默认情况下,它尝试调整纵横比,使多边形(或任何其他图表)适合窗口内,并自动更改它,使其即使在调整大小后也适合。这在很多情况下都是很好的,除非你试图通过视觉来判断图像是否失真。如何将纵横比严格固定为1:1

(不确定这里的“纵横比”是否正确,如果不正确,我需要X轴和Y轴都具有1:1的比例,以便X轴和Y轴上的(0,1)占据完全相同的屏幕空间。无论如何调整窗口大小,我都需要保持1:1。)

这是否有助于使用:

plt.axis('equal')

我确信,有一种方法可以直接将其设置为绘图命令的一部分,但我不记得有什么诀窍。要在事后执行此操作,可以使用当前轴并使用“set_aspect('equal')”设置其纵横比。在您的示例中:

import matplotlib.pyplot as plt
plt.fill(*zip(*polygon))
plt.axes().set_aspect('equal', 'datalim')
plt.show()
我一直在使用它,它来自matplotlib网站上的示例。

更好的
plt.axis(“缩放”)
,如果您想使用
xlim()
ylim()
修改轴,使用plt“缩放”效果会更好 最好是使用:

 plt.axis('scaled')
正如索洛·卡斯特罗所说。因为使用equal时,如果不更改另一个轴的限制,则无法更改一个轴的限制,因此如果要拟合所有非平方图形,则将有大量空白

相等的

缩放

使用ax的“相等” 或者,您可以使用


还可以尝试
pylab.gca()。设置方面('equal','box')
'框“调整两个轴限制(例如轮廓图周围无空白)。”datalim'仅调整一个限制(仅显示x或y空格)。还有一个“框强制”用于特殊共享轴。您也可以使用
plt.axis(“缩放”)
我不明白为什么,但与
缩放设置相反,当我在
轴(“相等”)之后更改
ylim
xlim
时,刻度大小变得不相等,甚至我的散点图中的一些数据也被删掉了……2010年5月29日提出的这个问题的可能重复,是2013年8月1日提出的问题的可能重复,而不是相反。它可能在未来(现在是过去)已经有了答案。Wtf,rly…我想它的意思是说
“缩放”
。这已经在其他答案中提到了。这正是我想要的。我认为这个答案绝对值得更多的投票。
fig = plt.figure()
ax = figure.add_subplot(111)
ax.imshow(image)
ax.axes.set_aspect('equal')