2016-10-24 2 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

Размер и форма определяются с помощью оси. Это фрагмент кода, который у меня есть, где я группирую две группы и добавляю цветную панель вверху независимо. Я играл со значениями в том, что add_axes экземпляра, пока я не получил размер, который работал для меня:

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

Colorbar кажется занять весь 'axis', данный ему, так что единственным способом уменьшить его размер до уменьшить размер «оси». Это самый простой способ сделать это. Благодаря! –

Смежные вопросы