首页 文章

如何在不同的子图中绘制pcolor colorbar - matplotlib

提问于
浏览
11

我试图在不同的子图中分割我的图 . 我想要实现的是在不同的子图中为子图放置一个颜色条 . 现在我正在使用:

# first graph
axes = plt.subplot2grid((4, 2), (0, 0), rowspan=3)
pc = plt.pcolor(df1, cmap='jet')

# second graph
axes = plt.subplot2grid((4, 2), (3, 0))
plt.pcolor(df2, cmap='Greys')

# colorbar
plt.subplot2grid((4, 2), (0, 1), rowspan=3)
plt.colorbar(pc)

但结果如下(注意颜色条留下不需要的空图):
Wrong graph

如果没有左图,我该怎么办才能打印彩条?

谢谢

2 回答

  • 16

    colorbar() 接受 cax 关键字参数,该参数允许您指定将在其上绘制颜色条的 axes 对象 .

    在您的情况下,您可以将colorbar调用更改为以下内容:

    # colorbar
    axes = plt.subplot2grid((4, 2), (0, 1), rowspan=3)
    plt.colorbar(pc, cax=axes)
    

    这将占用 subplot2grid 给出的整个空间;您可以通过使主轴占据比色条轴更多的列,或通过明确设置 gridspec 来更合理地调整此值 . 例如,使用以下内容可能更容易调整您的数字:

    from matplotlib import gridspec
    gs = gridspec.GridSpec(2, 2, height_ratios=(3, 1), width_ratios=(9, 1))
    
    # first graph
    axes = plt.subplot(gs[0,0])
    pc = plt.pcolor(df1, cmap='jet')
    
    # second graph
    axes = plt.subplot(gs[1,0])
    plt.pcolor(df2, cmap='Greys')
    
    # colorbar
    axes = plt.subplot(gs[0,1])
    plt.colorbar(pc, cax=axes)
    

    然后你可以根据自己的喜好改变 height_ratioswidth_ratios .

  • 0

    我相信你应该使用 ax 而不是 cax .

    # colorbar
    axes = plt.subplot2grid((4, 2), (0, 1), rowspan=3)
    plt.colorbar(pc, ax=axes)
    

相关问题