2016-07-21 26 views
0

我在matplotlib中使用AxesGrid創建一個疊加兩個imshow圖的圖,每個圖像colourmap並排放置一個獨立的顏色條。雖然我可以在this question/answer中看到使用pyplot.colorbar()會自動繪製第一個旁邊的第二個顏色條,但這似乎不適用於AxesGrid。Can AxesGrid可用於使用兩個單獨的顏色條來繪製兩個imshows(疊加層)?

import matplotlib.pyplot as plt 
    from mpl_toolkits.axes_grid1 import AxesGrid 

    fig = plt.figure(1, facecolor='white',figsize=(10,7.5)) 

    grid = AxesGrid(fig, 111, 
        nrows_ncols=(1, 1), 
        axes_pad=(0.45, 0.15), 
        label_mode="1", 
        share_all=True, 
        cbar_location="right", 
        cbar_mode="each", 
        cbar_size="7%", 
        cbar_pad="2%", 
        ) 

    im = grid[0].imshow(my_image, my_cmap) 
    cbar = grid.cbar_axes[0].colorbar(im) 

    im2 = grid[0].imshow(my_image_overlay, my_cmap2, alpha=0.5) 
    cbar2 = grid.cbar_axes[0].colorbar(im2) 

    plt.show() 

但是,這只是顯示第二個顏色條。 (可能覆蓋第一個)。我試圖重寫填充在cbar2:

cbar2 = grid.cbar_axes[0].colorbar(im2, pad=0.5) 

但這會導致與「得到了一個意想不到的關鍵字參數‘墊’」

有沒有辦法來抵消第二colourbar錯誤?

回答

0

我想你可能需要做兩軸爲colorbars和使用它們:

from mpl_toolkits.axes_grid1 import make_axes_locatable 
# create an axes on the right side of ax. The width of cax will be 5% 
# of ax and the padding between cax and ax will be fixed at 0.05 inch. 
divider = make_axes_locatable(ax) 
cax = divider.append_axes("right", size="5%", pad=0.05) 

「因爲你當前正在使用的相同的分配空間兩個。

相關問題