Python中matplotlib中文乱码解决办法


Posted in Python onMay 12, 2017

Matplotlib是Python的一个很好的绘图包,但是其本身并不支持中文(貌似其默认配置中没有中文字体),所以如果绘图中出现了中文,就会出现乱码。

matplotlib绘制图像有中文标注时会有乱码问题。

Python中matplotlib中文乱码解决办法

实例代码:

import matplotlib
import matplotlib.pyplot as plt

#定义文本框和箭头格式
decisionNode =dict(boxstyle="sawtooth",fc="0.8")
leafNode=dict(boxstyle="round4",fc="0.8")
arrow_args=dict(arrowstyle="<-")

#绘制带箭头的注解
def plotNode(nodeTxt,centerPt,parentPt,nodeType):
  createPlot.axl.annotate(nodeTxt,xy=parentPt,xycoords='axes fraction',xytext=centerPt,textcoords='axes fraction',va="center",ha="center",bbox=nodeType,arrowprops=arrow_args)

def createPlot():
  fig =plt.figure(1,facecolor='white')
  fig.clf()
  createPlot.axl=plt.subplot(111,frameon=False)
  plotNode(U'决策点',(0.5,0.1),(0.1,0.5),decisionNode)
  plotNode(U'叶节点',(0.8,0.1),(0.3,0.8),leafNode)
  plt.show()

解决办法:代码中引入字体

import matplotlib.pyplot as plt
import matplotlib

#定义自定义字体,文件名是系统中文字体
myfont = matplotlib.font_manager.FontProperties(fname='C:/Windows/Fonts/simkai.ttf') 
#解决负号'-'显示为方块的问题 
matplotlib.rcParams['axes.unicode_minus']=False 

decisionNode =dict(boxstyle="sawtooth",fc="0.8")
leafNode=dict(boxstyle="round4",fc="0.8")
arrow_args=dict(arrowstyle="<-")

def plotNode(nodeTxt,centerPt,parentPt,nodeType):
  createPlot.axl.annotate(nodeTxt,xy=parentPt,xycoords='axes fraction',xytext=centerPt,textcoords='axes fraction',va="center",ha="center",bbox=nodeType,arrowprops=arrow_args,fontproperties=myfont)

def createPlot():
  fig =plt.figure(1,facecolor='white')
  fig.clf()
  createPlot.axl=plt.subplot(111,frameon=False)
  plotNode(U'决策点',(0.5,0.1),(0.1,0.5),decisionNode)
  plotNode(U'叶节点',(0.8,0.1),(0.3,0.8),leafNode)
  plt.show()

Python中matplotlib中文乱码解决办法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用装饰器和元编程实现结构体类实例
Jan 28 Python
Python简单删除目录下文件以及文件夹的方法
May 27 Python
将Python代码打包为jar软件的简单方法
Aug 04 Python
Python模拟百度登录实例详解
Jan 20 Python
Python Socket编程详细介绍
Mar 23 Python
老生常谈Python进阶之装饰器
May 11 Python
Python整型运算之布尔型、标准整型、长整型操作示例
Jul 21 Python
python处理Excel xlrd的简单使用
Sep 12 Python
python探索之BaseHTTPServer-实现Web服务器介绍
Oct 28 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
Jan 26 Python
python网络编程之五子棋游戏
May 14 Python
python 用递归实现通用爬虫解析器
Apr 16 Python
使用Python对Csv文件操作实例代码
May 12 #Python
python 读取excel文件生成sql文件实例详解
May 12 #Python
Python实现读取并保存文件的类
May 11 #Python
Python使用defaultdict读取文件各列的方法
May 11 #Python
python中nan与inf转为特定数字方法示例
May 11 #Python
Python和C/C++交互的几种方法总结
May 11 #Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 #Python
You might like
thinkphp控制器调度使用示例
2014/02/24 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
python 正则表达式 概述及常用字符
2009/05/04 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
python创建子类的方法分析
2019/11/28 Python
Python接收手机短信的代码整理
2020/08/02 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
python制作抽奖程序代码详解
2021/01/15 Python
美国在线工具商店:Acme Tools
2018/06/26 全球购物
内部类的定义、种类以及优点
2013/10/16 面试题
计算机软件个人的自荐信范文
2013/12/01 职场文书
建筑工程专业学生的自我评价
2013/12/25 职场文书
会计专业自我评价
2014/02/12 职场文书
机电一体化求职信
2014/03/10 职场文书
彩妆大赛策划方案
2014/05/13 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书
Python 中 Shutil 模块详情
2021/11/11 Python