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中文乱码的解决方法
Nov 04 Python
Python Tkinter基础控件用法
Sep 03 Python
Python中的连接符(+、+=)示例详解
Jan 13 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
详解python中TCP协议中的粘包问题
Mar 22 Python
django最快程序开发流程详解
Jul 19 Python
python实现抠图给证件照换背景源码
Aug 20 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
linux环境下安装python虚拟环境及注意事项
Jan 07 Python
python构造IP报文实例
May 05 Python
Pycharm 跳转回之前所在页面的操作
Feb 05 Python
python机器学习实现oneR算法(以鸢尾data为例)
Mar 03 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使用DES进行加密与解密的方法详解
2013/06/06 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
jQuery 渐变下拉菜单
2009/12/15 Javascript
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
Python写的贪吃蛇游戏例子
2014/06/16 Python
windows下安装Python和pip终极图文教程
2017/03/05 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
python求解汉诺塔游戏
2020/07/09 Python
python zip()函数的使用示例
2020/09/23 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
Etam德国:内衣精品店
2019/08/25 全球购物
如何通过jdbc调用存储过程
2012/04/19 面试题
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
毕业生就业自荐书
2013/12/15 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
函授教育个人学习的自我评价
2013/12/31 职场文书
《争吵》教学反思
2014/02/15 职场文书
环境日宣传活动总结
2014/07/09 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
mybatis 获取更新记录的id
2022/05/20 Java/Android