#-*-coding:gbk-*-
import matplotlib.pyplot as plt
import numpy as np
import os
import chardet
def datacreate(name1):
print('find ',name1)
path='./'+name
f = open(path,'rb') # 先用二进制打开
data = f.read() # 读取文件内容
file_encoding = chardet.detect(data).get('encoding') # 得到文件的编码格式
input1 = open(path,'r', encoding=file_encoding) #读取文件
source = input1.read()
source_list=source.split('\n') #每行分割
time_list=[]
process_list=[]
mean_list=[]
print('initialize.....')
for line in source_list:
if '刀具异常磨损均值判断' not in line: #识别存在平均值的行
continue
time=line.split('[')
#print(time)
time=time[1].split(']')
time_hour=time[0][6:8]+'-'+time[0][12:20] #时间
time_list.append(time_hour)
process_num=time[1].split('样本子程序号')
process_num=process_num[1].split(' ') #程序号
process_list.append(process_num[0])
mean_num=process_num[-1].split('当前均值')
mean_list.append(mean_num[-1]) #均值
var_process=sorted(list(set(process_list))) #去除重复值和排序
if '2007' in var_process:
var_process.remove('2007')
if '7300' in var_process: #去除无效的波形
var_process.remove('7300')
plt.figure(figsize=(20,90))
sum_process=len(var_process) #看看有几个图
for i,process in enumerate(var_process):
mean_sums=[]
time_display=[]
for k,process_num in enumerate((process_list)):
if process == process_num:
mean_sums.append(mean_list[k]) #提取对的程序号的值
time_display.append(time_list[k]) #同理,提取时间
plt.subplot(sum_process,1,i+1)
plt.plot(np.array(range(len(mean_sums))),np.array(mean_sums,dtype=float),label=str(process)) #numpy格式处理的快
interval=int((len(mean_sums))/10)
for m in range(10):
plt.text(interval*m,np.array(mean_sums,dtype=float).min(),str(time_display[interval*m]))
plt.text(0,np.array(mean_sums,dtype=float).max(),'numbers='+str(len(mean_sums)))
plt.grid(axis="y",ls='--')
plt.legend()
plt.savefig('./'+name.split('.')[0]+'.png')
print('have saved ...'+name.split('.')[0]+'.png')
name = input('输入文件名:')
if not os.path.isfile('./'+name):
print('can not find')
datacreate(name)
断刀log读取,及数据分析
最新推荐文章于 2024-10-02 10:53:34 发布