【问题标题】:How can I use matplotlib divider to split a subplot into more than two parts?如何使用 matplotlib 分隔器将子图拆分为两个以上的部分?
【发布时间】:2016-11-09 18:25:19
【问题描述】:

我使用 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 轴)。

我不知道如何第三次划分每个子​​图,所以我希望有人能建议我如何做到这一点?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    使用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()
    

    【讨论】:

    • 谢谢!事实证明,我的问题是我试图定义第二个分隔符(即,divider = make_axes_locatable(axShallow)),而我只需要使用原来的分隔符。一旦你发布了你的例子,这一点就变得很明显了。
    • 谢谢,这很有帮助!
    猜你喜欢
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2015-10-24
    相关资源
    最近更新 更多