/ Python

Mac 下 Matplotlib 图表中文乱码的解决方法

Matplotlib 是 Python 的一个绘图库套件,可以创建各种图形图表。用 Python 做数据可视化时经常会用到。不过 Matplotlib 在 Mac 系统下可能出现中文乱码的情况,需要手动添加中文字体并修改配置解决。

1. 下载 ttf 格式中文字体

下载中文字体,这里以微软雅黑字体为例,字体文件名为 Microsoft Yahei.ttf,复制到 matplotlib 的字体文件夹中,如果是用 Anaconda 安装的 matplotlib,那么文件夹位于:

~/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf

2. 修改配置文件

打开位于 matplotlib/mpl-data 文件夹中的 matplotlibrc 文件。

找到下面两项,去掉前面的 # 以取消注释状态,并在 font.sans-serif 中添加 Microsoft Yahei。

font.family    : sans-serif
font.sans-serif    : Microsoft Yahei, DejaVu Sans, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

此外,可以将 axes.unicode_minus 取消注释状态,将 True 改为 False,可以解决负号无法正常显示的问题:

axes.unicode_minus    : False

3. 清除 matplotlib 字体缓存

Mac 下使用 Anaconda 安装 matplotlib 并启动后,会在 ~/.matplotlib 文件夹中生成一份 fontList.json 文件,缓存了字体相关信息,删除该文件。

(不同安装方式,以及在 Windows 或 Linux 系统下,可能会在 .Cache 文件夹下,或者名为 fontList.py3k.cache,根据具体情况查找。)

4. 重启

重启 Python,当然也可以重启电脑 -_-