Matplotlib繪製動態實時曲線的方法改進

2021-08-22 04:37:04 字數 3090 閱讀 5312

已有的解決方案

存在的問題

def

method

(point):

es_time = np.zeros([point])

fig=plt.figure()

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

ax.axis("equal") #設定影象顯示的時候xy軸比例

ax.set_xlabel('horizontal position')

ax.set_ylabel('vertical position')

ax.set_title('vessel trajectory')

plt.grid(true) #新增網格

plt.ion() #interactive mode on

iniobsx=0000

iniobsy=4000

iniobsangle=135

iniobsspeed=10*math.sqrt(2) #公尺/秒

print('開始**')

for t in range(point):

t0 = time.time()

#障礙物船隻軌跡

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='.') #散點圖

#下面的圖,兩船的距離

plt.pause(0.001)

es_time[t] = 1000*(time.time() - t0)

return es_time

分析原因

改進方法

plt.cla()

ax.plot(obsx,obsy,'-g',marker='*') #散點圖

def

method_improve

(point):

definitial

(ax):

ax.axis("equal") #設定影象顯示的時候xy軸比例

ax.set_xlabel('horizontal position')

ax.set_ylabel('vertical position')

ax.set_title('vessel trajectory')

plt.grid(true) #新增網格

return ax

es_time = np.zeros([point])

fig=plt.figure()

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

ax = initial(ax)

plt.ion() #interactive mode on

iniobsx=0000

iniobsy=4000

iniobsangle=135

iniobsspeed=10*math.sqrt(2) #公尺/秒

print('開始**')

obsx = [0,]

obsy = [4000,]

for t in range(point):

t0 = time.time()

#障礙物船隻軌跡

plt.cla()

ax = initial(ax)

ax.plot(obsx,obsy,'-g',marker='*') #散點圖

#下面的圖,兩船的距離

plt.pause(0.001)

es_time[t] = 1000*(time.time() - t0)

return es_time

改進方法的改進
line.set_xdata(obsx)

line.set_ydata(obsy)

完整**:

def improvedmethod_improve(point):    

es_time = np.zeros([point])

fig=plt.figure()

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

ax.set_xlabel('horizontal position')

ax.set_ylabel('vertical position')

ax.set_title('vessel trajectory')

line = ax.plot([0,0],[4000,4000],'-g',marker='*')[0]

plt.grid(true) #新增網格

plt.ion() #interactive mode on

iniobsx=0000

iniobsy=4000

iniobsangle=135

iniobsspeed=10

*math.sqrt(2) #公尺/秒

print('開始**')

obsx = [0,]

obsy = [4000,]

for t in range(point):

t0 = time.time()

#障礙物船隻軌跡

*math.pi)*t)

*math.pi)*t)

line.set_xdata(obsx)

line.set_ydata(obsy)

ax.set_xlim([-200,10

*point+200])

ax.set_ylim([3800-10

*point,4200])

#下面的圖,兩船的距離

plt.pause(0.001)

es_time[t] = 1000

*(time.time() - t0)

return es_time

三種方法對比

Python Turtle繪製動態時鐘

coding utf 8 import turtle from datetime import 抬起畫筆,向前運動一段距離放下 def skip step turtle.penup turtle.forward step turtle.pendown def mkhand name,length 註...

Qt繪製動態曲線

ifndef qlinewidget h define qlinewidget h include include include include include include include include include include include include include incl...

MFC中繪製動態曲線

在工控監測領域,經常需要動態繪製曲線,觀察曲線的變化趨勢,繪製波形圖,繪製頻譜等。在前面4講中介紹了mfc經常用的teechart控制項和hight speed chart ctrl,這兩個都是mfc繪圖控制項的經典 另外,在qt中還有qwtplot和qcustomplot兩大神器 許多人問如何繪製...