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程序运行效率的6个方法
Mar 31 Python
pandas修改DataFrame列名的方法
Apr 08 Python
Python实现爬虫爬取NBA数据功能示例
May 28 Python
Python查找第n个子串的技巧分享
Jun 27 Python
用python标准库difflib比较两份文件的异同详解
Nov 16 Python
解决使用PyCharm时无法启动控制台的问题
Jan 19 Python
Python3数字求和的实例
Feb 19 Python
基于Python打造账号共享浏览器功能
May 30 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
使用python matploblib库绘制准确率,损失率折线图
Jun 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
Home Coffee Roasting
2021/03/03 咖啡文化
PHP中include与require使用方法区别详解
2013/10/19 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
在Python中处理时间之clock()方法的使用
2015/05/22 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
python logging通过json文件配置的步骤
2020/04/27 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
运动会入场解说词300字
2014/01/25 职场文书
《童趣》教学反思
2014/02/19 职场文书
个人求职信范文
2014/05/24 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
刑事上诉状范文
2015/05/22 职场文书
2016保送生自荐信范文
2016/01/29 职场文书