MatPlotLib: изменение имени шрифта меток тиков, названий осей и названий осей вручную - PullRequest
0 голосов
/ 29 октября 2018

Учитывая приведенный ниже пример, я хочу изменить все шрифты на Helvetica, не мешая таблицам стилей. Возможно ли это?

Я предполагаю использовать import matplotlib.font_manager, так как я использовал это для аннотаций, подобных этому:

import matplotlib.font_manager
pfont = {'fontname':'Helvetica'}

и просто вставив **pfont в качестве аргумента аннотации.

К сожалению, это не похоже на работу, например:

ax.set_yticklabels(people,**pfont)

Я также пытался (безрезультатно):

import matplotlib.font_manager as mfm
mfm.rcParams.update({'font.sans-serif':'Helvetica'})

По моим соображениям, семейство по умолчанию уже было выбрано как sans-serif, и по умолчанию (верхний) шрифт в этом семействе не был Helvetica.

Хотя я вижу, что Helvetica является членом этого семейства шрифтов, когда я звоню rcParams, я получаю: UserWarning: findfont: Font family ['Helvetica'] not found. Falling back to DejaVu Sans [font_manager.py:1328]

Я попробовал это (и это сработало):

plt.yticks(fontname = "Times New Roman") 

... но он не работает для "Helvetica", который мне нужен.


import matplotlib.pyplot as plt
import numpy as np

# Fixing random state for reproducibility
np.random.seed(19680801)


plt.rcdefaults()
fig, ax = plt.subplots()

# Example data
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
y_pos = np.arange(len(people))
performance = 3 + 10 * np.random.rand(len(people))
error = np.random.rand(len(people))

ax.barh(y_pos, performance, xerr=error, align='center',
        color='green', ecolor='black')
ax.set_yticks(y_pos)
ax.set_yticklabels(people)
ax.invert_yaxis()  # labels read top-to-bottom
ax.set_xlabel('Performance')
ax.set_title('How fast do you want to go today?')

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