matplotlib font set

matplotlib font set

ubuntu16.04 环境下直接使用 matplotlib 绘图输出中文可能会出现乱码的现象,需要设置相应的字体! 如果没有字体以及没有配置 matplotlibrc 文件和 删除 fontList.cache 缓存,直接在代码中使用
mpl.rcParams['font.sans-serif'] = 'simhei' 是无效的,需要同时满足三个条件.

如果你在其他工具和包中出现需要中文字体的问题,这个思路应该也是行的通的.

下载中文字体

如果你要显示中文,当然中文的字体必不可少,字体在 Ubuntu 和 Windows 平台下应该是通用的,一般都使用 .ttf 后缀的文件格式.首先到myfontfree下载chinese.msyh.ttf字体,将其拷贝到/usr/share/fonts 目录下面,但一般还不够,你需要再把字体拷贝到工具安装包相应的字体目录下面,matplotlib 具体安装目录是

python2.7 和 python3.5类似,就是版本变了

/usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data/fonts/ttf/

/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/fonts/ttf/

当然也可以使用软链接的形式,在安装包字体目录下面,sudo ln -s /usr/share/font/simhei.ttf simhei.ttf

设置配置文件 matplotlibrc

修改配置文件 /usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data/matplotlibrc, 取消注释
font.family, 和 font.sans-serif, 并在 font.sans-serif 后面添加 Microsoft YaHei

删除 matplotlib 字体缓存

python2 删除 sudo rm ~/.cache/matplotlib/fontList.cache,python3 删除 sudo rm ~/.cache/matplotlib/fontList.py3k.cache

画决策边界和轮廓线

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = np.arange(-5,5,0.1) # shape = (100,)
y = np.arange(-5,5,0.1)

xx, yy = np.meshgrid(x, y, sparse=True) # xx.shape = (1, 100), yy.shape = (100, 1)
# xx, yy = np.meshgrid(x, y, sparse=False) # xx.shape = (100,100)
z = np.sin(xx**2 + yy**2) / (xx**2 + yy**2) # z.shape = (100,100)

# 画出颜色轮廓线,z = f(x,y) 用不同的颜色表示不同的值
plt.xlabel("x")
plt.ylabel("y")
h = plt.contourf(x,y,z)