Смещение меток в цветовой панели - PullRequest
1 голос
/ 09 мая 2019

Рассмотрим следующее изображение (код для его генерации приведен ниже):

enter image description here

Верхняя метка (9.5E-05) выглядит нормально,но я хочу, чтобы нижняя и средняя метки были выровнены по вертикали вверх (обратите внимание, что не одинаковое выравнивание применяется к обоим), чтобы они выглядели так:

enter image description here

что выглядит намного лучше (по крайней мере для меня).Я искал вокруг, но не нашел способ сделать это.


import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable


ax = plt.subplot(111)
data = np.random.uniform(0., 10., (50, 50))
im = plt.imshow(data)

# Colorbar on the right side of ax.
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="2%", pad=0.05)
cbar = plt.colorbar(im, cax=cax)
cbar.set_ticks([np.min(data), np.ptp(data) * .5, np.max(data)])
print(np.min(data), np.ptp(data) * .5, np.max(data))

cbar.ax.set_yticklabels([
    '{:.1E}'.format(0.00000133),
    '{:.1E}'.format(0.00000561),
    '{:.1E}'.format(0.0000948)], rotation=90)

plt.show()

1 Ответ

1 голос
/ 09 мая 2019

Вы можете перебирать метки y на цветовой панели и устанавливать вертикальное выравнивание текста в зависимости от того, какая это метка.

# don't include last label (one at the top) as we don't want to change its alignment
for i, label in enumerate(cbar.ax.get_yticklabels()[:-1]):
    if i == 0:  # first label
        label.set_va("bottom")
    else:
        label.set_va("center")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...