问题描述:实验数据以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()