python+matplotlib实现动态绘制图⽚实例代码(交互式绘
图)
本⽂研究的主要是python+matplotlib实现动态绘制图⽚(交互式绘图)的相关内容,具体介绍和实现代码如下所⽰。
  最近在研究动态障碍物避障算法,在Python语⾔进⾏算法仿真时需要实时显⽰障碍物和运动物的当前位置和轨迹,利⽤Anaconda的Python打包集合,在Spyder中使⽤Python3.5语⾔和matplotlib实现路径的动态显⽰和交互式绘图(和Matlab功能类似)。
  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.
matplotlib中subplot  当绘图语句中加⼊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.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+s(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实现动态绘制图⽚实例代码(交互式绘图)的全部内容,希望对⼤家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不⾜之处,欢迎留⾔指出。感谢朋友们对本站的⽀持!