matplotlib:在不改变纵横比的情况下设置图形的宽度或高度

matplotlib: Set width or height of figure without changing aspect ratio

我想选择图形的宽度,同时仍然让 matplotlib 选择它认为合适的纵横比。我知道的每一种改变图形大小的方法都需要一个 (width, height) 元组,它强制一定的纵横比。有没有办法只指定宽度(或只指定高度)并允许 matplotlib 选择合适的纵横比?

据我了解,matplotlib 本身没有 "choose" 合适的纵横比。相反,轴会自动填充到图窗的大小。因此,通过使用 (width, height) 元组设置图形大小,您还可以设置它的纵横比(同时考虑图形中子图轴的数量)。也许坐标轴方法 set_aspect 会对您有所帮助?它允许您明确设置图中坐标区对象的纵横比。

例如,以下将生成一个 4"x2" 图形,但其中的轴将具有 1:1 纵横比:

  fig, ax = plt.subplots(figsize=(4,2))
  ax.set_aspect('equal')

set_aspect 方法也可以取 height:width 数字。您可以使用它来强制其中的轴保持特定的纵横比,而不管您选择的图形尺寸如何。

编辑:This post 也可能有帮助。

我了解到 matplotlib 实际上只是对所有图形使用恒定的默认图形大小。这个值存储在rcParams中,可以用

查看
plt.rcParams["figure.figsize"]

这个returns[6.0, 4.0]对我来说。

如果你想保持相同的宽高比(即"aspect ratio"),你可以,例如,将它加倍:

plt.rcParams["figure.figsize"] = [2 * i for i in plt.rcParams["figure.figsize"]]