Как изменить вес шрифта отдельных меток цветовой шкалы? - PullRequest
0 голосов
/ 04 июня 2019

Я хотел бы иметь разные веса шрифта для каждой из моих меток цветовой панели.

Я попытался разрешить LaTeX форматировать метки следующим образом:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
im = ax.imshow(np.random.rand(50, 50)/20)
cbar = ax.figure.colorbar(im, ticks=np.arange(0, 0.05, 0.01))
cbar.ax.set_yticklabels([r'{\fontsize{50pt}{3em}\selectfont{}{0}}',
                         r'{\fontsize{40pt}{3em}\selectfont{}{0.01}}',
                         r'{\fontsize{30pt}{3em}\selectfont{}{0.03}}',
                         r'{\fontsize{20pt}{3em}\selectfont{}{0.03}}',
                         r'{\fontsize{10pt}{3em}\selectfont{}{0.04}}',
                         r'{\fontsize{1pt}{3em}\selectfont{}{0.05}}', ])

, но это толькообновляет текст меток до всей строки (например, {\ fontsize {50pt} {3em} \ selectfont {} {0}}).У меня работает pyplot TeX demo .Даже если бы это решение работало, оно не было бы идеальным, поскольку мне, вероятно, нужно было бы указать все вручную.

Гораздо удобнее было бы что-то вроде этого вопроса .Там я узнал, что размер шрифта отдельных меток обычной оси x и y можно обновить, вызвав

label = axes.yaxis.get_major_ticks()[2].label
label.set_fontsize(size)

, заменив set_fontsize на set_fontweight, корректно обновляя вес выбранной метки.К сожалению, я не смог найти эквивалент axes.yaxis.get_major_ticks()[2].label для цветовой шкалы.

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

Спасибо!

1 Ответ

0 голосов
/ 04 июня 2019

Как указывает @ImportanceOfBingErnest, set_fontweight также работает для установки веса отдельных цветовых меток.Мне пришлось попробовать несколько вещей, чтобы найти, какой вызов даст мне текстовые объекты, определяющие метки цветовой полосы.Они доступны в cbar.ax.get_yticklabels().Приведенный ниже фрагмент кода теперь корректно меняет вес второй метки цветовой полосы:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
im = ax.imshow(np.random.rand(50, 50)/20)
cbar = ax.figure.colorbar(im, ticks=np.arange(0, 0.05, 0.01))
cbar.ax.get_yticklabels()[1].set_fontweight(1000)
plt.show()

Вывод кода (недостаточно репутации для встроенных изображений)

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