Added time to x-axis for heart rate

This commit is contained in:
ayxan 2022-11-19 02:36:16 +04:00
parent 3288a3674e
commit 92d5b83a24

View File

@ -1,39 +1,69 @@
# sourcery skip: list-comprehension
import pandas as pd
import plotly.express as px import plotly.express as px
import json import json
import streamlit as st import streamlit as st
from datetime import (datetime,
timedelta)
from pathlib import Path from pathlib import Path
data_dir = Path(__file__).resolve().parent.parent / 'data' data_dir = Path(__file__).resolve().parent.parent / 'data'
st.set_page_config(page_title='Health Data Visualization', st.set_page_config(page_title = 'Health Data Visualization',
page_icon=':bar_chart:', page_icon = ':bar_chart:',
layout='wide') layout = 'wide')
with open(data_dir / 'huawei_health_data.json') as f: with open(data_dir / 'huawei_health_data.json') as f:
data = json.load(f) data = json.load(f)
heart_rate = [] heart_rate = []
for i in range(len(data)): for d in data:
if data[i]['type'] == 7: if d['type'] == 7:
heart_rate.append(float(data[i]['samplePoints'][0]['value'])) heart_rate.append(
{
'rate': float(d['samplePoints'][0]['value']),
'time': (datetime.fromtimestamp(
int(str(d['samplePoints'][0]['endTime'])[:10])
) + timedelta(
hours = int(data[0]['timeZone'][1:].replace('0', ''))
)
).strftime("%d-%m-%Y %X")
}
)
heart_rate = pd.DataFrame(heart_rate)
x = heart_rate['time']
y = heart_rate['rate']
st.sidebar.header('Split Data:') st.sidebar.header('Split Data:')
average_number = st.sidebar.number_input( average_number = st.sidebar.number_input(
f'Amount of data split (0 - {len(heart_rate)-1}): ', f'Amount of data split (0 - {len(heart_rate)-1}): ',
step=1, step = 1,
min_value=0, min_value = 0,
max_value=len(heart_rate)-1 max_value = len(heart_rate)-1
) )
if average_number > 1: if average_number > 1:
heart_rate2 = [] heart_rate2 = []
rates = list(y)
for i in range(0, len(heart_rate), average_number): for i in range(0, len(rates), average_number):
t = heart_rate[i:i + average_number] t = rates[i:i + average_number]
heart_rate2.append(sum(t) / len(t)) heart_rate2.append(sum(t) / len(t))
heart_rate = heart_rate2 x = range(len(heart_rate2))
y = heart_rate2
st.plotly_chart( st.plotly_chart(
px.line(x=range(len(heart_rate)), y=heart_rate) px.line(
x = x, y = y
)
.update_layout(
xaxis = dict(
rangeslider = dict(
visible = True
),
type = "-" # ['-', 'linear', 'log', 'date', 'category', 'multicategory']
)
)
) )