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实现的可以拷贝或剪切一个文件列表中的所有文件
Apr 30 Python
python optparse模块使用实例
Apr 09 Python
在Python中操作字符串之startswith()方法的使用
May 20 Python
python自动zip压缩目录的方法
Jun 28 Python
解读! Python在人工智能中的作用
Nov 14 Python
python实现Floyd算法
Jan 03 Python
python监控键盘输入实例代码
Feb 09 Python
使用DataFrame删除行和列的实例讲解
Apr 08 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
如何使用python记录室友的抖音在线时间
Jun 29 Python
python三引号如何输入
Jul 06 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
如何开始收听短波广播
2021/03/01 无线电
PHP生成带有雪花背景的验证码
2006/10/09 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
javascript 模拟点击广告
2010/01/02 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
莱鸟介绍window.print()方法
2016/01/06 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
js实现滑动进度条效果
2020/08/21 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
深入讲解Python编程中的字符串
2015/10/14 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
python递归查询菜单并转换成json实例
2017/03/27 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
彻底搞懂Python字符编码
2018/01/23 Python
python实时监控cpu小工具
2018/06/21 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
python多进程实现文件下载传输功能
2018/07/28 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
研究生毕业鉴定
2014/01/29 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
法律讲堂观后感
2015/06/11 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
浅谈如何提高PHP代码的质量
2021/05/28 PHP