不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决


Posted in Python onSeptember 24, 2017

前言

本文主要给大家介绍了关于不同版本中Python matplotlib.pyplot.draw()界面绘制异常的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

在 Ubuntu系统上进行如下配置:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python-dev
$ sudo apt-get install python-pip
$ sudo pip install --upgrade pip
$ sudo pip install --upgrade urllib3
$ sudo pip install numpy
$ sudo pip install matplotlib

之后执行如下测试代码:

import sys
import numpy as np
import matplotlib.pyplot as plt
 
plt.ion()
(fig, axis) = plt.subplots()
bar_plot = axis.barh(0, 8,linewidth = 0)
bar_plot.color= '#ffff00'
for i in range(20):
 axis.set_xlim(xmax = max(i + 1, 10))
 plt.draw()
 
if sys.version_info < (3, 0):
 raw_input("Press Enter to continue...")
else:
 input("Press Enter to continue...")

上面的测试代码在 Ubuntu 14.04.5版本上是可以正常执行的,对应的 matplotlib的版本是 matplotlib 1.3.1,但是放到 Ubuntu 16.04.2系统上则是无法正常显示的,对应的 matplotlib的版本是 matplotlib 1.5.1。

造成这个问题的原因在于 matplotlib.pyplot.draw() ,这个函数行为的改变,早期这个函数是同步更新界面的,后来的版本却变成了空闲异步更新界面,只有当 matplotlib.pyplot.pause(interval)被调用的时候才会刷新界面。

所以只需要上面的代码修改成如下即可在不同版本之间兼容:

import sys
import numpy as np
import matplotlib.pyplot as plt
 
plt.ion()
(fig, axis) = plt.subplots()
bar_plot = axis.barh(0, 8,linewidth = 0)
bar_plot.color= '#ffff00'
for i in range(20):
 axis.set_xlim(xmax = max(i + 1, 10))
 plt.draw()
 plt.pause(0.00001)
 
if sys.version_info < (3, 0):
 raw_input("Press Enter to continue...")
else:
 input("Press Enter to continue...")

注意:我们在 matplotlib.pyplot.draw()调用后面增加了 matplotlib.pyplot.pause(interval)的调用。

查看 matplotlib的版本使用如下代码:

import matplotlib as mpl
print mpl.__version__

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

参考链接

  • real-time plotting in while loop with matplotlib
  • matplotlib Troubleshooting
  • How to know the version of installed pylab?
Python 相关文章推荐
Python日期操作学习笔记
Oct 07 Python
Python读写Redis数据库操作示例
Mar 18 Python
Python之父谈Python的未来形式
Jul 01 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
浅谈python jieba分词模块的基本用法
Nov 09 Python
Python分析学校四六级过关情况
Nov 22 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
python中多个装饰器的执行顺序详解
Oct 08 Python
python flask搭建web应用教程
Nov 19 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
Sep 02 Python
Django如何实现内容缓存示例详解
Sep 24 #Python
Django查询数据库的性能优化示例代码
Sep 24 #Python
python学习教程之使用py2exe打包
Sep 24 #Python
python数据结构之列表和元组的详解
Sep 23 #Python
Python字符串和字典相关操作的实例详解
Sep 23 #Python
使用Turtle画正螺旋线的方法
Sep 22 #Python
详谈python read readline readlines的区别
Sep 22 #Python
You might like
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
PHP 无限级分类
2017/05/04 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
2010/03/09 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
js使用递归解析xml
2014/12/12 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
Angular.js跨controller实现参数传递的两种方法
2017/02/20 Javascript
javascript内存分配原理实例分析
2017/04/10 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
python 读写txt文件 json文件的实现方法
2016/10/22 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
行政人员岗位职责
2013/12/08 职场文书
给同学的道歉信
2014/01/16 职场文书
加强作风建设心得体会
2014/10/22 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
Python+Appium自动化测试的实战
2021/06/30 Python
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android