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

Вот код, который я позаимствовал из примеров примеров 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()

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

Figure1

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

1 Ответ

0 голосов
/ 11 сентября 2018

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

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

enter image description here

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

enter image description here

...