不同版本中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当中的字符串和编码
Apr 25 Python
django 修改server端口号的方法
May 14 Python
Python实现的爬虫刷回复功能示例
Jun 07 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
Dec 15 Python
python redis 删除key脚本的实例
Feb 19 Python
Python后台开发Django的教程详解(启动)
Apr 08 Python
Laravel框架表单验证格式化输出的方法
Sep 25 Python
在python中利用dict转json按输入顺序输出内容方式
Feb 27 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
全网首秀之Pycharm十大实用技巧(推荐)
Apr 27 Python
python FTP编程基础入门
Feb 27 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
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
javascript getElementsByTagName
2011/01/31 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
2016/02/17 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
Python的多态性实例分析
2015/07/07 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
Python编程中类与类的关系详解
2019/08/08 Python
pytorch中的inference使用实例
2020/02/20 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
python中rc1什么意思
2020/06/19 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
环境工程毕业生自荐信
2013/11/17 职场文书
《我的信念》教学反思
2014/02/15 职场文书
小学安全教育材料
2014/02/17 职场文书
安全责任书怎么写
2014/07/28 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
整改落实自查报告
2014/11/05 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
师范生教育见习总结
2015/06/23 职场文书
创业计划书之甜品店
2019/09/18 职场文书