matplotlib.pyplot,保留图的纵横比

时间:2010-05-29 11:48:16

标签: python matplotlib

假设我们有一个多边形坐标为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的比例。)

4 个答案:

答案 0 :(得分:77)

使用有帮助:

plt.axis('equal')

答案 1 :(得分:18)

我确信,有一种方法可以直接将其设置为绘图命令的一部分,但我不记得这个技巧了。为此之后,您可以使用当前轴并将其宽高比设置为“set_aspect('equal')”。在您的示例中:

import matplotlib.pyplot as plt
plt.fill(*zip(*polygon))
plt.axes().set_aspect('equal', 'datalim')
plt.show()

我一直使用这个,它来自matplotlib网站上的例子。

答案 2 :(得分:9)

使用plt

'缩放'

最好的方法是使用is:

 plt.axis('scaled')

正如Saullo Castro所说。因为相同而你不能改变一个轴限制而不改变另一个,所以如果你想要适合所有非平方数字,你将有很多空白区域。

等于

enter image description here

缩放

enter image description here

'相等'未找到斧头

或者,您可以使用axes class

fig = plt.figure()
ax = figure.add_subplot(111)
ax.imshow(image)
ax.axes.set_aspect('equal')

答案 3 :(得分:0)

更好plt.axis('scaling'),如果您想使用xlim()ylim()修改轴,效果会更好。