1. 程式人生 > 程式設計 >python繪製動態曲線教程

python繪製動態曲線教程

從txt種獲取資料 並且通過動態曲線顯示

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
import time 
# Fixing random state for reproducibility 
np.random.seed(196) 
path = "feed.txt" 
file = open(path,'r') 
data = []
for line in file.readlines(): 
 lineArr = line.strip().split() 
 data.append(int(lineArr[0])) 
xdata = np.arange(0,len(data))
#初始資料繪圖 
dis = np.zeros(40) 
dis2 = dis 
fig,ax = plt.subplots() 
line,= ax.plot(dis) 
ax.set_ylim(0,100) 
plt.grid(True) 
ax.set_ylabel("distance: m") 
ax.set_xlabel("time") 
 
def update(frame): 
 global dis 
 global dis2 
 global line 
 #讀入模擬 
 a = frame 
 time.sleep(np.random.rand()/10) 
 #繪圖資料生成 
 dis[0:-1] = dis2[1:] 
 dis[-1] = a 
 dis2 = dis 
 #繪圖
 line.set_ydata(dis) 
 #顏色設定 
 plt.setp(line,'color','b','linewidth',2.0) 
 return line 
ani = animation.FuncAnimation(fig,update,frames=data,interval=10) 
plt.show() 

輸出:

python繪製動態曲線教程

補充拓展:Python繪製mes曲線例項

mes曲線:累計誤差曲線。一般用於測試生成的關鍵點與標定的關鍵點間的差異情況,差異一般是指兩點間的歐氏距離。

標記點座標 p_g(x,y)

預測點座標 p_t(x,y)

dist(p_g,p_t)可以計算兩點間的歐氏距離。

def dist(point1,point2):
 return ((point1[0] - point2[0]) ** 2 + (point1[1] - point2[1]) ** 2) ** 0.5

在人臉的關鍵點檢測中,dist()計算的距離/雙眼間距離 進行歸一化。將歸一化後的值append到MSE,呼叫drawCDFSingle(MSE)即可看到累計誤差曲線。

def drawCDFSingle(MSE):
 plotDataset = [[],[]]
 plt.grid()
 plt.xlabel("pixel error")
 plt.ylabel("Fraction of number of landmarks")
 plt.title('CDF')
 for i in range(len(MSE[0])):
  sumnum = 0
  mse_point = [x[i] for x in MSE]
  mse_point.sort()
  plotDataset[0]=[]
  plotDataset[1]=[]
  for t in range(len(mse_point)):
   plotDataset[0].append(float(t+1)/len(mse_point))
   # sumnum=sumnum+float(mse_point[t])
   plotDataset[1].append(float(mse_point[t]))
  plt.plot(plotDataset[1],plotDataset[0],color[i%len(color)]+linestyle[i%len(linestyle)],linewidth=2,label=i)
 plt.legend() # make legend
 plt.show()

python繪製動態曲線教程

以上這篇python繪製動態曲線教程就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。