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 相关文章推荐
详解Django中的form库的使用
Jul 18 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 Python
python实现多线程网页下载器
Apr 15 Python
Python编程中NotImplementedError的使用方法
Apr 21 Python
pandas使用get_dummies进行one-hot编码的方法
Jul 10 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
Jul 22 Python
python dict乱码如何解决
Jun 07 Python
matplotlib subplot绘制多个子图的方法示例
Jul 28 Python
通俗讲解python 装饰器
Sep 07 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
PHP初学入门
2006/11/19 PHP
在PHP中使用curl_init函数的说明
2010/11/02 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
angular分页指令操作
2017/01/09 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
JavaScript模块详解
2017/12/18 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
Angular刷新当前页面的实现方法
2018/11/21 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
Python中的异常处理简明介绍
2015/04/13 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
如何签定毕业生就业协议书
2014/09/28 职场文书
镇副书记专题民主生活会对照检查材料思想汇报
2014/10/02 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
大专护理专业自荐信
2015/03/25 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
HTML常用标签超详细整理
2022/03/19 HTML / CSS
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫