在matplotlib中制作一系列具有相同X和Y标度的子图的最佳方法是什么,但哪些是基于具有最极端数据的子图的最小/最大范围计算的?例如。如果您想绘制一系列直方图:
# my_data is a list of lists
for n, data in enumerate(my_data):
# data is to be histogram plotted
subplot(numplots, 1, n+1)
# make histogram
hist(data, bins=10)
然后,每个直方图将具有X轴和Y轴的不同范围/刻度。我希望它们完全相同,并根据绘制的直方图的最极端直方图限制进行设置。一个笨重的方法是记录每个绘图的X / Y轴的最小值/最大值,然后在绘制它们之后迭代每个子图,并在绘制它们之后迭代它们的轴,但必须有更好的方法在matplotlib。
这可以通过共享轴的一些变体来实现吗?
答案 0 :(得分:4)
Matplotlib/Pyplot: How to zoom subplots together?
http://matplotlib.org/examples/pylab_examples/shared_axis_demo.html
http://matplotlib.org/users/recipes.html
引用最后一个链接:
Fernando Perez提供了一个很好的顶级方法来创建 subplots()(注意结尾处的“s”)一下子,然后关闭 x和y共享整个群体。您可以解压轴 个别地:
# new style method 1; unpack the axes fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharex=True, sharey=True) ax1.plot(x)
或者将它们作为支持的numrows x numcolumns对象数组返回 numpy索引:
# new style method 2; use an axes array fig, axs = plt.subplots(2, 2, sharex=True, sharey=True) axs[0,0].plot(x)
如果你有matplotlib
的旧版本,则应使用以下方法(同样引用上一个链接)
轻松创建子图在早期版本的matplotlib中,如果你 想要使用pythonic API并创建一个图形实例 它创建了一个子图的网格,可能包含共享轴 相当数量的样板代码。例如
# old style fig = plt.figure() ax1 = fig.add_subplot(221) ax2 = fig.add_subplot(222, sharex=ax1, sharey=ax1) ax3 = fig.add_subplot(223, sharex=ax1, sharey=ax1) ax3 = fig.add_subplot(224, sharex=ax1, sharey=ax1)