I construct several Axes objects using gridspec. I want to create an object axs which is a compilation of these Axes objects, but which I can call as though axs were created using _, axs=plt.subplots(*args, **kwargs). I've tried making a manual list:
axs = [[ax1, ax2, ...], [ax3, ax4, ...]]
But this is a nested list and will have to be accessed using axs[m][n] rather than axs[m,n] like a subplots object would. What's the right approach?
CodePudding user response:
You could just create an array yourself, similar to the nested list:
axs = np.asarray([[ax1, ax2, ...], [ax3, ax4, ...]])
It's not completely clear to me how you create the axes. But when you have for example your gridspec object, calling the subplots method should give you a similar array compared to plt.subplots:
axs = gs.subplots()
It might also be worth looking at the relatively new plt.subplot_mosaic which allows you name the axes, basically storing them in a dict:
https://matplotlib.org/stable/tutorials/provisional/mosaic.html#
Both plt.subplots and plt.subplot_mosaic also directly support the width and height ratio keywords (previously via gridspec_kw), so for most cases you might be able to get what you want directly with plt.subplots.
