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 相关文章推荐
windows下python模拟鼠标点击和键盘输示例
Feb 28 Python
python中的内置函数getattr()介绍及示例
Jul 20 Python
Python3处理文件中每个词的方法
May 22 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
Dec 04 Python
Python 登录网站详解及实例
Apr 11 Python
Python使用pymysql从MySQL数据库中读出数据的方法
Jul 25 Python
anaconda如何查看并管理python环境
Jul 05 Python
Python run()函数和start()函数的比较和差别介绍
May 03 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 Python
深度学习小工程练习之垃圾分类详解
Apr 14 Python
解决Pytorch中关于model.eval的问题
May 22 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
PHP图片上传类带图片显示
2006/11/25 PHP
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
分享Angular http interceptors 拦截器使用(推荐)
2019/11/10 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
详解Python中find()方法的使用
2015/05/18 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
Python面向对象封装操作案例详解
2019/12/31 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
函授药学自我鉴定
2014/02/07 职场文书
《金钱的魔力》教学反思
2014/02/24 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
党员入党表决心的话
2014/03/11 职场文书
超市中秋节促销方案
2014/03/21 职场文书
大学活动总结格式
2014/04/29 职场文书
物流管理专业推荐信
2014/09/06 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python