versión con datos solo de las "fuentes primarias" y por etapas

se muestran solo las fuentes: comidas, glucómetro, reloj, microbiota y
visitas

se muestran valores dentro de las etapas de los participantes. si un
participante tiene etapas no definidas, entonces los conteos de sus
mediciones no se mostrarán en esas etapas (tendrán valor 0).

no se muestran asociaciones entre las comidas y las mediciones, solo
son conteos de los datos existentes.
parent 95cb5e3a
......@@ -13,10 +13,12 @@ Etapas_e = 3
Comidas_E1_e = 42
Comidas_E2_e = 9
Comidas_E3_e = 9
Comidas_totales_e = Comidas_E1_e + Comidas_E2_e + Comidas_E3_e
Glucometro_e = 42
#Comidas_totales_e = Comidas_E1_e + Comidas_E2_e + Comidas_E3_e
Comidas_totales_e = 42
Glucometro_e = 14
Total_pacientes = len(data.index)
Total_incluidos = (data["incluido"] == 1 ).sum()
data = data.query("incluido == 1")
scat = px.scatter(data, x="Days_glucose", y="Selectedfoods",size="medibles")
external_stylesheets = [
{
......@@ -40,10 +42,17 @@ app.layout = html.Div(
),
html.P(
children=(
"Recuento de los datos asociados a " + str(len(data.index)) + " participantes "
str(len(data.index)) + " participantes. "
),
className="header-description",
),
html.P(
children=(
str(Total_incluidos) + " están incluidos en el análisis. "
),
className="header-description",
),
],
className="header",
),
......@@ -55,7 +64,7 @@ app.layout = html.Div(
{"label":1, "value":1},
{"label":2, "value":2},
{"label":3, "value":3},
{"label":"Global", "value":99}
#{"label":"Global", "value":99}
],
# options=[
# {
......@@ -64,7 +73,7 @@ app.layout = html.Div(
# }
# for etapa in [1,2,3]
# ],
value=99,
value=1,
clearable=False,
searchable=False,
className="dropdown",
......@@ -73,13 +82,13 @@ app.layout = html.Div(
),
html.Div(children=[
html.Div(children=[
"Selectedfoods",
"Comidas",
dcc.Slider(
id="min_comida",
id="min_comidas",
min=1,
max=Comidas_totales_e,
value=Comidas_totales_e,
marks={1:"1",10:"10", 42:"42", Comidas_totales_e:str(Comidas_totales_e)}
marks={1:"1",12:"15", 21:"21",30:"30",42:"42", Comidas_totales_e:str(Comidas_totales_e)}
),
"Dias con Glucómetro",
dcc.Slider(
......@@ -87,15 +96,15 @@ app.layout = html.Div(
min=1,
max=Glucometro_e,
value=Glucometro_e,
marks={1:"1", 14:"14", 28:"28", 42:"+42"}
marks={1:"1", 7:"7", 14:"14", 28:"28", 42:"+42"}
),
"AUCs",
"Dias con reloj",
dcc.Slider(
id="min_aucs",
id="min_reloj",
min=1,
max=Comidas_totales_e,
value=Comidas_totales_e,
marks={1:"1", 10:"10", 42:"42", Comidas_totales_e:str(Comidas_totales_e)}
max=Glucometro_e,
value=Glucometro_e,
marks={1:"1", 7:"7", 14:"14", 28:"28", 42:"+42"}
),
"Microbiota",
dcc.Slider(
......@@ -166,36 +175,69 @@ app.layout = html.Div(
@app.callback(
Output("multi-chart", "figure"),
Input("etapaSel", "value"),
Input("min_comida", "value"),
Input("min_comidas", "value"),
Input("min_glucosa", "value"),
Input("min_aucs", "value"),
Input("min_reloj", "value"),
Input("min_microbiota", "value"),
Input("min_fismet", "value"),
Input("min_qs", "value"),
Input("min_visitas", "value"),
)
def update_charts(etapaSel,min_comida, min_glucosa, min_aucs, min_microbiota, min_fismet,min_qs, min_visitas):
def update_charts(etapaSel,min_comidas, min_glucosa, min_reloj, min_microbiota, min_visitas):
total_data = len(data.index)
gauges = {
'shape': "bullet",
'axis': {'range': [None, 100]},
'steps': [
{'range': [0, 25], 'color': "red"},
{'range': [25, 75], 'color': "yellow"},
{'range': [75, 100], 'color': "green"}],
{'range': [0, 25], 'color': "lightcyan"},
{'range': [25, 50], 'color': "lightblue"},
{'range': [50, 75], 'color': "skyblue"},
{'range': [75, 100], 'color': "steelblue"}],
'bar': {'color': "blue"},
}
numbers = { 'suffix':'%', 'valueformat':'d'}
modes = "number+gauge"
comidas_data = pd.DataFrame()
glucosa_data = pd.DataFrame()
relojes_data = pd.DataFrame()
microbiota_data = pd.DataFrame()
fismet_data = pd.DataFrame()
qs_data = pd.DataFrame()
visitas_data = pd.DataFrame()
if etapaSel == 1:
visitas_data = data.loc[data["visita1"] != "0"]
microbiota_data = data.loc[data["MV1"] != 0]
glucosa_data = data.query("glucosa_e1 >= @min_glucosa")
comidas_data = data.query("Comidas_FoodsE1 >= @min_comidas")
reloj_data = data.query("pasos_e1 >= @min_reloj")
if etapaSel == 2:
visitas_data = data.loc[data["visita2"] != "0"]
microbiota_data = data.loc[data["MV2"] != 0]
glucosa_data = data.query("glucosa_e2 >= @min_glucosa")
comidas_data = data.query("Comidas_FoodsE2 >= @min_comidas")
reloj_data = data.query("pasos_e2 >= @min_reloj")
if etapaSel == 3:
visitas_data = data.loc[data["visita3"] != "0"]
microbiota_data = data.loc[data["MV3"] != 0]
glucosa_data = data.query("glucosa_e3 >= @min_glucosa")
comidas_data = data.query("Comidas_FoodsE3 >= @min_comidas")
reloj_data = data.query("pasos_e3 >= @min_reloj")
if etapaSel == 99:
comidas_data = data.query("Selectedfoods >= @min_comidas")
glucosa_data = data.query("Days_glucose >= @min_glucosa")
reloj_data = data.query("pasos_e3 >= @min_reloj")
microbiota_data = data.query("MT >= @min_microbiota")
visitas_data = data.query("Nvisitas >= @min_visitas")
multi = go.Figure()
comidas_data = data.query("Selectedfoods >= @min_comida")
multi.add_trace(go.Indicator(
value = 100 * len(comidas_data.index) / Total_pacientes,
value = 100 * len(comidas_data.index) / Total_incluidos,
domain = {'x': [0.25, 1], 'y': [0.90, 1]},
title = {'text': "Comidas"},
mode = modes,
......@@ -213,73 +255,32 @@ def update_charts(etapaSel,min_comida, min_glucosa, min_aucs, min_microbiota, mi
gauge = gauges
))
if etapaSel == 1:
medibles_data = data.query("FoodsE1 >= @min_aucs")
if etapaSel == 2:
medibles_data = data.query("FoodsE2 >= @min_aucs")
if etapaSel == 3:
medibles_data = data.query("FoodsE3 >= @min_aucs")
if etapaSel == 99:
medibles_data = data.query("medibles >= @min_aucs")
multi.add_trace(go.Indicator(
value = 100 * len(medibles_data.index) / Total_pacientes,
value = 100 * len(reloj_data.index) / Total_incluidos,
domain = {'x': [0.25, 1], 'y': [0.7, 0.8]},
title = {'text': "AUCs"},
mode = modes,
number = numbers,
gauge = gauges
))
relojes_data = data.query("ConPasos > 0")
multi.add_trace(go.Indicator(
value = 100 * len(relojes_data.index) / Total_pacientes,
domain = {'x': [0.25, 1], 'y': [0.6, 0.7]},
title = {'text': "Reloj"},
mode = modes,
number = numbers,
gauge = gauges
))
microbiota_data = data.query("MT >= @min_microbiota")
multi.add_trace(go.Indicator(
value = 100 * len(microbiota_data.index) / Total_pacientes,
value = 100 * len(microbiota_data.index) / Total_incluidos,
# value = min_microbiota,
domain = {'x': [0.25, 1], 'y': [0.5, 0.6]},
domain = {'x': [0.25, 1], 'y': [0.6, 0.7]},
title = {'text': "Microbiota"},
mode = modes,
number = numbers,
gauge = gauges
))
fismet_data = data.query("FISMET >= @min_fismet")
multi.add_trace(go.Indicator(
value = 100 * len(fismet_data.index) / Total_pacientes,
# value = min_microbiota,
domain = {'x': [0.25, 1], 'y': [0.4, 0.5]},
title = {'text': "Fisiomet"},
mode = modes,
number = numbers,
gauge = gauges
))
qs_data = data.query("QS >= @min_qs")
multi.add_trace(go.Indicator(
value = 100 * len(qs_data.index) / Total_pacientes,
# value = min_microbiota,
domain = {'x': [0.25, 1], 'y': [0.3, 0.4]},
title = {'text': "QS"},
mode = modes,
number = numbers,
gauge = gauges
))
visitas_data = data.query("Nvisitas >= @min_visitas")
multi.add_trace(go.Indicator(
value = 100 * len(visitas_data.index) / Total_pacientes,
domain = {'x': [0.25, 1], 'y':[0.1, 0.2]},
value = 100 * len(visitas_data.index) / Total_incluidos,
domain = {'x': [0.25, 1], 'y':[0.5, 0.6]},
title = {'text': "Visitas"},
mode = modes,
number = numbers,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment