Как расположить метку горизонтального объекта цветовой панели matplotlib точно в центре цветовой панели ниже или выше?

Вот код, который я позаимствовал из примеров примеров matplotlib с небольшими изменениями для создания горизонтальной цветовой полосы для изображения с правильно размещенной меткой:

from matplotlib import colors
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(19680801)
cmap = "cool"

fig, axs = plt.subplots()

# Generate data with a range that varies from one plot to the next.
data = (1 / 10) * np.random.rand(10, 20) * 1e-6
image = axs.imshow(data, cmap=cmap)
axs.label_outer()

# Find the min and max of all colors for use in setting the color scale.
vmin = image.get_array().min()
vmax = image.get_array().max()
norm = colors.Normalize(vmin=vmin, vmax=vmax)

cbar = fig.colorbar(image, ax=axs, orientation='horizontal', fraction=.1)
cbar.ax.set_ylabel('$[M_\u2609 kpc^{{-2}}]$', position=(30,1), fontsize=20, rotation=0)


plt.show()

Но вот выход, который я не хочу.

Рисунок 1

Я хочу ярлык, который точно сидит в центре colorbar (ниже или выше). После изменения координат position в приведенном выше коде не представляется, что существует какая-либо гибкость в определении положения метки. Есть ли что-то, о чем я не знаю в контексте matplotlib ColorBars? Ваша помощь очень ценится.

1 ответ

Решение

Метка оси (ylabel) предназначен для размещения вдоль соответствующей оси. Заголовок, с другой стороны, по своему дизайну расположен по центру объекта оси. Так что вместо использования set_ylabel, вы должны использовать set_title,

cbar.ax.set_title('$[M_\u2609 kpc^{{-2}}]$', fontsize=20)

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

Для получения дополнительной информации о различных частях фигуры, см. Этот пример "Анатомия фигуры"

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

Другие вопросы по тегам