Вращение цветовых меток в matplotlib сбрасывает форматирование меток - PullRequest
0 голосов
/ 21 мая 2019

Если я поверну метки цветовой шкалы, используемый мной формат будет сброшен (игнорируется).

fig.colorbar не принимает вращение, а cb.ax.set_xticklabels не принимает формат. Я не мог найти способ сделать обе настройки.

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.ticker import FormatStrFormatter

test = np.random.rand(100, 100)
np.random.seed(12345)

fig, axs = plt.subplots(1, 2, figsize=(6, 5))
fmts = ["%d", "%.5f"]

for i, ax in enumerate(axs.tolist()):
    im = ax.imshow(test, origin="lower")
    cb = fig.colorbar(im, ax=ax, orientation='horizontal', 
                      format=FormatStrFormatter(fmts[i]))
    ax.set_title(f"Format {fmts[i]}")

    cb.ax.set_xticklabels(cb.get_ticks(), rotation=45)

plt.tight_layout()
plt.show()

Метки тиковых цветовых полос должны быть в формате "% d" и "% .5f", но, как вы можете видеть, ни один из них не делает.

1 Ответ

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

Я не думаю, что исходное форматирование сохраняется при вызове cb.ax.set_xticklabels(), вы можете добавить cb.ax.xaxis.set_major_formatter(FormatStrFormatter(fmts[i])), чтобы впоследствии применить пользовательское форматирование позже.

В качестве альтернативы, используйте plt.setp(cb.ax.get_xticklabels(),rotation=45) вместо того, чтобы вращать метки.

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