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中特殊函数集锦
Jul 27 Python
Python中Class类用法实例分析
Nov 12 Python
Python的socket模块源码中的一些实现要点分析
Jun 06 Python
简单谈谈Python中的json与pickle
Jul 19 Python
Python3实现抓取javascript动态生成的html网页功能示例
Aug 22 Python
pycharm远程调试openstack的图文教程
Nov 21 Python
Python实现找出数组中第2大数字的方法示例
Mar 26 Python
pandas groupby 分组取每组的前几行记录方法
Apr 20 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
结束运行python的方法
Jun 16 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 Python
用python发送微信消息
Dec 21 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
MyEclipse常用配置图文教程
2014/09/11 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
react项目从新建到部署的实现示例
2021/02/19 Javascript
Python中isnumeric()方法的使用简介
2015/05/19 Python
Django中处理出错页面的方法
2015/07/15 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
python二维图制作的实例代码
2020/12/03 Python
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
你所在的项目是如何确定版本号的
2015/12/28 面试题
工程造价专业大学生自荐信
2013/10/01 职场文书
自动化专业毕业生自荐信
2013/11/01 职场文书
应届毕业生个人求职自荐信
2014/01/06 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
个人债务授权委托书
2014/10/17 职场文书
晚会开场白和结束语
2015/05/29 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python