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解析模块(ConfigParser)使用方法
Dec 10 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
python使用递归的方式建立二叉树
Jul 03 Python
python获取点击的坐标画图形的方法
Jul 09 Python
python实现中文文本分句的例子
Jul 15 Python
基于python全局设置id 自动化测试元素定位过程解析
Sep 04 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
Oct 11 Python
Django3.0 异步通信初体验(小结)
Dec 04 Python
基于FME使用Python过程图解
May 13 Python
Keras之fit_generator与train_on_batch用法
Jun 17 Python
Python中bisect的用法及示例详解
Jul 20 Python
python 实现Requests发送带cookies的请求
Feb 08 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
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
Destoon实现多表查询示例
2014/08/21 PHP
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
详细介绍Python的鸭子类型
2016/09/12 Python
python中执行shell的两种方法总结
2017/01/10 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
python3大文件解压和基本操作
2017/12/15 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
Python中turtle库的使用实例
2019/09/09 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
python3代码中实现加法重载的实例
2020/12/03 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
单位未婚证明范本
2014/01/18 职场文书
打架检讨书500字
2014/01/29 职场文书
面试自我评价范文
2014/09/17 职场文书
英文自荐信范文
2015/03/25 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
详解redis在微服务领域的贡献
2021/10/16 Redis