By Z.H. Fu
https://fuzihaofzh.github.io/blog/
matplotlib默认是不支持中文的,今天测试了网上很多关于matplotlib加载中文的方法,大多数是在程序中加载字体文件,这种方法能实现部分中文的显示,但是切问录中显示图例的那个函数就没有预留这个加载字体的位置,先将这种方法放在下面:
python1 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/