Mac Python3 Matplotlib中文方框乱码解决方案

在macOS Mojave 10.14上,使用Python 3.7的绘图库Matplotlib 3,当输出中文时遇到方框形乱码。

中文乱码截图

Google了一下,找到不少方法,有安装字体的,有更改配置的,有自己写方法的。看了一下这些方法,要么太复杂,要么升级后还要重新弄,都不太满意。

继续搜索发现,造成Matplotlib中文乱码是因为Mac下没有SimHei字体库,需要下载SimHei字体,再配置Matplotlib。

如果我们找到Mac里支持中文的字体,然后在Matplotlib里设置为默认,也就不需要再下载了。

from matplotlib.font_manager import FontManager
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)
print(mat_fonts)

运行以上代码,可以发现Mac上有很多字体可供使用,我们找到Arial Unicode MS,设置为Matplotlib的默认字体即可。

我们更改Matplotlib的默认字体:

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']

通过以上两行代码,不用其他任何修改,即可正常显示中文。

中文正常截图