MPL.pyplot — Как переместить блоки горизонтальной цветовой панели?

#python-3.x #matplotlib #colorbar

#python-3.x #matplotlib #цветная панель

Вопрос:

Я пытаюсь настроить внешний вид моего графика, чтобы затем сохранить его как изображение. У меня есть все, что касается графика и его цветовой панели. С помощью аргументов цветовой панели я сделал ее горизонтальной и разместил ее в верхней части основного графика, определив ось для цветовой панели. Позиция по умолчанию для блоков цветовой панели установлена внизу, и я хочу, чтобы они были вверху, чтобы сэкономить место, но я не могу найти, как это сделать. Вот мой код:

 import matplotlib.pyplot as plt

fig, ax = plt.subplots()
img = ax.imshow(data, cmap='gray', origin='lower')

# positioning colorbar
cax = fig.add_axes([0.2235, 0.93, 0.58, 0.03])
fig.colorbar(img, orientation='horizontal', cax=cax)

fig.savefig('map.png', bbox_inches='tight')
  

Подводя итог, блоки цветовой панели отображаются между цветовой панелью и основным графиком. Я хочу переместить блоки так, чтобы они находились в верхней части цветовой панели (если это вообще возможно). Любая помощь очень приветствуется.

Ответ №1:

Вам нужно только перейти к ticklocation colorbar :

 fig.colorbar(img, orientation='horizontal', cax=cax, ticklocation='top')
  

Ответ №2:

Если вы хотите, чтобы он был немного более готовым:

 import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(constrained_layout=True)
img = ax.imshow(np.random.randn(30, 30), cmap='gray', origin='lower')

fig.colorbar(img, location='top', ax=ax, shrink=0.5)

plt.show()
  

введите описание изображения здесь