Я использую plot.ly для отображения in_time и out_time в соответствующие даты.я использовал pandas для извлечения фрейма данных и подал на график для отображения линейного графика, но проблема в том, что время, отображаемое по оси y, не отсортировано, а данные времени перепутаны
def get_emp_graph (e_id): tls.set_credentials_file (имя пользователя = 'XXXXX', api_key = 'YYYYYY')
df = pd.DataFrame(list(AttendanceRecord.objects.filter(emp_id=e_id, ).values().order_by('date')))
df['in_time'] = df['in_time'].apply(lambda x: format(datetime.strptime(x, '%H:%M:%S'), '%H:%M:%S'))
df['out_time'] = df['out_time'].apply(lambda x: format(datetime.strptime(x, '%H:%M:%S'), '%H:%M:%S'))
df['date'] = df['date'].apply(lambda x: datetime.strptime(x, '%Y-%m-%d').date())
df['miti'] = df['miti'].apply(lambda x: datetime.strptime(x, '%Y/%m/%d').date())
print(df['in_time'])
print(df['date'])
trace1 = go.Scatter(
x=df['date'],
y=df['in_time'],
name='In Time',
mode='markers+lines',
text=e_id,
line=dict(color='#17BECF'),
)
trace2 = go.Scatter(
x=df['date'],
y=df['out_time'],
name='Out Time',
mode='markers+lines',
text=e_id,
line=dict(color='#7F7F7F'),
)
data = [trace1, trace2]
layout = go.Layout(title="Time Analysis", showlegend=True,yaxis=dict(autorange=True))
fig = go.Figure(data=data, layout=layout)
div = plt.plot(fig, filename='d3', auto_open=False)
print(div)
return div
График