最近在研究动态障碍物避障算法,在Python语言进行算法仿真时需要实时显示障碍物和运动物的当前位置和轨迹,利用Anaconda的Python打包集合,在Spyder中使用Python3.5语言和matplotlib实现路径的动态显示和交互式绘图(和Matlab功能类似)。

Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。Anaconda官方地址:https://www.continuum.io/downloads/

matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。其中,matplotlib的pyplot子库提供了和matlab类似的绘图API,方便用户快速绘制2D图表,它的文档相当完备,并且 Gallery页面中有上百幅缩略图,打开之后都有源程序。matplotlib官方地址:http://matplotlib.org/

在调研matplotlib动态绘制曲线方法中,和matlab相似有animation方法和交互式绘图,但是animation方法灵活性不高,不太适合路径的实时动态显示,本文最后采用交互式绘图模(interactive mode)。具体参见http://matplotlib.org/users/shell.html。

The interactive property of the pyplot interface controls whether a figure canvas is drawn on every pyplot command. If interactive is False, then the figure state is updated on every plot command, but will only be drawn on explicit calls to draw(). When interactive is True, then every pyplot command triggers a draw.

当绘图语句中加入pl.ion()时,表示打开了交互模式。此时python解释器解释完所有命令后,给你出张图,但不会结束会话,而是等着你跟他交流交流。如果你继续往代码中加入语句,run之后,你会实时看到图形的改变。当绘图语句中加入pl.ioff()时或不添加pl.ion()时,表示打关了交互模式。此时要在代码末尾加入pl.show()才能显示图片。python解释器解释完所有命令后,给你出张图,同时结束会话。如果你继续往代码中加入语句,再不会起作用,除非你关闭当前图片,重新run。

采用交互式绘图模式后,可以方便地绘出障碍物的运动轨迹和当前位置,深切感觉matplotlib和matlab很类似,基本matlab的功能都可以在matplotlib中找到,所以matlab中的代码也可以很快移植到python中!

代码示例:

#-*- coding: utf-8 -*-

"""Created on Sat Mar 25 23:28:29 2017

@author: wyl"""

importmatplotlib.pyplot as pltfrom matplotlib.patches importCircleimportnumpy as npimportmath

plt.close()#clf() # 清图 cla() # 清坐标轴 close() # 关窗口

fig=plt.figure()

ax=fig.add_subplot(1,1,1)

ax.axis("equal") #设置图像显示的时候XY轴比例

plt.grid(True) #添加网格

plt.ion() #interactive mode on

IniObsX=0000IniObsY=4000IniObsAngle=135IniObsSpeed=10*math.sqrt(2) #米/秒

print(‘开始仿真‘)try:for t in range(180):#障碍物船只轨迹

obsX=IniObsX+IniObsSpeed*math.sin(IniObsAngle/180*math.pi)*t

obsY=IniObsY+IniObsSpeed*math.cos(IniObsAngle/180*math.pi)*t

ax.scatter(obsX,obsY,c=‘b‘,marker=‘.‘) #散点图

#ax.lines.pop(1) 删除轨迹

#下面的图,两船的距离

plt.pause(0.001)exceptException as err:print(err)

原文:http://www.cnblogs.com/DHUtoBUAA/p/6619099.html

python动态更新窗口上的图片_基于Python实现matplotlib中动态更新图片(交互式绘图)...相关推荐

  1. python开发微信订阅号如何申请_基于Python的微信公众平台二次开发(Python常用框架、订阅号开发、公众号开发)...

    1.1.课程的背景 微信公众平台的火热程度已经不用多言,无论是个人还是企业,政府还是商家,都已经开始搭建微信公众平台,微信的作用已经被各界人士认可.微信公众平台的技术需求市场缺口巨大.同时python ...

  2. python做一副54扑克牌发牌_基于Python制作一副扑克牌过程详解

    整理一下通过本文分享给大家, 该案例是通过 Python 类属性创建一幅除去大王.小王之后的 52 张扑克牌,并实现随机抽牌.排序.洗牌等功能: 创建一个纸牌类 一副扑克除去大王小王之外,剩下的 52 ...

  3. python实现单例模式的几种方式_基于Python中单例模式的几种实现方式及优化详解...

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

  4. 基于python的微信公众号开发教程_基于python的微信公众号开发教程

    应广大python学员的期盼,九宝老师精心制作的"基于python的微信公众号开发"视频教程即将上线. 该课程秉承九宝培训一贯的"简单.高效.快速"的讲课原则, ...

  5. 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略

    欧阳元东 摘要:Python为网页数据爬取和数据分析提供了很多工具包.基于Python的BeautifulSoup可以快速高效地爬取网站数据,Pandas工具能方便灵活地清洗分析数据,调用Python ...

  6. python京东自动签到领金豆_基于Python+Appium实现京东双十一自动领金币功能

    基于Python+Appium实现京东双十一自动领金币功能 发布时间:2020-09-28 02:22:30 来源:脚本之家 阅读:87 作者:一土小亘兄 背景:做任务领金币的过程很无聊,而且每天都是 ...

  7. python怎么爬取新浪微博数据中心_基于Python的新浪微博位置数据获取方法研究....

    [1] 新浪微博数据中心.2017微博用户发展报告[EB/OL].[2017-12-25]. http://data.weibo.com/report/reportDetail?id=404. [2] ...

  8. python豆瓣电影需研究的问题_基于Python对豆瓣电影数据爬虫的设计与实现

    本文基于 Python 实现了网络 爬虫豆瓣电影模块的数据信息, 可以根据爬虫得到的信息进行相 关的市场分析,具有一定的商业 价值. 摘 要 能够高效率得完成爬取目标数据. 2 网络爬虫的实现 本 文 ...

  9. gridview 在已有数据的基础上添加数据_基于Python的数据分析-1.语法基础(上)

    开篇 惯例:print('hello world') 运算符 比较运算符 返回类型为布尔值(True/False),多用于判断 数值运算符 顺序结构 代码按照顺序按行执行 判断结构 if 条件:代码块 ...

最新文章

  1. 数据化管理在餐饮业中的应用
  2. kingadmin页面开发
  3. window下使用rtl-sdr和sdrsharp
  4. 【Leetcode】创建二叉树
  5. 【CV】10分钟理解Focal loss数学原理与Pytorch代码
  6. 二叉树表达规定形式的代数表达式并计算表达式结果(无明显缺陷版本)
  7. C#调C++生成的dll报0x800736B1错误
  8. 作为程序猿,一定要知道的电脑快捷键和Eclipse快捷键
  9. 关于idea Tomcat部署的一个小坑
  10. Java使用easyexcel读大文件
  11. 中国开源产品如何走向世界?
  12. Appium探索—Mac OS Python版
  13. 独立游戏开发日志:2021年2月12日 改进版反弹跳
  14. OpenCV之图像二值化与去噪
  15. java将Word或Excel转换成PDF
  16. 普渡大学计算机科学师生比,全美最强STEM大学排行榜!你真的不考虑一下他们?...
  17. 抖音 Android 性能优化系列:启动优化之理论和工具篇
  18. opc服务器组态文件已写保护_opc服务器组态文件已写保护
  19. QT 自学内容 day03 listWidget ,treeWidget,tableWidget ,stackedWidget,模态,和非模态 多种 对话框的的使用
  20. 一年半的外包程序员心得体会

热门文章

  1. mysql 查找密码忘记,Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
  2. 关于我对c#的一些看法
  3. 数据库连接报错:Listener refused the connection with the following error: ORA-12505 的解决方法
  4. web安全之点击劫持攻击(clickjack)
  5. 外中断---汇编学习笔记
  6. RFC894--以太网上IP数据报的传输标准
  7. Java8 Stream 函数式接口
  8. java反射的用途及实现
  9. 互斥锁、自旋锁和自适应自旋锁
  10. 数据库操作技术--Spring jdbcTemplate