不同版本中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 运算符 供重载参考
Jun 11 Python
Python中运行并行任务技巧
Feb 26 Python
详解Swift中属性的声明与作用
Jun 30 Python
python通过pip更新所有已安装的包实现方法
May 19 Python
matplotlib 输出保存指定尺寸的图片方法
May 24 Python
Python创建一个空的dataframe,并循环赋值的方法
Nov 08 Python
Python实现Singleton模式的方式详解
Aug 08 Python
Python字典生成式、集合生成式、生成器用法实例分析
Jan 07 Python
Python之关于类变量的两种赋值区别详解
Mar 12 Python
python实现FTP循环上传文件
Mar 20 Python
python使用selenium爬虫知乎的方法示例
Oct 28 Python
Python多线程 Queue 模块常见用法
Jul 04 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中chdir()函数用法实例
2014/11/13 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
初学JavaScript第二章
2008/09/30 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
纯js简单日历实现代码
2013/10/05 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
jquery获取radio值实例
2014/10/16 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
python服务器与android客户端socket通信实例
2014/11/12 Python
详解django自定义中间件处理
2018/11/21 Python
详解python读取和输出到txt
2019/03/29 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
跟单文员的岗位职责
2013/11/14 职场文书
十佳教师事迹材料
2014/01/11 职场文书
出纳担保书范文
2014/04/02 职场文书
田径运动会通讯稿
2014/09/13 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
教师学期个人总结
2015/02/11 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书