mirror of
https://github.com/aykhans/HuaweiHealthDataVisualization.git
synced 2025-04-18 23:09:43 +00:00
Added time to x-axis for heart rate
This commit is contained in:
parent
3288a3674e
commit
92d5b83a24
56
app/main.py
56
app/main.py
@ -1,39 +1,69 @@
|
||||
# sourcery skip: list-comprehension
|
||||
import pandas as pd
|
||||
import plotly.express as px
|
||||
import json
|
||||
import streamlit as st
|
||||
from datetime import (datetime,
|
||||
timedelta)
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
data_dir = Path(__file__).resolve().parent.parent / 'data'
|
||||
|
||||
st.set_page_config(page_title='Health Data Visualization',
|
||||
page_icon=':bar_chart:',
|
||||
layout='wide')
|
||||
st.set_page_config(page_title = 'Health Data Visualization',
|
||||
page_icon = ':bar_chart:',
|
||||
layout = 'wide')
|
||||
|
||||
with open(data_dir / 'huawei_health_data.json') as f:
|
||||
data = json.load(f)
|
||||
|
||||
heart_rate = []
|
||||
for i in range(len(data)):
|
||||
if data[i]['type'] == 7:
|
||||
heart_rate.append(float(data[i]['samplePoints'][0]['value']))
|
||||
for d in data:
|
||||
if d['type'] == 7:
|
||||
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:')
|
||||
average_number = st.sidebar.number_input(
|
||||
f'Amount of data split (0 - {len(heart_rate)-1}): ',
|
||||
step=1,
|
||||
min_value=0,
|
||||
max_value=len(heart_rate)-1
|
||||
step = 1,
|
||||
min_value = 0,
|
||||
max_value = len(heart_rate)-1
|
||||
)
|
||||
|
||||
if average_number > 1:
|
||||
heart_rate2 = []
|
||||
rates = list(y)
|
||||
|
||||
for i in range(0, len(heart_rate), average_number):
|
||||
t = heart_rate[i:i + average_number]
|
||||
for i in range(0, len(rates), average_number):
|
||||
t = rates[i:i + average_number]
|
||||
heart_rate2.append(sum(t) / len(t))
|
||||
heart_rate = heart_rate2
|
||||
x = range(len(heart_rate2))
|
||||
y = heart_rate2
|
||||
|
||||
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']
|
||||
)
|
||||
)
|
||||
)
|
Loading…
x
Reference in New Issue
Block a user