matplotlib 中文显示
27 November 2017
系统环境
- ubuntu/macos
- pyenv 和 virtualenv
显示配置
修改 ~/.matplotlibrc
配置文件(对于macos来说是 ~/.matplotlib/matplotlibrc
文件)
# macos 修改如下即可解决加载 _macosx 模块错误:
# **RuntimeError**: Python is not installed as a framework
backend: TkAgg
# 如果使用 QT5 的话配置如下
# backend: Qt5Agg
其他后端支持参考官网 Backends
章节:Matplotlib Backends
使用 Jupyter-notebook
时,可以通过以下参数指定生成图片大小及分辨率:
%matplotlib inline
import matplotlib.pyplot as plt
# 设置图像大小及dpi
plt.rcParams["figure.figsize"] = [12, 9]
plt.rcParams['figure.dpi'] = 200
或者使用 notebook 渲染引擎:
%matplotlib notebook
坐标轴负号变方块
修改 ~/.matplotlibrc
配置文件(对于macos来说是 ~/.matplotlib/matplotlibrc
文件)
# 解决 matplotlib 坐标轴负号变方块问题
axes.unicode_minus : False
中文支持
- 拷贝
SimHei
字体文件到 matplotlib 字体目录下,SimHei
字体来源如下:- Windows 系统的字体文件夹下面拷贝
- 点击这里下载
- Linux/Mac 系统通过
fc-list | grep -i SimHei
命令查看系统是否已经安装该字体
# 拷贝 SimHei.ttf 字体文件到 matplotlib 安装目录
# 本文使用的是 pyenv 虚拟环境安装的, 读者要根据具体情况修改路径
$ cp SimHei.ttf ~/.pyenv/versions/venv347/lib/python3.4/site-packages/matplotlib/mpl-data/fonts/ttf/
- 修改
~/.matplotlibrc
配置文件(对于macos来说是~/.matplotlib/matplotlibrc
文件)
font.family : sans-serif
font.serif : SimHei, DejaVu Serif, Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
font.sans-serif : SimHei, DejaVu Sans, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
- 删除缓存文件
# for ubuntu
$ rm -rf ~/.cache/matplotlib/
# for macos
$ rm -rf ~/.matplotlib/fontList.json
$ rm -rf ~/.matplotlib/tex.cache/
-
重新启动 python 即可让 matplotlib 支持中文
-
启动 python 检查是否配置成功
>>> import matplotlib.pyplot as plt
# 查看该字体第一个是不是 SimHei
>>> plt.rcParams['font.sans-serif']
['SimHei', 'DejaVu Sans', 'Bitstream Vera Sans', 'Lucida Grande', 'Verdana', 'Geneva', 'Lucid', 'Arial', 'Helvetica', 'Avant Garde', 'sans-serif']