python+matplotlib实现动态绘制图片实例代码(交互式绘图)


Posted in Python onJanuary 20, 2018

本文研究的主要是python+matplotlib实现动态绘制图片(交互式绘图)的相关内容,具体介绍和实现代码如下所示。

最近在研究动态障碍物避障算法,在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('开始仿真')
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)
except Exception as err:
  print(err)

演示结果:

python+matplotlib实现动态绘制图片实例代码(交互式绘图)

总结

以上就是本文关于python+matplotlib实现动态绘制图片实例代码(交互式绘图)的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python 字典(dict)按键和值排序
Jun 28 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
使用tensorflow实现AlexNet
Nov 20 Python
Python进程间通信Queue实例解析
Jan 25 Python
python批量修改文件编码格式的方法
May 31 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
Jul 17 Python
python使用matplotlib库生成随机漫步图
Aug 27 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
最简单的matplotlib安装教程(小白)
Jul 28 Python
Python从文件中读取数据的方法步骤
Nov 18 Python
Python爬虫定时计划任务的几种常见方法(推荐)
Jan 15 Python
Python实现PS滤镜的旋转模糊功能示例
Jan 20 #Python
浅谈flask中的before_request与after_request
Jan 20 #Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 #Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 #Python
Python实现PS滤镜中马赛克效果示例
Jan 20 #Python
浅析python协程相关概念
Jan 20 #Python
Python实现可自定义大小的截屏功能
Jan 20 #Python
You might like
PHP图片上传代码
2013/11/04 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
iView框架问题整理小结
2018/10/16 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
Python3 入门教程 简单但比较不错
2009/11/29 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
在Django的视图中使用数据库查询的方法
2015/07/16 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
基于python实现名片管理系统
2018/11/30 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
简单说说tomcat的配置
2013/05/28 面试题
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
婚前财产协议书范本
2014/10/19 职场文书
大学军训的体会
2014/11/08 职场文书
2014年就业工作总结
2014/11/26 职场文书
喋血孤城观后感
2015/06/08 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS