代码之家  ›  专栏  ›  技术社区  ›  thosphor

分离一些子地块,但不分离其他子地块;Python,Matplotlib

  •  5
  • thosphor  · 技术社区  · 9 年前

    我用python(v 2.7.9)中的matplotlib(v 1.4.2)绘制了一个子图网格。我可以手动调整子图之间的间距,但我希望仅为一些子图设置不同的间距。我希望得到的最后一个图形是左边是一个2x5子块的网格,右边是一个由2x5个子块组成的网格,中间是一个空格。

    我用来控制图形布局的代码如下:

    figw, figh = 16.5, 15.0 #18.5, 15.0
    fig, axes = plt.subplots(ncols=4, nrows=5, sharex=False, 
                             sharey=True, figsize=(figw, figh))
    
    plt.subplots_adjust(hspace=0.0, wspace=0.2, left=1/figw,
                        right=1-2./figw, bottom=1/figh, top=1-2./figh)
    

    当我改变时 wspace 我得到了4列相等的间距。有办法改变吗 ws空间 在0和1列之间为0,x在1和2之间,0在2和3之间?

    谢谢

    1 回复  |  直到 9 年前
        1
  •  4
  •   deinonychusaur    9 年前

    是的,如果你使用 GridSpec 如文档中所述: Adjust GridSpec layout

    编辑:

    根据上面的示例修改的示例代码,说明它应该是什么样子:

    import matplotlib.pyplot as plt
    from matplotlib.gridspec import GridSpec
    
    f = plt.figure()
    
    plt.suptitle("Different vertical spacings")
    
    gs1 = GridSpec(5, 2)
    gs1.update(left=0.05, right=0.48, wspace=0)
    ax1 = plt.subplot(gs1[0,0])
    ax2 = plt.subplot(gs1[1, 0])
    #Add the other subplots for left hand side
    
    gs2 = GridSpec(5, 2)
    gs2.update(left=0.55, right=0.98, wspace=0)
    ax11 = plt.subplot(gs2[0,0])
    ax12 = plt.subplot(gs2[1,0])
    #Add the other subplots for right hand side
    
    plt.show()
    

    还没有能够测试它,所以希望它能工作。