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 相关文章推荐
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
Apr 16 Python
Python标准库defaultdict模块使用示例
Apr 28 Python
玩转python爬虫之爬取糗事百科段子
Feb 17 Python
tensorflow实现加载mnist数据集
Sep 08 Python
Python开发的十个小贴士和技巧及长常犯错误
Sep 27 Python
python-pyinstaller、打包后获取路径的实例
Jun 10 Python
Python 字符串类型列表转换成真正列表类型过程解析
Aug 26 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
python中编写函数并调用的知识点总结
Jan 13 Python
Pandas数据分析的一些常用小技巧
Feb 07 Python
pytorch常用数据类型所占字节数对照表一览
May 17 Python
python图片灰度化处理的几种方法
Jun 23 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
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
PHP 日志缩略名的创建函数代码
2010/05/26 PHP
PHP无敌近乎加密方式!
2010/07/17 PHP
PHP 代码规范小结
2012/03/08 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
php中动态变量用法实例
2015/06/10 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
详解vue项目打包步骤
2019/03/29 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
使用Python的判断语句模拟三目运算
2015/04/24 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
Numpy数组的广播机制的实现
2020/11/03 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
会展中心部门工作职责
2013/11/27 职场文书
大学生思想汇报范文
2013/12/31 职场文书
副厂长岗位职责
2014/02/02 职场文书
百年校庆节目主持词
2014/03/27 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
社区活动总结范文
2015/05/07 职场文书
给领导敬酒词
2015/08/12 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js