转发自: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进行词频统计,并显示到图表中

结果:

python matplotlib plot 数据中的中文无法正常显示的解决办法的更多相关文章

  1. Python2在Sublime Text3中print中文时编译报错解决办法

    如果是用记事本新建的python文件,有可能是由于记事本默认的ascii格式导致的,这个时候只需要在Sublime Text3中   文件->设置文件编码(utf-8),保存即可.这样能够解决的 ...

  2. PyCharm注释中出现中文运行报错的解决办法

    SyntaxError: Non-UTF-8 code starting with '..... 方法一:在文件首行加上 # -*- coding:utf-8 -*- 方法二:更改编码格式 File ...

  3. Python源码文件中带有中文时,输出乱码

    Python源码文件中带有中文时,文件头应加注释: #!/usr/bin/env python # -*- coding: utf-8 -*- 第一行注释是为了告诉Linux/OS X系统,这是一个P ...

  4. 向SDE图层中添加大量数据时,出现ORA-00604以及ORA-01000的解决办法

    转自原文 向SDE图层中添加大量数据时,出现ORA-00604以及ORA-01000的解决办法 写了一个小程序,从一个列表中读取坐标串,每个坐标串生成一个IPolygon,然后将这些Polygon添加 ...

  5. mysql保存中文乱码的原因和解决办法

    当你遇到这个mysql保存中文乱码问题的时候,期待找到mysql保存中文乱码的原因和解决办法这样一篇能解决问题的文章是多么激动人心.    也许30%的程序员会选择自己百度,结果发现网友已经贴了很多类 ...

  6. [转帖]Linux中buff/cache内存占用过高解决办法

    Linux中buff/cache内存占用过高解决办法 https://www.cnblogs.com/rocky-AGE-24/p/7629500.html /proc/sys/vm/drop_cac ...

  7. 关于ArcMap中打开ArcToolbox导致闪退的解决办法

    最近好久不用ArcGis的小编要用到ArcMap去发送一个GP服务,发现按照套路打开ArcMap点击ArcToolbox时,发生了ArcMap的闪退现象,几经周折终于解决了问题. 希望也遇到这类问题的 ...

  8. 记CRenderTarget:DrawText()绘制中文乱码的BUG及解决办法

    原文:记CRenderTarget:DrawText()绘制中文乱码的BUG及解决办法 转载请注明出处:http://www.cnblogs.com/Ray1024 一.问题描述 在MFC中使用Dir ...

  9. [转]iOS Safari 中click点击事件失效的解决办法

    iOS Safari 中click点击事件失效的解决办法 问题起因: 在微信公众号开发(微站)过程中用jquery的live方法绑定的click事件点击无效(不能执行) 问题描述 当使用委托给一个元素 ...

随机推荐

  1. OpenJudge计算概论-求分数序列和

    /*======================================================================== 求分数序列和 总时间限制: 1000ms 内存限制 ...

  2. javascript 函数节流方法

    函数节流可以缓解调用的次数,代码如下: function throttle(method,delay){ var timer=null; return function(){ var context= ...

  3. 火狐和ie下获取javascript 获取event

    javascript 获取event 先从一个简单的例子说起,一个简单的button控件如下: <input type='button' name='mybtn' id='mybtn' oncl ...

  4. python之os模块

    #!/usr/bin/env python3# _*_ coding:utf-8 _*_ import os os.getcwd()#os.chdir('path')print(os.curdir)p ...

  5. Android 广播大全 Intent Action 事件

    Intent.ACTION_AIRPLANE_MODE_CHANGED; //关闭或打开飞行模式时的广播 Intent.ACTION_BATTERY_CHANGED; //充电状态,或者电池的电量发生 ...

  6. 读取Config文件工具类 PropertiesConfig.java

    package com.util; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io ...

  7. java.io.IOException: ORA-22920: 未锁定含有 LOB 值的行

         究其原因是因为没有锁定要更新的行记录.将 mysql="select filebody from filelist where filename=?"中的SQL语句加上 ...

  8. Intent传递数据从一个Activity到另一个Activity

    MainActivity package com.test.intentdemo; import android.app.Activity; import android.content.Intent ...

  9. HTML5常识总结(一)

    一.HTML5的发展历程 + html演变的几个版本: html2.0.html3.2.html4.0.html4.01.html5. + 其中在html4.01发布之后,还发布了xtml1.0,它是 ...

  10. U-boot的环境变量: bootcmd 和bootargs

    U-boot的环境变量: bootcmd 和bootargs   u-bootcmdbootcmd是uboot自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置, ...