orden de las columnas en el heatmap

en la generación del heatmap, para asegurarse de que no generar errores por uso
de columnas no definidas en una cierta visita (p.ej, 'gelatina' no existe en
visita2), se hacía una intersección de las columnas de los datos de la visita
con las columnas definidas a partir de los protocolos (que es un dict. que dice
que mediciones hay en cada protocolo).

una alternativa era tener un dict por cada visita, pero eso es demasiada
información. lo que se había optado por hacer fue una intersección de todos los
protocolos con la info de las visitas. esto funciona bien, pero tiene la
desventaja de que las columnas quedan desordenadas porque las listas se
convierten a sets (para facilitar la intersección). el problema de las columnas
desordenadas era que no quedaban juntas todas las de un mismo protocolo, lo que
dificulta su localización visual.

para resolver esto, se construyo la lista a partir de las intersecciones de cada
protocolo con la info de la visita (en vez de todos los protocolos, uno por
uno). de esta forma, todas las columnas de un mismo protocolo ya quedan juntas.
parent 88caed70
......@@ -352,10 +352,11 @@ def update_por_prueba(visita):
}
heatmap = df1.set_index("id").notna().astype(int)
colorscale = [[0, 'gold'], [1,'mediumturquoise']]
columnas = [ test for protocolo in protocolos.keys() for test in protocolos[protocolo]]
lista = list(set(df1.columns).intersection(set(columnas)))
figura = px.imshow(heatmap[lista], color_continuous_scale=colorscale)
figura.update_layout(dict(coloraxis_showscale=False))
columnas = []
for protocolo in protocolos.keys():
prot_columns = list(set(df1.columns).intersection(set(protocolos[protocolo])))
columnas.extend(prot_columns)
figura = px.imshow(heatmap[columnas], color_continuous_scale=colorscale)
return figura
......
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