python导入数据画折线图_python-matplotlib读取csv文件数据画折线图

看到同事用matlab分析数据,画折线图,很直观的把我们的试车数据(转速、车速、电压、电流)表现在图上,很轻易的就定位到了故障点。还用同样的方法分析了六轴传感器的加速度和角速度,解决了四元数算法、零飘问题。感觉画图分析数据很有用,这技能需要掌握才行。

网上找了一下,发现可用matlab、R语言、python画图。最终选了python,原因嘛,被“人生苦短我用python”,洗脑了好久。

因为c用得比较多,感觉python用得好懵,没有代码块{},竟然是用缩进来表示作用域。。。

(1)Csv数据

数据格式如下图,老大用树莓派收集的,为啥有个*号,我也不知道。

python导入数据画折线图_python-matplotlib读取csv文件数据画折线图_第1张图片

(2)遇到的坑

1、np.loadtxt,dtype=str导入的数据是numpy_str格式,用np.str_("0x1028d0d4")创建的字符串才能匹配。

python导入数据画折线图_python-matplotlib读取csv文件数据画折线图_第2张图片

2、创建数组

python导入数据画折线图_python-matplotlib读取csv文件数据画折线图_第3张图片

3、用切片把数据第5、6位提取出来。

python导入数据画折线图_python-matplotlib读取csv文件数据画折线图_第4张图片

(3)代码

importnumpy as npimportmatplotlib.pyplot as pltimportmatplotlib.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=0while (count

i= i + 1count= 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=0while (count

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.6i= i + 1count= count + 1plt.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。

python导入数据画折线图_python-matplotlib读取csv文件数据画折线图_第5张图片

单独的figure

python导入数据画折线图_python-matplotlib读取csv文件数据画折线图_第6张图片

你可能感兴趣的:(python导入数据画折线图)