我使用gridspec生成了包含4个子图(地球,印度,太平洋和大西洋)的图像:
from matplotlib import gridspec
fig = plt.figure()
gs = gridspec.GridSpec(2, 2)
然后每个子图使用一个分隔符,这样我就可以在浅海和深海中使用不同的垂直尺度:
from mpl_toolkits.axes_grid1 import make_axes_locatable
axMain = plt.subplot(gs[0])
plt.sca(axMain)
cf = axMain.contourf(...)
divider = make_axes_locatable(axMain)
axShallow = divider.append_axes("top", size="100%", pad=0.1, sharex=axMain)
axShallow.contourf(...)
我想在每个子图的顶部添加一个额外的折线图(即在另外两个图的顶部的第三个图),显示在整个2000m深度图上每个纬度的积分值(即第三个图)会分享它下面另外两个的x轴。)
我无法弄清楚如何第三次划分每个子图,所以我希望有人可以建议我怎么做?
答案 0 :(得分:4)
完全可以使用make_axes_locatable
多次分割轴。您只需要拨打divider.append_axes(..)
第二(或第三等)时间
这是一个例子。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec
from mpl_toolkits.axes_grid1 import make_axes_locatable
fig = plt.figure()
gs = gridspec.GridSpec(2, 2)
X, Y = np.meshgrid(np.linspace(0,100, num=101), np.linspace(0,100, num=101))
f = lambda x, y: np.sin(x/10.)+y/100.
axMain = plt.subplot(gs[0])
plt.sca(axMain)
cf = axMain.contourf(X[0:40,:], Y[0:40,:], f(X,Y)[0:40,:] , vmin=-1, vmax=2)
divider = make_axes_locatable(axMain)
axShallow = divider.append_axes("top", size="100%", pad=0.1, sharex=axMain)
axShallow.contourf(X[41:80,:], Y[41:80,:], f(X,Y)[41:80,:], vmin=-1, vmax=2)
axShallow.set_xticklabels([])
axShallow2 = divider.append_axes("top", size="50%", pad=0.1, sharex=axMain)
axShallow2.contourf(X[81:,:], Y[81:,:], f(X,Y)[81:,:], vmin=-1, vmax=2)
axShallow2.set_xticklabels([])
plt.show()