MatPlotLib:手动更改刻度标签的字体名称,轴标题和轴标题

时间:2018-10-29 04:04:16

标签: python-3.x matplotlib fonts

给出底部的示例,我想将所有字体更改为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()

0 个答案:

没有答案