相关:plotting autoscaled subplots with fixed limits in 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')
但我发现这些关键字参数并没有在subplots
包装器中实现。有什么办法吗?
重申一下,我们的目标只是让共享轴,这样所有数据都在同一比例尺上,并且绘图是正方形的。
最佳答案
只需使用 adjustable='box-forced'
而不是 adjustable='box'
。
正如@cronos 提到的,您可以使用 subplot_kw
kwarg 传递它(subplots
的附加关键字参数传递给 Figure
不是 Axes
,因此需要 subplot_kw
)。
相反,我将使用 setp
,它基本上只执行 for item in sequence: item.set(**kwargs)
。 (所有 matplotlib 艺术家都有一个 set
方法,可以类似于 matlab 的 set
使用。)
哪一个是“更好”的方法将取决于您在做什么。很多人会争辩说 setp
非常“非 Pythonic”,但我看不出它有什么问题。
举个简单的例子:
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()
我现在忘记了两种不同的可调框样式的原因。我记得我第一次遇到它时真的很困惑,我仔细研究了代码,发现其中有一些明显的原因……不过我现在不记得那个原因是什么了。
关于python - matplotlib 中共享轴方形子图的新 pythonic 样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13629994/