python-matplotlib讀取csv文件數據畫折線圖

  看到同事用matlab分析數據,畫折線圖,很直觀的把咱們的試車數據(轉速、車速、電壓、電流)表如今圖上,很輕易的就定位到了故障點。還用一樣的方法分析了六軸傳感器的加速度和角速度,解決了四元數算法、零飄問題。感受畫圖分析數據頗有用,這技能須要掌握才行。python

  網上找了一下,發現可用matlab、R語言、python畫圖。最終選了python,緣由嘛,被「人生苦短我用python」,洗腦了很久。算法

  由於c用得比較多,感受python用得好懵,沒有代碼塊{},居然是用縮進來表示做用域。。。數組

(1)Csv數據spa

  數據格式以下圖,老大用樹莓派收集的,爲啥有個*號,我也不知道。3d

 

 (2)遇到的坑code

  一、np.loadtxt,dtype=str導入的數據是numpy_str格式,用np.str_("0x1028d0d4")建立的字符串才能匹配。blog

 

二、建立數組作用域

 

三、用切片把數據第五、6位提取出來。字符串

 

(3)代碼it

import numpy as np import matplotlib.pyplot as plt import matplotlib.dates as mdates # np.set_printoptions(threshold=np.inf) # 去掉print省略的內容
 
# 導入數據
time,id,info=np.loadtxt('20190711.csv',dtype=str,delimiter=',',usecols=(0,1,2),unpack=True) vmcId = np.str_("0x1028d0d4") # i爲匹配ID的幀數量
i = 0 count = 0 while (count < np.size(time)): if id[count] == vmcId: i = i + 1 count = count + 1

# 建立數組
print(i) engineTime = np.zeros(i) engineSpeed = np.zeros(i, dtype = np.int) vehicleSpeed = np.zeros(i, dtype = np.int) # 將數據保存至數組
i = 0 count = 0 while (count < np.size(time)): if id[count] == vmcId: engineTime[i] = float(time[count]) engineSpeed[i] = int(info[count][11:13]+info[count][9:11],16) vehicleSpeed[i] = engineSpeed[i]/7.42/60*1.96*3.6 i = i + 1 count = count + 1 plt.figure(1)                # 第一個圖形
plt.subplot(2,1,1)             # 第一個圖形的第一個子圖。當作2行1列,當前爲第1行
plt.plot(engineTime,engineSpeed,linewidth=0.5) plt.subplot(2,1,2)             # 第一個圖形的第二個子圖
plt.plot(engineTime,vehicleSpeed,linewidth=0.5) plt.figure(2)                # 第一個圖形 # 默認subplot(1,1,1) 
plt.plot(engineTime,engineSpeed,'g-',linewidth=0.5) plt.show()

 


 
 
(4)效果圖
  兩個折線圖都在同一個figure。

 

 

  單獨的figure

相關文章
相關標籤/搜索