不同版本中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 布尔操作实现代码
Mar 23 Python
Python画图学习入门教程
Jul 01 Python
Python学习小技巧之列表项的拼接
May 20 Python
Python入门之三角函数sin()函数实例详解
Nov 08 Python
对numpy中shape的深入理解
Jun 15 Python
python3人脸识别的两种方法
Apr 25 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
Python爬虫解析网页的4种方式实例及原理解析
Dec 30 Python
python mysql 字段与关键字冲突的解决方式
Mar 02 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
pytorch 如何把图像数据集进行划分成train,test和val
May 31 Python
移除Selenium中window.navigator.webdriver值
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
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
python抽取指定url页面的title方法
2018/05/11 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
python实现文法左递归的消除方法
2020/05/22 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
打印机墨盒:123Inkjets
2017/02/16 全球购物
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
工资收入证明样本(5篇)
2014/09/16 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
同意报考公务员证明
2015/06/17 职场文书
社区服务活动感想
2015/08/11 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python