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数据结构之Array用法实例
Oct 09 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
Mar 30 Python
python查看zip包中文件及大小的方法
Jul 09 Python
python 垃圾收集机制的实例详解
Aug 20 Python
python编程之requests在网络请求中添加cookies参数方法详解
Oct 25 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
python绘制简单彩虹图
Nov 19 Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
关于python中的xpath解析定位
Mar 06 Python
python+selenium爬取微博热搜存入Mysql的实现方法
Jan 27 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
Apr 29 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
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
php读取csc文件并输出
2015/05/21 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
JQuery样式与属性设置方法分析
2019/12/07 jQuery
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
基于Python实现一个简单的银行转账操作
2016/03/06 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
python如何读写csv数据
2018/03/21 Python
将python图片转为二进制文本的实例
2019/01/24 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
pycharm导入源码的具体步骤
2020/08/04 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
档案室主任岗位职责
2014/02/12 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
中学生逃课检讨书
2015/02/17 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
朋友聚会开场白
2015/06/01 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL