给出底部的示例,我想将所有字体更改为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”。
尽管我在调用rcParams时看到Helvetica是该字体家族的成员,但我得到了: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()