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-get
或 pip
)。
默认的 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()
我写了一个 python3 (3.4.3) 脚本,它使用 matplotlib 和 seaborn 生成了一些图表,它在我的笔记本电脑上运行得非常好 运行ning ubuntu 14.04.
我想将它安排到 运行 作为我服务器上的 cron 作业,即 运行ning ubuntu-server.
要完全达到 运行,我必须用 matplotlib.use("Agg")
脚本现在 运行 没问题,但是 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-get
或 pip
)。
默认的 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()