0%

matplotlib中文加载方式

By Z.H. Fu

https://fuzihaofzh.github.io/blog/
matplotlib默认是不支持中文的,今天测试了网上很多关于matplotlib加载中文的方法,大多数是在程序中加载字体文件,这种方法能实现部分中文的显示,但是切问录中显示图例的那个函数就没有预留这个加载字体的位置,先将这种方法放在下面:
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#-*- coding: utf-8 -*-
from matplotlib.font_manager import FontProperties
import matplotlib.pyplot as plt
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
plt.figure(figsize=(6,6))



x = [1,2,3,4,5,6,7,8]
y = []
for i in x:
y.append(-(i*i)+i+3)


plt.plot(x, y)
plt.title(u'测试程序', fontproperties=font)
plt.xlabel(u'x轴', fontproperties=font)
plt.ylabel(u'y轴', fontproperties=font)
plt.grid(True)
plt.show()

为了让图例也能显示中文,我们必须用修改文件的方法,找了很长时间,很多改了都没有效果,估计是matplotlib的版本变了,后来终于找到了一种方法,记录如下:

一、找到c:\python24\lib\site-packages\matplotlib\mpl-data\matplotlibrc (修改font.sans-serif、verbose.level两行代码)

1、找到了matplotlibrc设置文件,是个文本文件,随便找个编辑器打开它,找到font.sans-serif一行,将后边直接改成一个nothing;(把 “:”后的“#…”都去掉)

2、找到verbose.level一行,把默认的silent改成debug.

二、找到Vera.ttf,将Vera.ttf用一个中文TrueType文字替换,名字是Vera,后缀是.ttf(True Type Font),即可。

注意:在这里有两个地方,C:\Python24\Lib\site-packages\matplotlib\mpl-data\fonts\ttf\下的和C:\Python24\Lib\site-packages\matplotlib\mpl-data\下的两个vera.ttf文件。

三、字符串,都用u"…“的形式.(文件编码utf-8 加上” # coding = utf-8 "一行.)

2014/5/25更新
发现一个更好的办法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# -*- coding: utf-8 -*-

from numpy import *
import matplotlib.pyplot as plt
from matplotlib import rcParams

rcParams['font.family'] = 'STZhongSong'

#如果要保存为pdf格式,需要增加如下配置
#rcParams["pdf.fonttype"] = 42

plt.plot(arange(0, 10, 1), arange(0, 10, 1))
plt.title(u'中文测试图样')
plt.legend((u'图例',), 'lower right')
plt.savefig('test.png', format='png') # 或者pdf

参见
http://www.yeolar.com/note/2011/04/28/matplotlib-tips/