不同版本中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自动扫雷实现方法
Jul 25 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
python 打印对象的所有属性值的方法
Sep 11 Python
pandas Dataframe行列读取的实例
Jun 08 Python
python pandas库中DataFrame对行和列的操作实例讲解
Jun 09 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
python实现关闭第三方窗口的方法
Jun 28 Python
基于python二叉树的构造和打印例子
Aug 09 Python
Django实现CAS+OAuth2的方法示例
Oct 30 Python
scrapy-splash简单使用详解
Feb 21 Python
整理Python中常用的conda命令操作
Jun 15 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
在PHP中使用模板的方法
2008/05/24 PHP
PHP __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
php二分查找二种实现示例
2014/03/12 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
JQuery jsonp 使用示例代码
2009/08/12 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
用Python写的图片蜘蛛人代码
2012/08/27 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
2018/05/16 Python
tensorflow更改变量的值实例
2018/07/30 Python
python 搜索大文件的实例代码
2019/07/08 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
python selenium 执行完毕关闭chromedriver进程示例
2019/11/15 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
大学生党课思想汇报
2013/12/29 职场文书
小学生新学期寄语
2014/01/19 职场文书
简历中自我评价怎么写
2014/02/12 职场文书
酒后驾车标语
2014/06/30 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
小班教师个人总结
2015/02/05 职场文书
青岛海底世界导游词
2015/02/11 职场文书
在校学生证明格式
2015/06/24 职场文书
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android