给出一个现有尺寸的子图(例如1行x 9列),如何将其更改为新的尺寸(3行x 3列的子图)。
当使用不向用户展示此控件的绘图库时,就会出现此用例(例如Nilearn.plotting.plot_prob_atlas)。据我所知,最初无法创建具有适当子图尺寸的图形。
答案 0 :(得分:1)
对于不确定从nilearn.plotting布置子图的特定问题,我不确定是否有更好的方法。
通常,让我们考虑一下您有一个黑盒函数,该函数返回带有一些子图的图形。您将需要知道它创建的子图的数量。 然后,您可以创建一个新网格,并将图中的轴位置设置为该新网格的位置。
import matplotlib.pyplot as plt
import matplotlib.gridspec
import numpy as np
# blackbox function that returns a figure with 9 subplots in a row
def blackbox():
fig, axes = plt.subplots(ncols=9)
for ax in axes:
a = np.random.rand(10,10)
ax.pcolormesh(a, vmin=0, vmax=1)
return fig
fig = blackbox()
gs = matplotlib.gridspec.GridSpec(3,3)
for i, ax in enumerate(fig.axes):
ax.set_position(gs[i].get_position(fig))
plt.show()