不同版本中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中处理字符串之isalpha()方法的使用
May 18 Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 Python
独特的python循环语句
Nov 20 Python
python数据处理实战(必看篇)
Jun 11 Python
Python模拟用户登录验证
Sep 11 Python
python批量修改ssh密码的实现
Aug 08 Python
详解python列表(list)的使用技巧及高级操作
Aug 15 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
Python爬取12306车次信息代码详解
Aug 12 Python
如何基于python实现年会抽奖工具
Oct 20 Python
Django路由层如何获取正确的url
Jul 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
php中计算程序运行时间的类代码
2012/11/03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
jQuery autocomplete插件修改
2009/04/17 Javascript
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
layui分页效果实现代码
2017/05/19 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
python执行使用shell命令方法分享
2017/11/08 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
市场营销专业个人求职信范文
2013/12/14 职场文书
市政施工员自我鉴定
2014/01/15 职场文书
物流管理专业自荐信
2014/06/23 职场文书
2014年个人委托书范本
2014/10/13 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS