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"]]
我想选择图形的宽度,同时仍然让 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"]]