Цветная полоса Matplotlib отмечена слева/напротив

Можно создать вертикальную цветовую полосу, например (упрощенно):

import matplotlib.pyplot as plt
import matplotlib as mpl

plt.figure()
c_ax=plt.subplot(111)
cb = mpl.colorbar.ColorbarBase(c_ax,orientation='vertical')
plt.savefig('my_colorbar.png')

В результате получается что-то вроде этого (повернуто для экономии места): введите здесь описание изображения

Можно ли получить метки клещей с противоположной стороны?


person M.T    schedule 29.04.2016    source источник


Ответы (4)



У меня была такая же проблема. Эта ситуация, вероятно, возникает, когда вы явно устанавливаете оси цветовой полосы. В этом случае вы можете легко указать, с какой стороны этих осей вы получаете галочки и метки. Например, если вы создали изображение с помощью imshow

fig = plt.figure()
ax = plt.subplot(1, 1, 1)
im = ax.imshow(data)

Вы можете определить ось для цветовой полосы, в этом примере, используя inset_axes:

from mpl_toolkits.axes_grid1.inset_locator import inset_axes
cbaxes = inset_axes(ax, width="7%", height="20%", loc=4)

затем добавьте свою цветовую полосу

cb = fig.colorbar(im, cax=cbaxes, ticks=[vmin, vmax], orientation='vertical')

а затем контролировать положение галочек и т.д...

cbaxes.yaxis.tick_left()
person Paco Lopez Dekker    schedule 26.11.2019

По какой-то причине применение изменений к осям ввода цветовой полосы (параметр cax) у меня не сработало.

Однако захват осей из объекта colorbar и последующее применение изменений сработало хорошо:

cb.ax.xaxis.set_ticks_position("top")
person Xrio    schedule 26.11.2020

Не знаю почему, но у меня ни одна из этих команд не сработала. Если это также ваш случай, я решил проблему, указав свойство colorbar

location='left'

который заботится как о галочках, так и о ярлыке. Если вы по-прежнему хотите, чтобы цветовая полоса находилась с правой стороны графика, просто определите новую ось, ограниченную желаемой позицией, и свяжите с ней цветовую полосу.

cbar_ax=fig.add_axes([x0, y0, width, height])
person Luis Rodriguez-Moldes    schedule 25.05.2020