假设我们有一个多边形坐标为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的比例。)
答案 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)
最好的方法是使用is:
plt.axis('scaled')
正如Saullo Castro所说。因为相同而你不能改变一个轴限制而不改变另一个,所以如果你想要适合所有非平方数字,你将有很多空白区域。
或者,您可以使用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()
修改轴,效果会更好。