2017-07-18 8 views
1

をsubplot2gridするカラーバーを追加しますが、何らかの理由で、私はそれを動作させることはできません:カラーバーラインのどのようにこれは本当に簡単であるべき

def plot_image(images, heatmaps): 
    plt.figure(0) 
    for i, (image, map) in enumerate(zip(images, heatmaps)): 
     a = plt.subplot2grid((2,4), (0,i)) 
     a.imshow(image) 
     a = plt.subplot2grid((2,4), (1,i)) 
     a.imshow(map) 
     plt.colorbar(a, fraction=0.046, pad=0.04) 
    plt.show() 

値はhereから取られているが、私は取得しています:

AttributeError: 'AxesSubplot' object has no attribute 'autoscale_None'

Iは画像の4グリッドによって2をプロットしていて、私は次のグリッドの右端の画像におそらく各画像から右に垂直カラーバーを表示するか、したいです。

答えて

1

plt.colorbarは、軸ではなく画像を最初の引数(一般的にScalarMappable)として想定しています。

plt.colorbar(im, ax=ax, ...) 

は、したがって、あなたの例では、次のようになります。

import numpy as np 
import matplotlib.pyplot as plt 

def plot_image(images, heatmaps): 
    fig = plt.figure(0) 
    for i, (image, map) in enumerate(zip(images, heatmaps)): 
     ax = plt.subplot2grid((2,4), (0,i)) 
     im = ax.imshow(image) 
     ax2 = plt.subplot2grid((2,4), (1,i)) 
     im2 = ax2.imshow(map) 
     fig.colorbar(im, ax=ax, fraction=0.046, pad=0.04) 
     fig.colorbar(im2, ax=ax2, fraction=0.046, pad=0.04) 
    plt.show() 

a = [np.random.rand(5,5) for i in range(4)] 
b = [np.random.rand(5,5) for i in range(4)] 
plot_image(a,b) 

enter image description here

関連する問題