Matplotlib中文乱码的3种解决方案


Posted in Python onNovember 15, 2018

前言

Matplotlib是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。 Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和四个图形用户界面工具包。

然而最近在使用matplotlib默认情况会出现乱码问题,原则上matplotlib是支持中文的,只是在配置信息里没有中文字体的相关信息。

解决方法如下:

解决方案一:修改配置文件

matplotlib 从配置文件 matplotlibrc 中读取配置,字体相关内容也在其中。查询当前matplotlibrc 所在目录,可以用 get_configdir()函数:

import matplotlib
matplotlib.get_configdir()

通常存放位置:lib\site-packages\matplotlib\mpl-data\matplotlibrc

涉及到字体部分的设置内容为:

#font.family : sans-serif
#font.style : normal
#font.variant : normal
#font.weight : normal
#font.stretch : normal
## note that font.size controls default text sizes. To configure
## special text sizes tick labels, axes, labels, title, etc, see the rc
## settings for axes and ticks. Special text sizes can be defined
## relative to font.size, using the following values: xx-small, x-small,
## small, medium, large, x-large, xx-large, larger, or smaller
#font.size : 10.0
#font.serif : DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
#font.sans-serif : DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
#font.cursive : Apple Chancery, Textile, Zapf Chancery, Sand, Script MT, Felipa, cursive
#font.fantasy : Comic Sans MS, Chicago, Charcoal, ImpactWestern, Humor Sans, xkcd, fantasy
#font.monospace : DejaVu Sans Mono, Bitstream Vera Sans Mono, Computer Modern Typewriter, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace

matplotlib 默认使用的 font.family 是 sans-serif,即无衬线字体,可以看到在font.sans-serif中设置的全部为西文字体,这里的设置和css样式文件中设置差不多,只需要添加系统存在的字体名称即可(需要注意的是,matplotlib:

只支持ttf格式的字体),设置时需要将注释符号#去除。

解决方案二:重载配置文件

import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串

解决方案三:自定义字体

import numpy as np
import pylab as pl
import matplotlib.font_manager as fm

myfont = fm.FontProperties(fname=r'D:\Fonts\simkai.ttf') # 设置字体
t = np.arange(0.0,2.0 * np.pi,0.01) # 自变量取值范围
s = np.sin(t) # 计算正弦函数值
z = np.cos(t) # 计算余弦函数值
pl.plot(t,s,label='正弦')
pl.plot(t,z,label='余弦')
pl.xlabel('x-变量',fontproperties=myfont,fontsize=24) #设置标签
pl.ylabel('y-正弦余弦函数值',fontproperties=myfont,fontsize=24)
pl.title('sin-cos函数图像',fontproperties=myfont,fontsize=32) #图像标题
pl.legend(prop=myfont)
pl.show()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
将Python代码嵌入C++程序进行编写的实例
Jul 31 Python
谈谈Python进行验证码识别的一些想法
Jan 25 Python
pycharm远程调试openstack代码
Nov 21 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
火车票抢票python代码公开揭秘!
Mar 08 Python
python安装twisted的问题解析
Aug 21 Python
使用numba对Python运算加速的方法
Oct 15 Python
python中将正则过滤的内容输出写入到文件中的实例
Oct 21 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
Python的PIL库中getpixel方法的使用
Apr 09 Python
Python魔术方法专题
Jun 19 Python
Python使用sorted对字典的key或value排序
Nov 15 #Python
python并发和异步编程实例
Nov 15 #Python
Numpy截取指定范围内的数据方法
Nov 14 #Python
python numpy元素的区间查找方法
Nov 14 #Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 #Python
Python3爬取英雄联盟英雄皮肤大图实例代码
Nov 14 #Python
python 顺时针打印矩阵的超简洁代码
Nov 14 #Python
You might like
PHP原理之异常机制深入分析
2010/08/08 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
PHP常用的三种设计模式
2017/02/17 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
破除一些网站复制、右键限制
2006/11/04 Javascript
JavaScript 学习笔记(六)
2009/12/31 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
使用jquery解析XML的方法
2014/09/05 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
js中实例与对象的区别讲解
2019/01/21 Javascript
python处理PHP数组文本文件实例
2014/09/18 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
python 消费 kafka 数据教程
2019/12/21 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
公共事业管理本科生求职信
2013/10/07 职场文书
北大自主招生自荐信
2013/10/19 职场文书
电子商务毕业生求职信
2013/11/10 职场文书
战略合作协议书范本
2014/04/18 职场文书
路政管理求职信
2014/06/18 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
征求意见函
2015/06/05 职场文书
小学班主任心得体会
2016/01/07 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书