相关文章推荐
有胆有识的人字拖  ·  matplotlib ...·  2 周前    · 
着急的野马  ·  matplotlib画3D图修改X,Y,Z, ...·  2 周前    · 
踏实的烤地瓜  ·  python ...·  2 周前    · 
斯文的香烟  ·  如何实现小程序的强制更新 | 微信开放社区·  1 年前    · 
聪明的领带  ·  蓝牙设备的容器 ID - Windows ...·  2 年前    · 
成熟的荔枝  ·  Docker笔记:Docker容器通信参数- ...·  2 年前    · 
悲伤的山羊  ·  解码美股“负资产”公司 投资美股时候,会发现 ...·  2 年前    · 
善良的烤地瓜  ·  在Windows上无法使用os.system ...·  2 年前    · 
Code  ›  基于Python实现matplotlib中动态更新图片(交互式绘图)开发者社区
python 编程语言 matlab matplotlib
https://cloud.tencent.com/developer/article/1055259
腼腆的伤疤
1 年前
waylon

基于Python实现matplotlib中动态更新图片(交互式绘图)

腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
waylon
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 基于Python实现matplotlib中动态更新图片(交互式绘图)

基于Python实现matplotlib中动态更新图片(交互式绘图)

作者头像
waylon
发布 于 2018-03-08 15:47:46
3.8K 0
发布 于 2018-03-08 15:47:46
举报
文章被收录于专栏: DHUtoBUAA DHUtoBUAA

最近在研究动态障碍物避障算法,在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
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
import numpy as np
import math
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=0000
IniObsY=4000
IniObsAngle=135
IniObsSpeed=10*math.sqrt(2)   #米/秒
print('开始仿真')
    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
 
推荐文章
有胆有识的人字拖  ·  matplotlib 合理设置colorbar和子图的对应关系_plt.colorbar与子图的距离
2 周前
着急的野马  ·  matplotlib画3D图修改X,Y,Z,colorbar的刻度值 - nxf_rabbit75
2 周前
踏实的烤地瓜  ·  python python的matplotlib调整colorbar和图像的距离 matplotlib设置colorbar_温柔一刀的技术博客_
2 周前
斯文的香烟  ·  如何实现小程序的强制更新 | 微信开放社区
1 年前
聪明的领带  ·  蓝牙设备的容器 ID - Windows drivers | Microsoft Learn
2 年前
成熟的荔枝  ·  Docker笔记:Docker容器通信参数-Link参数介绍-docker link 参数
2 年前
悲伤的山羊  ·  解码美股“负资产”公司 投资美股时候,会发现一个奇怪的事情:很多上市公司的净资产是负数。按照通常的概念,负资产的公司应该是财务状况遇到了困难,负... - 雪球
2 年前
善良的烤地瓜  ·  在Windows上无法使用os.system()调用bash脚本
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号