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 相关文章推荐
Python3基础之输入和输出实例分析
Aug 18 Python
详解设计模式中的工厂方法模式在Python程序中的运用
Mar 02 Python
Python json模块dumps、loads操作示例
Sep 06 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
Aug 12 Python
Python PO设计模式的具体使用
Aug 16 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
python+selenium 脚本实现每天自动登记的思路详解
Mar 11 Python
Python模拟登录和登录跳转的参考示例
Oct 30 Python
python 实现简单的计算器(gui界面)
Nov 11 Python
python实现马丁策略回测3000只股票的实例代码
Jan 22 Python
python 基于opencv去除图片阴影
Jan 26 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的一个登录的类 [推荐]
2007/03/16 PHP
php 生成饼图 三维饼图
2009/09/28 PHP
PHP 伪静态技术原理以及突破原理实现介绍
2013/07/12 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
javascript原型链继承用法实例分析
2015/01/28 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
JavaScript闭包原理与用法学习笔记
2020/05/29 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
批处理与python代码混合编程的方法
2016/05/19 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
使用Python处理BAM的方法
2018/09/28 Python
python 拼接文件路径的方法
2018/10/23 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
python中比较两个列表的实例方法
2019/07/04 Python
python实现PID算法及测试的例子
2019/08/08 Python
Python3自定义json逐层解析器代码
2020/05/11 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
MySQL数据库事务的四大特性
2022/04/20 MySQL