Учитывая приведенный ниже пример, я хочу изменить все шрифты на 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()