agregamos el selector de distribución y la linea mínima

parent 57935106
...@@ -145,6 +145,18 @@ app.layout = html.Div(children=[ ...@@ -145,6 +145,18 @@ app.layout = html.Div(children=[
value=7, value=7,
marks={1:"1", 7:"7", 14:"14", 28:"28", 42:"+42"} marks={1:"1", 7:"7", 14:"14", 28:"28", 42:"+42"}
), ),
html.Div(children="Distribución", className="menu-title"),
dcc.Dropdown(
id="distribucion_serie",
options=[
{"label":"Comidas por paciente", "value":1},
{"label":"Días de glucómetro por paciente", "value":2},
],
value=1,
clearable=False,
searchable=False,
className="dropdown",
),
]), ]),
#gráfica #gráfica
html.Div(children=[dcc.Graph(id="cover_series")],) html.Div(children=[dcc.Graph(id="cover_series")],)
...@@ -256,9 +268,10 @@ app.layout = html.Div(children=[ ...@@ -256,9 +268,10 @@ app.layout = html.Div(children=[
Output("cover_series", "figure"), Output("cover_series", "figure"),
Input("etapas_serie","value"), Input("etapas_serie","value"),
Input("min_comidas_serie", "value"), Input("min_comidas_serie", "value"),
Input("min_glucosa_serie", "value") Input("min_glucosa_serie", "value"),
Input("distribucion_serie", "value")
) )
def update_cobertura_series(etapaSel=1, min_comidas=10, min_glucosa=7): def update_cobertura_series(etapaSel=1, min_comidas=10, min_glucosa=7, distribucion=1):
gauges = { gauges = {
'shape': "bullet", 'shape': "bullet",
'axis': {'range': [None, 100]}, 'axis': {'range': [None, 100]},
...@@ -275,14 +288,21 @@ def update_cobertura_series(etapaSel=1, min_comidas=10, min_glucosa=7): ...@@ -275,14 +288,21 @@ def update_cobertura_series(etapaSel=1, min_comidas=10, min_glucosa=7):
comidas_data = resumen_comidas.loc[(slice(None),f'e{etapaSel}')] > min_comidas comidas_data = resumen_comidas.loc[(slice(None),f'e{etapaSel}')] > min_comidas
glucosa_data = glucometro_df.loc[glucometro_df["visit_id"] == etapaSel, "amount_of_days"] > min_glucosa glucosa_data = glucometro_df.loc[glucometro_df["visit_id"] == etapaSel, "amount_of_days"] > min_glucosa
microbiota_data = num_secuencias[etapaSel-1] microbiota_data = num_secuencias[etapaSel-1]
glucosa_scatter = glucometro_df.loc[glucometro_df["visit_id"] == etapaSel]["amount_of_days"].sort_values() if distribucion == 1:
glucosa_scatter.index = glucosa_scatter.index.astype(str) xs = resumen_comidas.loc[(slice(None),f'e{etapaSel}')].sort_values()
title = f"Comidas por paciente en la etapa {etapaSel}"
medCadena = 'comidas'
minimo = min_comidas
if distribucion == 2:
xs = glucometro_df.loc[glucometro_df["visit_id"] == etapaSel]["amount_of_days"].sort_values()
title = f'dias de glucómetro por paciente en la etapa {etapaSel}'
medCadena = 'días de glucómetro'
minimo=min_glucosa
xs.index = xs.index.astype(str)
# microbiota_data = visitas_datos[etapaSel-1]["muestra"].count()
# La N de la etapa debe ser el número de participantes que cumplieron la etapa. # La N de la etapa debe ser el número de participantes que cumplieron la etapa.
# esto es diferente al número de participantes que asistieron a la visita N o N+1. # esto es diferente al número de participantes que asistieron a la visita N o N+1.
N_etapa = len(participantes.loc[participantes["finished_periods"].isin(range(etapaSel, 4))].index) N_etapa = len(participantes.loc[participantes["finished_periods"].isin(range(etapaSel, 4))].index)
multi = make_subplots(rows=2, cols=1, specs=[[{"type":"indicator"}],[{}]]) multi = make_subplots(rows=2, cols=1, specs=[[{"type":"indicator"}],[{}]])
multi.add_trace(go.Indicator( multi.add_trace(go.Indicator(
value = 100 * comidas_data.sum() / N_etapa, value = 100 * comidas_data.sum() / N_etapa,
...@@ -309,9 +329,13 @@ def update_cobertura_series(etapaSel=1, min_comidas=10, min_glucosa=7): ...@@ -309,9 +329,13 @@ def update_cobertura_series(etapaSel=1, min_comidas=10, min_glucosa=7):
gauge = gauges gauge = gauges
)) ))
multi.add_trace( multi.add_trace(
go.Scatter(x=glucosa_scatter.index, y=glucosa_scatter) go.Scatter(x=xs.index, y=xs)
) )
multi.update_xaxes(title_text=f'{N_etapa} pacientes', row=2, col=1)
multi.update_yaxes(title_text=medCadena, row=2, col=1)
multi.add_shape(go.layout.Shape(type='line', yref='y1', xref='x1', x0=0, x1=800, xsizemode='pixel', y0=minimo, y1=minimo,
line=dict(color='red', width=1, dash='dot')))
return multi return multi
@app.callback( @app.callback(
......
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