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 字体来源如下:
    1. Windows 系统的字体文件夹下面拷贝
    2. 点击这里下载
    3. 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']

参考:机器学习 Python 环境搭建