Данные были преобразованы с использованием словаря Python в соответствии с Создание новой таблицы в Python пользователь titusarmah99 https://stackoverflow.com/users/8363478/titusarmah99
import datetime
import numpy as np
import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use("ggplot")
%matplotlib inline
%config InlineBackend.figure_format='svg'}
Чтение файлов Sandvik.log и Iscar.log.
data=[]
with open('Sandvik.log','r') as file:
for row in file:
data.append(row.rstrip('\n').split('|'))
columns =['DateTime','Xload']
data_dic = []
for row in data:
tmp ={}
tmp['DateTime']=row[0]
for i in range(1,len(row)-1):
if row[i] in columns:
tmp[row[i]]=row[i+1]
for c in columns:
if c not in tmp:
tmp[c] = '' #for rows which donot have the property
data_dic.append(tmp)
dfs = pd.DataFrame(data_dic)
print (dfs.dtypes)
# Reading Iscar.log
data=[]
with open('Iscar.log','r') as file:
for row in file:
data.append(row.rstrip('\n').split('|'))
columns =['DateTime','Xload']
data_dic = []
for row in data:
tmp ={}
tmp['DateTime']=row[0]
for i in range(1,len(row)-1):
if row[i] in columns:
tmp[row[i]]=row[i+1]
for c in columns:
if c not in tmp:
tmp[c] = '' #for rows which donot have the property
data_dic.append(tmp)
dfi = pd.DataFrame(data_dic)
print (dfi.dtypes)
# Converting the Xload and Datetime variables
dfs['Xload']=pd.to_numeric(dfs.Xload)
dfs['DateTime']= pd.to_datetime(dfs['DateTime'])
dfi['Xload']=pd.to_numeric(dfi.Xload)
dfi['DateTime']= pd.to_datetime(dfi['DateTime'])
# removing null data
dfs.dropna(inplace=True)
dfi.dropna(inplace=True)
# Reset the DataFrame
dfs.reset_index(drop=True, inplace=True)
dfi.reset_index(drop=True, inplace=True)
Отображение переменной Xload для фрейма данных Sandvik.
dfs.plot('DateTime', color = "red", figsize = (8, 6))
plt.ylim(0,100) # scale up to 100% for Y axis
# creating subtitles
plt.legend(['Sandvik'], loc='upper left')
plt.title("Machining Time vs. Xload Power")
plt.xlabel("Machining Time")
plt.ylabel("% in Xload variable")
Диаграмма данных в фрейме Sandvik
Отображение переменной Xload для кадра данных Iscar
dfi.plot('DateTime', color = "royalblue", figsize = (8, 6))
plt.ylim(0,100)
# creating subtitles
plt.legend(['Iscar'], loc='upper left')
plt.title("Machining Time vs Xload Power")
plt.xlabel("Machining Time")
plt.ylabel("% in Xload variable")
Диаграмма данных Iscar
Я не могу масштабировать часы, минуты и секунды по оси «X» после объединения обоих графиков.
plt.figure(figsize = (10, 6))
for frame in [dfs, dfi]:
plt.plot(frame['Xload'])
#plt.xlim()
plt.ylim(0,100)
# Criando as legendas
plt.legend(['Sandvik', 'Iscar'], shadow=True, loc='upper left')
plt.title("Machining Time vs Xload Power")
plt.xlabel("Machining Time")
plt.ylabel("% in Xload variable")
Сгруппированные графики
Я буду использовать шкалу только в секундах dt.strftime ('% S'). Мне нужно наложить графики (Sandvik и Iscar) и изменить упорядоченную шкалу оси X каждые 5 секунд .
dfs['DateTime'] = dfs['DateTime'].dt.strftime('%S')
dfi['DateTime'] = dfi['DateTime'].dt.strftime('%S')
# overlapping graphics
plt.figure(figsize = (10, 4))
for frame in [dfs, dfi]:
plt.plot(frame['Xload'])
plt.legend(['Sandvik', 'Iscar'], loc='upper left') #plot da legend
#plt.xlim()
plt.ylim(0,100)
# using seaborn
x1 = dfs['DateTime']
x2 = dfi['DateTime']
y1 = dfs['Xload']
y2 = dfi['Xload']
f, (ax1, ax2) = plt.subplots(ncols=2, nrows=1, sharey=True, figsize=(10,4))
ax = sns.lineplot(x=x1, y=y1, ax=ax1, color='blue', label='Sardvik', ci=None)
ax = sns.lineplot(x=x2, y=y2, ax=ax2, color='red', label='Iscar', ci=None)
ax1.set_xlim(min(x1), max(x1))
ax2.set_xlim(min(x2), max(x2))
ax1.set_xlabel('Machine Time')
ax2.set_xlabel('Machine Time')
ax1.set_ylabel('% in Xload variable')
ax1.set_xticks(ax1.get_xticks()[::5])
ax2.set_xticks(ax2.get_xticks()[::5])
plt.setp( ax1.xaxis.get_majorticklabels(), rotation=90 )
plt.setp( ax2.xaxis.get_majorticklabels(), rotation=90 )
![enter image description here](https://i.stack.imgur.com/HVysj.png)