Python 从文件读数据,固定行数截取数据,画箱型图

问题描述:实验数据以log形式导出,之前用Java写了一个简单的分析处理,Java IO:读取文件特定行,将结果输出控制台以及以追加形式写到文件中
但是为了能够直接画图,决定用Python重写一个。
log文件长这样
在这里插入图片描述
Talk is cheap , show me the code


import numpy as np
import matplotlib.pyplot as plt

#load data
log_file=open("$路径$.log")
line= log_file.readlines()
result=[]#保存实验结果
labels=[]#保存实验条件

for line in line:
    #略过空行
    if line=='\n':
        pass
    else:
        data=line.split(',')#以逗号为数据分界
        result.append(int(data[0]))#实验结果在第一列中
        labels.append([int(data[2]),int(data[3]),int(data[4])])#保存实验条件


#in model
i=360 #实验结果起始行数,每个实验条件保存30条结果
ttf_array=[result[i:i+30],result[i+30:i+60],result[i+60:i+90],result[i+90:i+120],result[i+120:i+150]]
L1 = labels[i::30]#从i行开始,到最后一条,每30条数据取一条。
print('Test as',L1)
#print(L1[0])



#boxplot
plt.rcParams['axes.unicode_minus']=False
plt.rcParams['font.sans-serif']=['Times New Roman']
plt.figure('for A') #实验对象名称
plt.grid(axis="y",ls=":",lw=1,color="grey")#图中虚线的展示形式
plt.boxplot(x=ttf_array,
            labels=[L1[0],L1[1],L1[2],L1[3],L1[4]],  #5组labels
            showmeans=True,#平均值
            showfliers = True, #异常点展示
            sym='b^', #异常点的展示形式
            boxprops=dict(color="blue"), #箱图边框色
            )

plt.ylabel('TTF')
plt.xlabel('change x')
plt.title('[A,B,C] A is BA,B is PA,C is Sin_load')
plt.ylim(0,15)
plt.show()

在这里插入图片描述

发布了27 篇原创文章 · 获赞 1 · 访问量 687

猜你喜欢

转载自blog.csdn.net/SUKI547/article/details/102659108