python+matplotlib實(shí)現(xiàn)動(dòng)態(tài)繪制圖片實(shí)例代碼(交互式繪圖)
本文研究的主要是python+matplotlib實(shí)現(xiàn)動(dòng)態(tài)繪制圖片(交互式繪圖)的相關(guān)內(nèi)容,具體介紹和實(shí)現(xiàn)代碼如下所示。
最近在研究動(dòng)態(tài)障礙物避障算法,在Python語(yǔ)言進(jìn)行算法仿真時(shí)需要實(shí)時(shí)顯示障礙物和運(yùn)動(dòng)物的當(dāng)前位置和軌跡,利用Anaconda的Python打包集合,在Spyder中使用Python3.5語(yǔ)言和matplotlib實(shí)現(xiàn)路徑的動(dòng)態(tài)顯示和交互式繪圖(和Matlab功能類似)。
Anaconda是一個(gè)用于科學(xué)計(jì)算的Python發(fā)行版,支持 Linux, Mac, Windows系統(tǒng),提供了包管理與環(huán)境管理的功能,可以很方便地解決多版本python并存、切換以及各種第三方包安裝問(wèn)題。Anaconda利用工具/命令conda來(lái)進(jìn)行package和environment的管理,并且已經(jīng)包含了Python和相關(guān)的配套工具。Anaconda官方地址:https://www.continuum.io/downloads/
matplotlib 是python最著名的繪圖庫(kù),它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地進(jìn)行制圖。而且也可以方便地將它作為繪圖控件,嵌入GUI應(yīng)用程序中。其中,matplotlib的pyplot子庫(kù)提供了和matlab類似的繪圖API,方便用戶快速繪制2D圖表,它的文檔相當(dāng)完備,并且 Gallery頁(yè)面中有上百幅縮略圖,打開之后都有源程序。matplotlib官方地址:http://matplotlib.org/
在調(diào)研matplotlib動(dòng)態(tài)繪制曲線方法中,和matlab相似有animation方法和交互式繪圖,但是animation方法靈活性不高,不太適合路徑的實(shí)時(shí)動(dòng)態(tài)顯示,本文最后采用交互式繪圖模(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.
當(dāng)繪圖語(yǔ)句中加入pl.ion()時(shí),表示打開了交互模式。此時(shí)python解釋器解釋完所有命令后,給你出張圖,但不會(huì)結(jié)束會(huì)話,而是等著你跟他交流交流。如果你繼續(xù)往代碼中加入語(yǔ)句,run之后,你會(huì)實(shí)時(shí)看到圖形的改變。當(dāng)繪圖語(yǔ)句中加入pl.ioff()時(shí)或不添加pl.ion()時(shí),表示打關(guān)了交互模式。此時(shí)要在代碼末尾加入pl.show()才能顯示圖片。python解釋器解釋完所有命令后,給你出張圖,同時(shí)結(jié)束會(huì)話。如果你繼續(xù)往代碼中加入語(yǔ)句,再不會(huì)起作用,除非你關(guān)閉當(dāng)前圖片,重新run。
采用交互式繪圖模式后,可以方便地繪出障礙物的運(yùn)動(dòng)軌跡和當(dāng)前位置,深切感覺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() # 清坐標(biāo)軸 close() # 關(guān)窗口 fig=plt.figure() ax=fig.add_subplot(1,1,1) ax.axis("equal") #設(shè)置圖像顯示的時(shí)候XY軸比例 plt.grid(True) #添加網(wǎng)格 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='.') #散點(diǎn)圖 #ax.lines.pop(1) 刪除軌跡 #下面的圖,兩船的距離 plt.pause(0.001) except Exception as err: print(err)
演示結(jié)果:
總結(jié)
以上就是本文關(guān)于python+matplotlib實(shí)現(xiàn)動(dòng)態(tài)繪制圖片實(shí)例代碼(交互式繪圖)的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- python使用matplotlib繪制圖片時(shí)x軸的刻度處理
- python如何利用matplotlib繪制并列雙柱狀圖并標(biāo)注數(shù)值
- Python數(shù)據(jù)分析之?Matplotlib?散點(diǎn)圖繪制
- Python數(shù)據(jù)分析Matplotlib?柱狀圖繪制
- Python數(shù)據(jù)分析之使用matplotlib繪制折線圖、柱狀圖和柱線混合圖
- 教你利用python的matplotlib(pyplot)繪制折線圖和柱狀圖
- python使用Matplotlib繪制多種常見圖形
- python數(shù)學(xué)建模之Matplotlib?實(shí)現(xiàn)圖片繪制
相關(guān)文章
教你用python實(shí)現(xiàn)12306余票查詢
今天就和大家一起來(lái)討論一下python實(shí)現(xiàn)12306余票查詢(pycharm+python3.7),一起來(lái)感受一下python爬蟲的簡(jiǎn)單實(shí)踐,需要的朋友可以參考下2021-06-06Python排序方法中sort和sorted的區(qū)別詳解
在python中常用的排序函數(shù)就是sort()和sorted()這兩個(gè)函數(shù),使用 sort() 或內(nèi)建函數(shù) sorted() 對(duì)列表進(jìn)行排序,本文將詳細(xì)介紹sorted和sort兩者之間的區(qū)別,感興趣的可以了解一下2023-08-08基于Python+Tkinter實(shí)現(xiàn)一個(gè)簡(jiǎn)易計(jì)算器
Tkinter作為Python的標(biāo)準(zhǔn)庫(kù),是非常流行的Python GUI工具,同時(shí)也是非常容易學(xué)習(xí)的。本文將利用Tkinter繪制一個(gè)簡(jiǎn)單的計(jì)算器,感興趣的可以試一試2022-01-01Python使用random模塊實(shí)現(xiàn)擲骰子游戲的示例代碼
這篇文章主要介紹了Python使用random模塊實(shí)現(xiàn)擲骰子游戲的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04python 爬取百度文庫(kù)并下載(免費(fèi)文章限定)
這篇文章主要介紹了python 爬取百度文庫(kù)并下載的示例,幫助大家更好的理解和學(xué)習(xí)python 爬蟲的相關(guān)知識(shí),感興趣的朋友可以了解下2020-12-12