不同版本中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 相关文章推荐
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
Python网络爬虫中的同步与异步示例详解
Feb 03 Python
python opencv实现图片旋转矩形分割
Jul 26 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
使用Django简单编写一个XSS平台的方法步骤
Mar 25 Python
Python3.8中使用f-strings调试
May 22 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
python烟花效果的代码实例
Feb 25 Python
详解Python中namedtuple的使用
Apr 27 Python
python动态规划算法实例详解
Nov 22 Python
看看如何用Python绘制小米新版天价logo
Apr 20 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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
PHP详细彻底学习Smarty
2008/03/27 PHP
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
javascript中call和apply方法浅谈
2013/09/27 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
2015/02/18 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
微信小程序使用字体图标的方法
2019/05/23 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
Python的gevent框架的入门教程
2015/04/29 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
使用NumPy和pandas对CSV文件进行写操作的实例
2018/06/14 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
python 追踪except信息方式
2020/04/25 Python
pytorch SENet实现案例
2020/06/24 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
德国综合购物网站:OTTO
2018/11/13 全球购物
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
女性健康讲座主持词
2015/07/04 职场文书
运动员代表致辞
2015/07/29 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
详解thinkphp的Auth类认证
2021/05/28 PHP
nginx.conf配置文件结构小结
2022/04/08 Servers
使用Python开发冰球小游戏
2022/04/30 Python
Li list-style-image 图片垂直居中实现方法
2023/05/21 HTML / CSS