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 获取本机ip地址的两个方法
Feb 25 Python
python实现查询苹果手机维修进度
Mar 16 Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
python实现定时压缩指定文件夹发送邮件
Dec 22 Python
对django2.0 关联表的必填on_delete参数的含义解析
Aug 09 Python
django连接oracle时setting 配置方法
Aug 29 Python
Python中__repr__和__str__区别详解
Nov 07 Python
Python中Subprocess的不同函数解析
Dec 10 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
Python pysnmp使用方法及代码实例
Aug 24 Python
Python中可变和不可变对象的深入讲解
Aug 02 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
php4的彩蛋
2006/10/09 PHP
php中CI操作多个数据库的代码
2012/07/05 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
PHP goto语句用法实例
2019/08/06 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
JS面向对象编程详解
2016/03/06 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
15分钟深入了解JS继承分类、原理与用法
2019/01/19 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
记一次用ts+vuecli4重构项目的实现
2020/05/21 Javascript
Python深入学习之内存管理
2014/08/31 Python
python查看FTP是否能连接成功的方法
2015/07/30 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
python编写猜数字小游戏
2019/10/06 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
Python 实现一个计时器
2020/07/28 Python
常用的10个Python实用小技巧
2020/08/10 Python
用python实现一个简单的验证码
2020/12/09 Python
AmazeUI 模态窗口的实现代码
2020/08/18 HTML / CSS
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
面试自我介绍演讲稿
2014/04/29 职场文书
食品安全承诺书
2014/05/22 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
详解JS ES6编码规范
2021/05/07 Javascript
nginx日志格式分析和修改
2022/04/28 Servers
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers