Изменить метки цветовой шкалы с увеличения на уменьшение значения
Я хотел бы изменить метки для цветовой шкалы с увеличения до уменьшения значения. Когда я пытаюсь сделать это через vmin
а также vmax
Я получаю сообщение об ошибке:
minvalue должно быть меньше или равно maxvalue
Так, например, я бы хотел, чтобы цветовая полоса начиналась с 20 слева и доходила до 15 справа.
Пока это мой код для цветовой шкалы, но в этом примере значения идут от 15 до 20, и я бы хотел изменить этот порядок:
cmap1 = mpl.cm.YlOrBr_r
norm1 = mpl.colors.Normalize(15,20)
cb1 = mpl.colorbar.ColorbarBase(colorbar1, cmap=cmap1, norm=norm1, orientation='horizontal')
cb1.set_label('magnitude')
3 ответа
Цветовые полосы, показанные ниже, вероятно, не совсем такие, как у вас, так как они являются лишь примерами цветовых полос, которые служат доказательством концепции.
В следующем я предполагаю, что у вас есть цветная полоса, похожая на эту, с возрастающими значениями справа:
Способ 1: инвертирование оси X
Инвертирует всю ось X цветовой шкалы
Если вы хотите инвертировать ось X, то есть значения на оси X опускаются вправо, делая цветовую шкалу "зеркальной", вы можете использовать ColorbarBase
"s ax
атрибут:
cb1 = mpl.colorbar.ColorbarBase(colorbar1,
cmap=cmap1,
norm=norm1,
orientation='horizontal')
cb1.ax.invert_xaxis()
Это дает вывод ниже.
Также можно изменить количество меток, задав цветовые полосы. locator
, Здесь MultipleLocator
используется, хотя вы также можете использовать много других локаторов.
from matplotlib.ticker import MultipleLocator
cb1.locator = MultipleLocator(1) # Show ticks only for each multiple of 1
cb1.update_ticks()
cb1.ax.invert_xaxis()
Способ 2. Использование пользовательских ярлыков
Меняет порядок меток, сохраняя ориентацию цветовой шкалы
Если вы хотите, чтобы ориентация самой цветовой панели была как есть, и только поменять порядок, в котором отображаются метки, вы можете использовать set_ticks
а также set_ticklabels
методы. Это скорее подход "грубой силы", чем предыдущее решение.
cb1.set_ticks(np.arange(15, 21))
cb1.set_ticklabels(np.arange(20, 14, -1))
Это дает цветную полосу, показанную ниже. Обратите внимание, что цвета остаются неизменными, изменились только позиции галочек и метки.
Альтернативное решение для создания цветной полосы в методе 2:
cmap1 = cmap1.reversed()
cb1.ax.invert_yaxis()