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列表推导式的使用方法
Nov 21 Python
Python返回真假值(True or False)小技巧
Apr 10 Python
Django框架下在URLconf中指定视图缓存的方法
Jul 23 Python
python实现简单购物商城
May 21 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 Python
如何利用python查找电脑文件
Apr 27 Python
Python中创建二维数组
Oct 17 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
PyQt5实现登录页面
May 30 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
Python加密与解密模块hashlib与hmac
Jun 05 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 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
js 字符串转换成数字的三种方法
2013/03/23 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
node.js cookie-parser之parser.js
2016/06/06 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
vue+iview实现分页及查询功能
2020/11/17 Vue.js
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
Python实现远程调用MetaSploit的方法
2014/08/22 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
python之super的使用小结
2018/08/13 Python
django中间键重定向实例方法
2019/11/10 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
Python 实现微信自动回复的方法
2020/09/11 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
车间机修工岗位职责
2014/02/28 职场文书
婚礼主持词开场白
2014/03/13 职场文书
公司股权转让协议书
2014/04/12 职场文书
办理房产证委托书
2014/09/18 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js