matplotlib中共享轴方形子图的新pythonic风格?

15 python numpy matplotlib scipy

相关:在matplotlib中绘制具有固定限制的自动缩放的子图

我想使用subplots新的紧凑样式制作一组全部尺寸相同的子图,如http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.subplots,并将它们设为正方形.

我试过了:

fig, axes = subplots(numplots, 1, sharex=True, sharey=True, adjustable='box', aspect='equal')
Run Code Online (Sandbox Code Playgroud)

但我发现这些关键字参数没有在subplots包装器中实现.这样做的方法是什么?

重申一下,目标只是拥有共享轴,以便所有数据都具有相同的比例,并使图形为正方形.

Joe*_*ton 19

只需使用adjustable='box-forced'而不是adjustable='box'.

正如@cronos所提到的,你可以使用subplot_kwkwarg 传递它(其他关键字参数subplots传递给Figurenot Axes,因此需要subplot_kw).

相反,我打算使用setp,基本上就是这样for item in sequence: item.set(**kwargs).(所有matplotlib艺术家都有一个set类似于matlab的方法set.)

哪一个是"更好"的方法将取决于你正在做什么.很多人会认为这setp是非常"非语言",但我没有看到它的问题.

作为一个简单的例子:

import matplotlib.pyplot as plt

fig, axes = plt.subplots(ncols=3, sharex=True, sharey=True)
plt.setp(axes.flat, aspect=1.0, adjustable='box-forced')

axes[0].plot(range(50))

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我忘记了目前两种不同可调节盒子样式的原因.我记得我第一次遇到它时发现它真的很混乱,我挖掘了代码并且有一些明显的原因......但是我记不起那时的原因是什么了.