如何配置 matplotlib 以便能够从本地路径读取字体?

Ben*_*say 4 python fonts matplotlib

.ttf如果在普通系统文件夹中找不到字体,我希望能够将文件放在本地文件夹中,并将 Matplotlib 配置为在该文件夹中查找字体。上一个答案显示了如何指向任何目录中的特定字体。这是答案中的代码:

import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.font_manager as font_manager

path = '/usr/share/fonts/truetype/msttcorefonts/Comic_Sans_MS.ttf'
prop = font_manager.FontProperties(fname=path)
mpl.rcParams['font.family'] = prop.get_name()
fig, ax = plt.subplots()
ax.set_title('Text in a cool font', size=40)
plt.show()
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,每次我想要 Helvetica(或在这种情况下 Comic Sans)在我的情节中时,我都必须这样做。我相信另一种解决方案是将 ttf 文件复制到类似~/anaconda/lib/python2.7/site-packages/matplotlib/mpl-data/fonts/ttf. . 我觉得应该有一些方法可以在我的~/.matplotlib/matplotlibrc文件中配置 matplotlib,这样如果我使用 Helvetica,我就不必每次都提供路径。如何将.ttf文件放置在自定义目录中(或至少一个对 python 或 matplotlib 更新是安全的)并且每次绘图时都不必重新键入文件路径?

奖励积分,如果解决方案允许我到一个相对路径使用返回的目录import matplotlib; matplotlib.get_configdir(),因为我的一些机器,是~/.config/matplotlib和一些人来说~/.matplotlib

Ben*_*say 5

如果有人关心,我决定将我的.ttf文件复制到类似于~/anaconda/lib/python2.7/site-packages/matplotlib/mpl-data/fonts/ttf. 在我更新 matplotlib 后,这些文件仍然存在,所以至少可能需要一段时间才能重复该过程,这样我每次绘图时都不需要指向目录或调用脚本。如果您这样做和/或更改matplotlibrc文件中的默认字体列表(我都做了),您可能必须删除位于~/.matplotlib/fontList.cache或 ~/.cache/matplotlib/fontList.cache`等位置的缓存文件。Matplotlib 将在您下次绘制某些内容时重新生成它。

  • 感谢您发布此内容。超级烦人的是 matplotlib 不包含一些基本的字体管理工具,我们必须做这个晦涩的 hack。您还可以安装系统字体,matplotlib 应该会自动检测它们,但在安装了 anaconda 的情况下,我并不总是拥有 sudo 权限。 (2认同)