gpt4 book ai didi

python - matplotlib - 具有固定纵横比的子图

转载 作者:IT老高 更新时间:2023-10-28 20:41:10 24 4
gpt4 key购买 nike

我在绘制多个子图时遇到问题。我想将子图的物理纵横比设置为固定值。在我的示例中,我在横向 A4 图形上有 12 个子图(4 行和 3 列)。所有子图都很好地放置在整个图形上,并且所有子图的高度几乎等于宽度。

但是,如果我将图形的布局更改为纵向,则子图会垂直拉伸(stretch)。这正是不应该发生的事情。我希望子图的高度和宽度与风景图中相同。子图的纵横比是否有可能保持不变?

提前致谢,彼得

编辑:我找到了一种解决方法。但这仅适用于非对数轴...

aspectratio=1.0
ratio_default=(ax.get_xlim()[1]-ax.get_xlim()[0])/(ax.get_ylim()[1]-ax.get_ylim()[0])
ax.set_aspect(ratio_default*aspectratio)

最佳答案

实际上,你想要的很简单......你只需要确保 adjustable 在你的轴上设置为 'box' ,然后你为轴设置纵横比('auto' 以外的任何内容)。

您可以在创建子图时使用 adjustable kwarg 执行此操作。或者,您可以在创建它们之后调用 ax.set_adjustable('box') 或调用 ax.set_aspect(aspect,adjustable='box') (其中方面是 'equal' 或数字)。

现在,无论图形如何调整大小,子图都将保持相同的纵横比。

例如:

import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(2,1,1, adjustable='box', aspect=0.3)
ax2 = fig.add_subplot(2,1,2)

ax1.plot(range(10))
ax2.plot(range(10))

plt.show()

现在,比较顶部子图对调整大小的响应与底部子图的响应方式:


最初的情节 alt text

调整为垂直布局: alt text

调整为水平布局: alt text

关于python - matplotlib - 具有固定纵横比的子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4747051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com