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使用xauth方式登录饭否网然后发消息
Apr 11 Python
python使用心得之获得github代码库列表
Jun 25 Python
实例讲解Python编程中@property装饰器的用法
Jun 20 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
实例讲解Python爬取网页数据
Jul 08 Python
Django配置MySQL数据库的完整步骤
Sep 07 Python
Pycharm创建项目时如何自动添加头部信息
Nov 14 Python
Python 使用type来定义类的实现
Nov 19 Python
Pytorch Tensor基本数学运算详解
Dec 30 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
python爬不同图片分别保存在不同文件夹中的实现
Apr 02 Python
Python中如何处理常见报错
Jan 18 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图像处理类代码分享
2012/01/19 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
利用js对象弹出一个层
2008/03/26 Javascript
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
js选择器全面解析
2016/06/27 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
详细分析python3的reduce函数
2017/12/05 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
2018/10/30 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
邮政员工辞职信
2014/01/16 职场文书
暑期培训随笔感言
2014/03/10 职场文书
信息工作经验交流材料
2014/05/28 职场文书
音乐教师求职信
2014/06/28 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python
Golang的继承模拟实例
2021/06/30 Golang
使用Redis实现实时排行榜功能
2021/07/02 Redis
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL