不同版本中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中实现两个字典(dict)合并的方法
Sep 23 Python
Python使用scrapy抓取网站sitemap信息的方法
Apr 08 Python
python中pass语句用法实例分析
Apr 30 Python
Tornado高并发处理方法实例代码
Jan 15 Python
Python中关键字global和nonlocal的区别详解
Sep 03 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
关于Python作用域自学总结
Jun 10 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
Python基于traceback模块获取异常信息
Jul 23 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
Oct 27 Python
Python深度学习之Pytorch初步使用
May 20 Python
Django框架之路由用法
Jun 10 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
NT IIS下用ODBC连接数据库
2006/10/09 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
phalcon框架使用指南
2016/02/23 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
原生JavaScript制作微博发布面板效果
2016/03/11 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
python属于解释语言吗
2020/06/11 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
大学老师推荐信
2014/02/25 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
委托公证书格式
2015/01/26 职场文书
出生证明范本
2015/06/15 职场文书
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android