我使用 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(...)
我想在每个子图的顶部添加一个额外的折线图(即在其他两个图之上的第三个图),显示图的整个 2000 米深度上每个纬度的综合值(即第三个图将共享其下方其他两个的 x 轴)。
我不知道如何第三次划分每个子图,所以我希望有人能建议我如何做?
请您参考如下方法:
使用 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()
