不同版本中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管理Windows服务小脚本
Mar 12 Python
python迭代dict的key和value的方法
Jul 06 Python
python调用外部程序的实操步骤
Mar 04 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
在python中做正态性检验示例
Dec 09 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
Python面向对象魔法方法和单例模块代码实例
Mar 25 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
Apr 08 Python
python进行参数传递的方法
May 12 Python
python实现猜单词游戏
May 22 Python
Python操作word文档插入图片和表格的实例演示
Oct 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
Laravel 5框架学习之用户认证
2015/04/09 PHP
php版阿里云OSS图片上传类详解
2016/12/01 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
js微信分享API
2020/10/11 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
简单了解python中对象的取反运算符
2019/07/01 Python
python离线安装外部依赖包的实现
2020/02/13 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
销售高级职员求职信
2013/10/29 职场文书
大学在校生求职信范文
2013/11/21 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
社区好人好事材料
2014/12/26 职场文书
学校社团活动总结
2015/05/07 职场文书
《穷人》教学反思
2016/02/19 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS