Используя matplotlib 3.0.1, мне нужно было сделать рисунок, на котором весь текст должен был быть в Open Sans Light. Поскольку рисунок довольно сложный, с несколькими панелями и т. Д., Я хотел настроить его, используя matplotlib.pyplot.rc (..), чтобы определить шрифт по умолчанию и вес шрифта для всех элементов рисунка.
Код ниже предоставляет минимальный пример. Поскольку не у всех может быть установлен Open Sans, здесь я использую шрифт по умолчанию и жирный шрифт вместо светлого, чтобы сделать его более общим. Поэтому я устанавливаю вес и размер шрифта по умолчанию, а затем строю базовую ось с метками x и y и дополнительным текстом.
import matplotlib.pyplot as plt
plt.style.use('default')
plt.rc('font', weight='bold', size=15)
fig, ax = plt.subplots(num=1, clear=True)
ax.set(xlabel='x-label', ylabel='y-label')
ax.text(0.2,0.4,'Text')
Я ожидаю, что все биты текста будут выделены жирным шрифтом. Метки галочек и лишний бит текста есть, а метки x и y - нет. Они в нормальном весе. Снимок экрана здесь.
Кажется, метки x и y получают имя и размер шрифта по умолчанию, но не вес по умолчанию.
В качестве обходного пути я попытался установить вес шрифта по умолчанию в опциях 'axes', но это не представляется возможным. «axes.labelsize» влияет на размер шрифта меток x, y, но нельзя отдельно указать вес шрифта.
Таким образом, кажется, что размер шрифта наследуется надписями x и y, если иное не указано в axes.labelsize, но вес шрифта не наследуется надписями и не может быть задан по умолчанию для осей. Обратите внимание, что имя шрифта ведет себя по-другому. Он наследуется метками x, y, но не может иметь другое значение по умолчанию в опции «оси».
Есть логика или это ошибка?
Есть ли решение для этого? Или мне нужно напрямую установить вес шрифта для объектов x-label и y-label?