不同版本中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 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
python爬虫常用的模块分析
Aug 29 Python
Python 迭代器工具包【推荐】
May 06 Python
Java多线程编程中ThreadLocal类的用法及深入
Jun 21 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
详解Python3序列赋值、序列解包
May 14 Python
如何更优雅地写python代码
Jul 02 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
Python实现点云投影到平面显示
Jan 18 Python
Python ORM框架Peewee用法详解
Apr 29 Python
Python collections模块的使用方法
Oct 09 Python
python如何实现递归转非递归
Feb 25 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数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
php像数组一样存取和修改字符串字符
2014/03/21 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
javascript Demo模态窗口
2009/12/06 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
微信小程序入门教程
2016/11/18 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
nodejs入门教程四:URL相关模块用法分析
2017/04/24 NodeJs
Vue 进阶教程之v-model详解
2017/05/06 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
Python中decorator使用实例
2015/04/14 Python
Python File readlines() 使用方法
2018/03/19 Python
用python爬取租房网站信息的代码
2018/12/14 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
Prototype是怎么扩展DOM的
2014/10/01 面试题
2015年民主生活会发言材料
2014/12/15 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
浅谈golang 中time.After释放的问题
2021/05/05 Golang
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL