Matplotlib предоставляет несколько способов борьбы с преднамеренным размещением участков на одной странице;я думаю, что лучшим является gridspec , который, я считаю, впервые появился в версии 1.0.Между прочим, два других: (i) непосредственно индексируют субплот и (ii) новый ImageGrid набор инструментов).
GridSpec работает как упаковщики на основе сетки в GUI-инструментах, используемых для размещения виджетов в родительском фрейме, поэтому, по крайней мере, по этой причине он кажется самым простым в использовании и наиболее настраиваемым из трех методов размещения.
import numpy as NP
import matplotlib.pyplot as PLT
import matplotlib.gridspec as gridspec
import matplotlib.cm as CM
V = 10 * NP.random.rand(10, 10) # some data to plot
fig = PLT.figure(1, (5., 5.)) # create the top-level container
gs = gridspec.GridSpec(4, 4) # create a GridSpec object
# for the arguments to subplot that are identical across all four subplots,
# to avoid keying them in four times, put them in a dict
# and let subplot unpack them
kx = dict(frameon = False, xticks = [], yticks = [])
ax1 = PLT.subplot(gs[0, 0], **kx)
ax3 = PLT.subplot(gs[2, 0], **kx)
ax2 = PLT.subplot(gs[1, 1], **kx)
ax4 = PLT.subplot(gs[3, 1], **kx)
for itm in [ax1, ax2, ax3, ax4] :
itm.imshow(V, cmap=CM.jet, interpolation='nearest')
PLT.show()
Помимо простой организации четырех графиков в конфигурации «шахматной доски» (согласно вашему Вопросу), я не пытался настроить эту конфигурацию, но это легко сделать.Например,
# to change the space between the cells that hold the plots:
gs1.update(left=.1, right=,1, wspace=.1, hspace=.1)
# to create a grid comprised of varying cell sizes:
gs = gridspec.GridSpec(4, 4, width_ratios=[1, 2], height_ratios=[4, 1])