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 11 Python
解决python2.7用pip安装包时出现错误的问题
Jan 23 Python
python列表生成式与列表生成器的使用
Feb 23 Python
使用Python实现在Windows下安装Django
Oct 17 Python
jupyter notebook 中输出pyecharts图实例
Apr 23 Python
详解DeBug Python神级工具PySnooper
Jul 03 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
Jul 07 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
Python中pymysql 模块的使用详解
Aug 12 Python
Python pandas库中的isnull()详解
Dec 26 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
Python参数传递及收集机制原理解析
Jun 05 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 函数语法介绍一
2009/06/14 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
PHPStrom中实用的功能和快捷键大全
2015/09/23 PHP
PHP中Array相关函数简介
2016/07/03 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
javascript使用appendChild追加节点实例
2015/01/12 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
Django权限机制实现代码详解
2018/02/05 Python
python 内置模块详解
2019/01/01 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
django框架cookie和session用法实例详解
2019/12/10 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
解决Python安装cryptography报错问题
2020/09/03 Python
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
外企测试工程师面试题
2015/02/01 面试题
写演讲稿要注意的六件事
2014/01/14 职场文书
年度考核自我评价
2014/01/25 职场文书
运动会入场词50字
2014/02/20 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
Python Django项目和应用的创建详解
2021/11/27 Python