Matplotlib 绘图中的 Lato 字体

Lato Fonts in Matplotlib Plots

之前有人问过这个问题,但我还没有找到适合我的解决方案。我一直在试图弄清楚如何将 Matplotlib 图中的 default font 更改为 Lato.

那里有几个 posts/threads,例如1, 2, 。通过这些帖子,我尝试按以下方式进行构建。首先,我电脑中的所有字体都添加到字体管理器中,如示例 2 中所建议的那样。

from matplotlib import font_manager

font_dirs = [r"C:\Windows\Fonts"]
font_files = font_manager.findSystemFonts(fontpaths=font_dirs)

for font_file in font_files:
    font_manager.fontManager.addfont(font_file)
    
result = font_manager.findfont("Lato")
print(result)

print 的输出是 --> C:\Windows\Fonts\Lato-Regular.ttf 因此,字体管理器检测到 Lato。在下一步中,我尝试了

import matplotlib as mpl
mpl.rcParams['font.family'] = 'Lato-Regular'
mpl.rcParams['font.sans-serif'] = 'Lato-Regular'
import matplotlib.pyplot as plt
plt.plot(range(0,50,10))
plt.title('Font test', size=32)
plt.show()
plt.savefig('f1.png')

现在代码运行完美,没有任何“DeJaVou”错误。但是字体仍然是默认字体而不是Lato

我做错了什么?任何帮助表示赞赏!谢谢

使用该字体,最好 install 所有系列(或至少主要样式)。请记住,Lato 是一种 sans-serif 字体 并且由于您想将其用作所有绘图的默认字体(对于一个脚本),它应该在sans-serif 家庭选项。

import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt

print(mpl.rcParams['font.sans-serif'])

# Just write the name of the font
mpl.rcParams['font.sans-serif'] = 'Lato'
print(mpl.rcParams['font.sans-serif'])

plt.figure()
plt.plot(range(0,50,10))
plt.title('Font test', size=32)


plt.figure()
x = np.linspace(0, 6.5)
y = np.sin(x)
plt.plot(x, y)
plt.title(r'Just a plot of the function $f(x) = \sin(x)$', size=18)

plt.show()

你可以看到标题、刻度的变化,如果你放一些图例,你会在那里看到字体。