2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Ubuntu 环境 中 python读取和保存 .txt .csv .json文件数据并绘制图形

Ubuntu 环境 中 python读取和保存 .txt .csv .json文件数据并绘制图形

时间:2021-10-31 16:58:13

相关推荐

Ubuntu 环境 中 python读取和保存 .txt  .csv .json文件数据并绘制图形

一、数据格式

二、程序read_imu.py

# coding=UTF-8import cv2import numpy as npimport matplotlib.pyplot as pltfrom matplotlib import pyplot as pltimport pylabimport math#从.txt中读取数据 的函数def loadData(fileName):inFile = open(fileName, 'r')#以只读方式打开某filename文件#定义2个空的list,用来存放文件中的数据t = []diff_x = []diff_y = []sum_xy = []for line in inFile:trainingSet = line.split(',')#对于上面数据每一行,按' '把数据分开,这里是分成两部分t.append(float(trainingSet[0]))#第一部分,即文件中的第一列数据逐一添加到list t中diff_x.append(float(trainingSet[1]))#第二部分,即文件中的第二列数据逐一添加到list accx中diff_y.append(float(trainingSet[2]))#第三部分,即文件中的第三列数据逐一添加到list accy中# sum_xy.append( math.sqrt(float(trainingSet[2])*float(trainingSet[2]) + float(trainingSet[1])*float(trainingSet[1])) )return (t, diff_x, diff_y)(t, diff_x, diff_y) = loadData('/home/jht/VIns_Code/GVINS/output/Position_diff.txt')(t1, diff_x1, diff_y1) = loadData('/home/jht/VIns_Code/GVINS/output/HPL_NO_fault.txt')pylab.figure(1)#pylab.figure(figsize=(8,6)) # 定义图的大小pylab.plot(t, diff_x,linestyle='--',label='X', color="red",linewidth=1) # 线的粗细、颜色、标签pylab.plot(t, diff_y,linestyle='--',label='Y', color="blue",linewidth=1)# 线的粗细、颜色、标签pylab.legend(loc='best',fontsize=20)# pylab.legend 放在 plot后面才能显示label, 并且设置标签的字体大小pylab.xlabel("time(s)",fontsize=20) # 横轴pylab.ylabel("Position error (m)",fontsize=20)# 纵轴pylab.xticks(fontsize=20) # 设置【坐标】标签字体大小pylab.yticks(fontsize=20) #pylab.title("Example") # 标题#pylab.xlim([0,5000]) # X轴数据长度设定#pylab.ylim([0,1]) # y轴数据长度设定pylab.show()#让绘制的图像在屏幕上显示出来

常用功能备注1 :

plt.figure(figsize=(8,6)) # 定义图的大小

plt.xlabel("time(s)") # 横轴

plt.ylabel("Volt") # 纵轴

pylab.xticks([]) # 不显示X轴的刻度

pylab.yticks([]) # 不显示Y轴的刻度

plt.title("Example")#标题

plt.plot(X,Y,label="$sin(X)$",color="red",linewidth=2) # 线的粗细、颜色、标签

plt.legend() # 显示图例

plt.savefig('train_cc_kl_11_20.jpg')# 保存图像

//fig.savefig(path+'输出图片.svg',format='svg',dpi=150)

// 其中,format表示输出图片的类型,可以为tiff、jpg、png等格式,按需选择;dpi为像素大小,dpi越大,图片越清晰,占用内存也越大。

tips:svg是矢量图格式,在插入word中裁剪放大缩小的时候清晰度基本不会改变,且色彩不失真 (输出后在你定义的路径下即可找到)

常用功能备注2:

设置X、Y轴的标签与轴的距离

pylab.xlabel("time (s)",fontsize=15,labelpad = 15.5)

pylab.ylabel("2D error (m)",fontsize=15,labelpad = 15.5)

特定区域画阴影图

程序如下:

# coding=UTF-8import cv2import numpy as npimport matplotlib.pyplot as pltfrom matplotlib import pyplot as pltfrom scipy.stats import normfrom scipy.stats.distributions import chi2from scipy.stats import ncx2import pylab# 为了画阴影图准备x = np.arange(0,6016,1) # 6016是数据的个数# plotting the lines y1 = 600 # 两条y轴线之间区域阴影的确认y2 = 0a = 1*x# x轴区域阴影的确认 #从.txt中读取数据 的函数def loadData(fileName):inFile = open(fileName, 'r')#以只读方式打开某filename文件#定义2个空的list,用来存放文件中的数据t = []Num_sate = []TS = []TD = []for line in inFile:trainingSet = line.split(',') t.append(float(trainingSet[0]) - 1931.078) Num_sate.append(float(trainingSet[1])) TS.append(float(trainingSet[2])) TD.append( chi2.ppf(0.99, df=float(trainingSet[1])) )return (t,Num_sate,TS,TD)(t1,Num_sate1,TS1,TD1) = loadData('/home/jht/VIns_Code/GVINS/output/Ts_gnss_13_01.txt')pylab.figure(1)pylab.plot(t1, TD1,linestyle='--',label='Y', color="red",linewidth=1) pylab.plot(t1, TS1,linestyle='--',label='Y', color="black",linewidth=1) # 填充黄色大色块,画阴影区域的程序pylab.fill_between(t1, y1, y2,where = (a > 700) & (a <= 5200),facecolor='yellow', alpha=0.3)pylab.show()#让绘制的图像在屏幕上显示出来# pylab.figure(2)# plt.plot(px,py)# plt.ylabel('some numbers')# plt.show()#ppf_1 = norm.ppf(q=0.99999, loc=0, scale=1) #print(ppf_1)#ppf_1 = chi2.ppf(0.9899, df=120.0) #print(ppf_1) #ppf_2 = chi2.ppf(0.919, df=120.0) #print(ppf_2)

效果图如下:

注意:

1、 loadData('/home/hltt3838/kitti_data/_10_03_drive_0042_sync/imu_data_100hz/imu.txt')

读取数据时,可以是具体的文件地址:'/home/hltt3838/kitti_data/_10_03_drive_0042_sync/imu_data_100hz/imu.txt'

也可以是文件的名:' imu.txt', 但是imu.txt要和read_imu.py程序放在一个文件夹里面 !

2、pylab.show() 绘图

在MATLAB中 如果需要连续显示两个图,用hold on; 而在 python 中 只要把pylab.show()放在最后面就行了!

三、程序运行

cd kitti_data/_10_03_drive_0042_sync/imu_data_100hz// 进入文件夹

vim read_imu.py//创建名字叫 read_imu.py 的文件,把程序放里面

// 输入命令:vim read_imu.py,也可以是其他形式,vim helloworld.cpp或者vim me.txt,在vim界面输入i(此时变成输入模式),开始编写程序(或者把程序拷贝进去),程序编写好后按Esc键,输入:wq完成编写并保存该文件

python read_imu.py//运行程序

结果如下:

注意:

如果我们想画二维轨迹图,需要加入头文件:import matplotlib.pyplot as plt

然后加入下面的程序即可(变通理解):

pylab.figure(2)

plt.plot(px,py)

plt.ylabel('some numbers')

plt.show()

备注:一张图像显示两个图

(t, err_x, err_y) = loadData('P_diff.txt')

(t1, HPL_x, HPL_y) = loadData('HPL_camimu.txt')

pylab.figure(1)

pylab.plot(t, err_x,'-.')

pylab.plot(t1, HPL_x,'-')

pylab.xlabel('Horizontal axis title')

pylab.ylabel('Vertical axis title')

pylab.figure(2)

pylab.plot(t, err_y,'-.')

pylab.plot(t1, HPL_y,'-')

pylab.xlabel('Horizontal axis title')

pylab.ylabel('Vertical axis title')

四、读取和保存

4. 1 txt文件的读取与保存

def text_save(filename, data):#filename为写入txt文件的路径,data为要写入数据列表.file = open(filename,'a')for i in range(len(data)):s = str(data[i]).replace('[','').replace(']','')#去除[],这两行按数据不同,可以选择s = s.replace("'",'').replace(',','') +'\n' #去除单引号,逗号,每行末尾追加换行符file.write(s)file.close()print("保存txt文件成功")

# 读取txt文件with open("Dpreci.txt") as f:line = f.readlines()Dpreci = []for line in line:Dpreci.append(float(line))print('读取txt成功')

4. 2 csv文件的读取与保存

def data_write_csv(file_name, datas):#file_name为写入CSV文件的路径,datas为要写入数据列表file_csv = codecs.open(file_name,'w+','utf-8')writer = csv.writer(file_csv, delimiter=' ', quotechar=' ', quoting=csv.QUOTE_MINIMAL)for data in datas:writer.writerow(str(data))print("保存csv文件成功")

4. 3 文件的读取

path_json = path + name + '.json'with open(path_json, 'r') as load_f:load_dict = json.load(load_f)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。