python matplotlib plot 数据中的中文无法正常显示的解决办法

转发自:http://blog.csdn.net/laoyaotask/article/details/22117745?utm_source=tuicool

python matplotlib plot 数据中的中文无法正常显示的解决办法

在学习《NLP with Ptyhon》一中的过程中,总想用中文语料进行试验,结果在matplotlib.plot生成的统计图表中,中文总是无法正常显示。在网上也找了些资料,说是在程序中指定字体文件,不过那样的话需要对plot进行很多设置,而且都是说的设置坐标轴标题为中文,不是关于数据本身的。

原因:matplotlib默认字体并不是中文字体。

解决方法:将某中文字体设为默认首选字体,本文拟将默认字体设为微软雅黑。

环境:win7 x64, python3.2, nltk3.0a3

过程:

在python的安装目录中找到配置文件: %Python_Home%\Lib\site-packages\matplotlib\mpl-data\matplotlibrc (如,我的是在D:\Python32\Lib\site-packages\matplotlib\mpl-data),用任意文本编辑器打开。(最好先备份一下)

找到第129行:#font.family, 将其注释去掉,冒号后面的值改为Microsoft YaHei

找到第141行:#font.sans-serif, 将其注释去掉,并将Microsoft YaHei添加到冒号后面的最前面,注意还要再加一个英文逗号(,)

为保险其间,到C:\Windows\Fonts\中找到微软雅黑对应的字体文件msyh.ttf,将其复制到D:\Python32\Lib\site-packages\matplotlib\mpl-data\fonts\ttf\目录下

执行程序即可看到效果。有代码、有图,所以有真相:

[python] view plaincopy在CODE上查看代码片派生到我的代码片

'''''

说明:利用nltk.corpus中的PlaintextCorpusReader去读取磁盘上的txt文件

(文件内容为:我 是 中国 人 , 你 是 美国 人 。 中国 啊 中国)

再利用nltk.FreqDist对读到的文本进行词频统计,并用plot方法绘制图表进行显示

'''

import nltk

from nltk.corpus import PlaintextCorpusReader #导入读文件的包

import matplotlib

corpus_root='D:/nltk_data/corpora/gutenberg/' #设置目标文件目录

filelists=PlaintextCorpusReader(corpus_root,'cn.txt') #读文件

nltk.FreqDist(filelists.words('cn.txt')).plot() #调用FreqDist进行词频统计,并显示到图表中

结果: