fix(eda): keep-together de grafico+titulo+descripcion en 5 capitulos
modelos, timeseries, geospatial, agregacion y missingness (bloque de ranking) emitian Heading+Figure sueltos, de modo que el paginador podia dejar el titulo y la descripcion de una columna/par en una pagina y su grafico en la siguiente. Se envuelve cada unidad (Heading + descripcion/tablas + Figure) en un model.Group, la unidad keep-together que ambos renderers (PDF/PPTX) miden entera y mueven en bloque cuando no cabe, siguiendo el patron ya usado por num_distr y correlacion. Orden y contenido de bloques identicos: solo se envuelven. La degradacion honesta se conserva (una figura None nunca queda dentro de un Group vacio). Los tests que asertaban figuras sueltas se ajustaron para comprobar la Figure DENTRO del Group, sin relajar ningun assert. Bump CHAPTER_VERSION PATCH (1.0.0->1.0.1) en los 5 capitulos. El heatmap de co-ocurrencia de missingness ya iba agrupado y no se toca.
This commit is contained in:
@@ -45,7 +45,10 @@ from __future__ import annotations
|
||||
|
||||
from .. import model
|
||||
|
||||
CHAPTER_VERSION = "1.0.0"
|
||||
# 1.0.1 — keep-together: el ranking "Faltantes por columna" (su Heading + tabla +
|
||||
# figura) se envuelve en un model.Group para que el paginador no separe la figura
|
||||
# de su título/tabla (el heatmap de co-ocurrencia ya iba agrupado).
|
||||
CHAPTER_VERSION = "1.0.1"
|
||||
CHAPTER_ID = "missingness"
|
||||
CHAPTER_TITLE = "Datos faltantes"
|
||||
|
||||
@@ -547,14 +550,22 @@ def build_missingness(profile: dict, ctx: dict):
|
||||
model.Heading(text="Cuánto y dónde faltan datos", level=2),
|
||||
_intro_block(mark, source),
|
||||
_summary_block(profile, with_nulls, overview, sampled, n_total),
|
||||
model.Heading(text="Faltantes por columna", level=2),
|
||||
]
|
||||
|
||||
# Ranking "Faltantes por columna": keep the heading, its table and the bar
|
||||
# figure together on the same page/slide (keep-together) so the paginator never
|
||||
# strands the figure from its title/table. When there is no figure to draw, the
|
||||
# unit degrades honestly and stays flat (never a Group around a missing figure).
|
||||
rank_unit = [model.Heading(text="Faltantes por columna", level=2)]
|
||||
ranking = _ranking_block(with_nulls)
|
||||
if ranking is not None:
|
||||
blocks.append(ranking)
|
||||
rank_unit.append(ranking)
|
||||
rank_fig = _ranking_figure(with_nulls)
|
||||
if rank_fig is not None:
|
||||
blocks.append(rank_fig)
|
||||
rank_unit.append(rank_fig)
|
||||
blocks.append(model.Group(blocks=rank_unit))
|
||||
else:
|
||||
blocks.extend(rank_unit)
|
||||
|
||||
# Co-occurrence + row patterns need the per-row mask. Without it, say so.
|
||||
if not mask:
|
||||
|
||||
Reference in New Issue
Block a user