1. 显示中文乱码

  • 问题:matplotlib 在系统上没有找到对应的中文字体。
  • 解决:

在代码中手动指定系统上的中文字体。

1
2
3
4
5
6
7
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
zhfont = mpl.font_manager.FontProperties(fname='/usr/share/fonts/xxx')
# ...
plt.title(u'图表标题', fontproperties=zhfont)
plt.show()

【注】笔者使用的是 Arch Linux 系统,Arch Linux 上的中文字体安装可参考 Fonts。如果是其它 Linux 发行版,也可以这篇文章,其中很多中文字体都是开源的,在其它 Linux 发行版上一般也有对应安装包。

参考资料:matplotlib 显示宋体和 Times New Roman

2. matplotlib is currently using agg which is a non-gui backend so cannot show the figure

  • 问题:缺少 GUI 后端。
  • 解决:

Debian 系:安装 python-tkpython3-tk
ArchLinux 系:安装 tk
RedHat 系:安装 python-tkinterpython3-tkinter

参考资料:matplotlib is currently using agg which is a non-gui backend so cannot show the figure