Python matplotlib画图与中文设置操作实例分析


Posted in Python onApril 23, 2019

本文实例讲述了Python matplotlib画图与中文设置操作。分享给大家供大家参考,具体如下:

采用matplotlib作图时默认设置下是无法显示中文的,例如编写如下python脚本,

#-*- coding: utf-8 -*-
from pylab import *
t = arange(-4*pi, 4*pi, 0.01)
y = sin(t)/t
plt.plot(t, y)
plt.title(u'钟形函数')
plt.xlabel(u'时间')
plt.ylabel(u'幅度')
plt.show()

显示出来的结果如图1所示,可见标题、标签都无法正常显示中文:

Python matplotlib画图与中文设置操作实例分析

实际上,matplotlib是支持unicode编码的,出现图1的问题主要是没有找到合适的中文字体,在matplotlib的配置文件中,可以看到字体的默认设置如下:

#font.family     : sans-serif
#font.sans-serif   : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

并没有中文字体,所以我们只要手动添加中文字体的名称就可以了,不过并不是添加我们熟悉的“宋体”或“黑体”这类的名称,而是要添加字体管理器识别出的字体名称,matplotlib自身实现的字体管理器在文件font_manager.py中,自动生成的可用字体信息在保存在文件fontList.cache里,可以搜索这个文件查看对应字体的名称,例如simhei.ttf对应的名称为'SimHei',simkai.ttf对应的名称为'KaiTi_GB2312'等。因此我们只要把这些名称添加到配置文件中去就可以让matplotlib显示中文,修改的方法有两种:

1. 直接修改配置文件matplotlibrc

在配置文件中找到font.sans-serif的设置,然后添加需要的中文字体名称,例如:

font.sans-serif    : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

2. 动态设置(推荐方式)

在python脚本中动态设置matplotlibrc,这样不需要更改配置文件,方便灵活,例如:

mpl.rcParams['font.sans-serif'] = ['SimHei']

修改后的代码如下:

#-*- coding: utf-8 -*-
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
t = arange(-4*pi, 4*pi, 0.01)
y = sin(t)/t
plt.plot(t, y)
plt.title(u'钟形函数')
plt.xlabel(u'时间')
plt.ylabel(u'幅度')
plt.show()

显示出来的结果如图2所示,可见标题、标签都能正常显示中文:

Python matplotlib画图与中文设置操作实例分析

但是细心些可以看出图2显示的结果并不正确,注意对比图1和图2的横坐标的坐标值,会发现图2中负轴的横坐标值不对,负号不见了!很明显,这不是程序的错误,而是由于更改了字体导致显示不出负号,在配置文件中我们可以在axes相关设置里找到如下设置:

#axes.unicode_minus : True

可见默认情况下采用的是unicode的minus,看来我们选择的字体对这点支持不够,所以只要把它设置为False就可以了,最终的代码如下:

#-*- coding: utf-8 -*-
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
t = arange(-4*pi, 4*pi, 0.01)
y = sin(t)/t
plt.plot(t, y)
plt.title(u'钟形函数')
plt.xlabel(u'时间')
plt.ylabel(u'幅度')
plt.show()

最终显示的结果如图3所示,一切都正常了。

Python matplotlib画图与中文设置操作实例分析

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
Python存取XML的常见方法实例分析
Mar 21 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
python读取一个目录下所有txt里面的内容方法
Jun 23 Python
Python运行不显示DOS窗口的解决方法
Oct 22 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
使用Python opencv实现视频与图片的相互转换
Jul 08 Python
python视频按帧截取图片工具
Jul 23 Python
Python3爬虫里关于代理的设置总结
Jul 30 Python
浅析NumPy 切片和索引
Sep 02 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 #Python
详解Python 函数如何重载?
Apr 23 #Python
解决Django生产环境无法加载静态文件问题的解决
Apr 23 #Python
Python 存储字符串时节省空间的方法
Apr 23 #Python
Django页面数据的缓存与使用的具体方法
Apr 23 #Python
Python切片操作去除字符串首尾的空格
Apr 22 #Python
详解python中的hashlib模块的使用
Apr 22 #Python
You might like
自动跳转中英文页面
2006/10/09 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
php强制运行广告的方法
2014/12/01 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
Position属性之relative用法
2015/12/14 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
JS简单添加元素新节点的方法示例
2018/02/10 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
React Component存在的几种形式详解
2018/11/06 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
Python程序员面试题 你必须提前准备!
2018/01/16 Python
TensorFlow损失函数专题详解
2018/04/26 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
小学数学教研活动总结
2014/07/01 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
教师继续教育反思周记
2015/06/25 职场文书
心理学培训心得体会
2016/01/22 职场文书
高考升学宴主持词
2019/06/21 职场文书