Python3 无头服务器上 matplotlib 运行 的字体

Python3 fonts for matplotlib running on headless server

我写了一个 python3 (3.4.3) 脚本,它使用 matplotlib 和 seaborn 生成了一些图表,它在我的笔记本电脑上运行得非常好 运行ning ubuntu 14.04.

我想将它安排到 运行 作为我服务器上的 cron 作业,即 运行ning ubuntu-server.

要完全达到 运行,我必须用 matplotlib.use("Agg")

更改 matplotlib 后端

脚本现在 运行 没问题,但是 matplotlib 找不到一些字体:

/usr/lib/python3/dist-packages/matplotlib/font_manager.py:1236:UserWarning: findfont: 
Font family ['sans-serif'] not found. Falling back to Bitstream Vera Sans
(prop.get_family(), self.defaultFamily[fontext]))

/usr/lib/python3/dist-packages/matplotlib/font_manager.py:1246: UserWarning: findfont: 
Could not match :family=Bitstream Vera Sans:style=normal:variant=normal:weight=normal:stretch=normal:size=10.0.
Returning /usr/share/matplotlib/mpl-data/fonts/ttf/cmtt10.ttf
UserWarning)

替代字体非常难看,我一直没弄清楚如何安装matplotlib/seaborn默认使用的字体。

如何安装默认字体? 简单的解决方案(例如,首选 apt-getpip)。

默认的 seaborn 字体是 Microsoft 字体 Arial。我想你应该可以通过 apt-get 和 apt-get install msttcorefonts -qq.

安装它

我找到的最简单的解决方案是将字体下载为 .ttf 并将 matplotlib 设置为使用该 ttf:

fontprop = matplotlib.font_manager.FontProperties(fname = "path/fontname.ttf")
matplotlib.rcParams['font.family'] = fontprop.get_name()