У меня есть коллекция патчей, для которой я хочу отобразить цветовую карту. Из-за некоторых манипуляций, которые я делаю поверх цветовой карты, мне невозможно определить ее с помощью экземпляра 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))
что приводит, например:
Проблема заключается в том, что я хочу уменьшить размер этого цветового бара (в частности, уменьшить его до sp максимальный вертикальный размер, скажем, 500 пикселей), но я не вижу никакого очевидного способа сделать это. Если бы у меня был экземпляр colorbar
, я мог бы легко отрегулировать его, используя его axis property arguments, но ColorbarBase
этого не хватает.
Для дальнейшей ссылки:
- The example my implementation is based on.
- The source code in question (предупреждение: длинный).
Colorbar кажется занять весь 'axis', данный ему, так что единственным способом уменьшить его размер до уменьшить размер «оси». Это самый простой способ сделать это. Благодаря! –