matplotlib.pyplot,保存图的纵横比

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

import matplotlib.pyplot as plt plt.fill(*zip(*polygon)) plt.show() 

默认情况下,它正在尝试调整宽高比,以便多边形(或任何其他图)适合窗口内部,并自动更改,以便它适合resize后。 在很多情况下,除非你试图在视觉上估计图像是否失真,否则这是很棒的。 如何修正宽高比严格为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('scaled') 

正如索洛·卡斯特罗所说。 因为在平等的情况下你不能改变一个轴的极限而不改变另一个轴的极限,所以如果你想要适应所有非尖锐的数字,你将有很大的空间。

等于

在这里输入图像说明

缩放

在这里输入图像说明

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