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 相关文章推荐
Python中bisect的用法
Sep 23 Python
Python的Django框架中URLconf相关的一些技巧整理
Jul 18 Python
Python Socket编程详细介绍
Mar 23 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
Python星号*与**用法分析
Feb 02 Python
tensorflow实现简单的卷积网络
May 24 Python
tensorflow实现逻辑回归模型
Sep 08 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
python下载库的步骤方法
Oct 12 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
基于Python爬虫采集天气网实时信息
Jun 05 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
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
php中去除所有js,html,css代码
2010/10/12 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
javascript 定义初始化数组函数
2009/09/07 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
面试常见的js算法题
2017/03/23 Javascript
AJAX在JQuery中的应用详解
2019/01/30 jQuery
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
Python实现数据库并行读取和写入实例
2017/06/09 Python
老生常谈python之鸭子类和多态
2017/06/13 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
Pycharm 设置自定义背景颜色的图文教程
2018/05/23 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
Django admin组件的使用
2020/10/24 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
小学生开学第一课活动方案
2014/03/27 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
公路施工安全责任书
2015/05/08 职场文书
村主任当选感言
2015/08/01 职场文书
同学聚会祝酒词
2015/08/10 职场文书