2016-10-24 12 views
0

カラーマップを表示したいパッチコレクションがあります。私がカラーマップ上で行う操作のため、matplotlib.colorbarインスタンスを使用して定義することはできません。少なくとも、私が知る限りではありません。働く、matplotlibのサイズを設定するColorbarBaseオブジェクト

cmap = matplotlib.cm.YlOrRd 
colors = [cmap(n) if pd.notnull(n) else [1,1,1,1] 
      for n in plt.Normalize(0, 1)([nullity for _, nullity in squares])] 

# Now we draw. 
for i, ((min_x, max_x, min_y, max_y), _) in enumerate(squares): 
    square = shapely.geometry.Polygon([[min_x, min_y], [max_x, min_y], 
             [max_x, max_y], [min_x, max_y]]) 
    ax0.add_patch(descartes.PolygonPatch(square, fc=colors[i], 
        ec='white', alpha=1, zorder=4)) 

は、だから私は代わりにmatplotlib.colorbar.ColorbarBaseインスタンスを定義します:

:例えば、その結果

matplotlib.colorbar.ColorbarBase(ax1, cmap=cmap, orientation='vertical', 
           norm=matplotlib.colors.Normalize(vmin=0, vmax=1)) 

を行うので、アウト空白パッチはデータ不足私は私の色で行う、いくつかの操作をストリップ

enter image description here

問題は、このカラーバーのサイズを小さくしたいということです(具体的には、それをspエコな垂直サイズ、例えば、500ピクセル)が、私はこれを行う明らかな方法が表示されません。 colorbarインスタンスがある場合は、axis property argumentsを使用してこれを簡単に調整できますが、ColorbarBaseにはこれらがありません。さらに参考のため

答えて

1

サイズと形状は軸で定義されます。これは私が2つのプロットをグループ化し、独立してトップにカラーバーを追加したコードからのスニペットです。

cax = fig.add_axes([0.125, 0.925, 0.775, 0.0725]) #has to be as a list - starts with x, y coordinates for start and then width and height in % of figure width 
norm = mpl.colors.Normalize(vmin = low_val, vmax = high_val)  
mpl.colorbar.ColorbarBase(cax, cmap = self.cmap, norm = norm, orientation = 'horizontal') 
+0

カラーバーは与えられた '軸'全体を占めるように見えるので、サイズを小さくする唯一の方法は次のとおりです。 'axis'のサイズを減らしてください。これは確かにこれを行う最も簡単な方法です。ありがとう! –

関連する問題