Biblioteca de exploración visual por dataset
Fecha: 2026-09-11. Pide: viz en cada dataset, como bost.ocks.org/mike.
Decisión: Bostock a mano, sin D3 ni dependencias
scripts/build_viz.py genera datasets/<slug>/explore.html con SVG+JS vanilla
(datos embebidos como JSON). Homenajes directos al canon Bostock:
- Actividad: barras apiladas/agrupadas con toggle interpolado (constancia de objeto).
- Temas × eras: matriz de co-ocurrencia (Les Misérables).
- Mapa de clusters: layout de fuerza arrastrable (Use the Force); click abre su muestra.
- Barras ordenables con transición + tooltip propio en todo.
JS verificado con node --check (se extraen los bloques y se chequean en el build).
Sin CDN: funciona en Vercel, file:// y como link desde CKAN.
Segunda pata: matplotlib estático (thumbs)
scripts/build_charts_mpl.py → datasets/<slug>/thumb.png (~19KB):
lógica = barras apiladas actividad; clusters = top 12. Usos: tarjeta del index,
fallback <noscript> en explore.html, recurso vista-previa PNG en CKAN
(preview vía image_view).
Lección Vercel: instala requirements.txt solo (PEP 668 rompe pip install
explícito) y su numpy 2.5.3 trae ABI rota en py3.14 → el build corre charts
tolerante (|| echo skip) y usa los thumbs generados en local. Regla: thumbs se
regeneran en local con npm run charts y se suben como archivos.
Cableado
build_site.py→build_viz.py(en ese orden;package.jsonvercel-build/build). build_viz inyectaexplorar →en las tarjetas del index.- CKAN local: extra
viz_urlpor dataset (package_patch) → apunta al explore en Vercel.
Regla
explore.html es generado, no se edita a mano. Nuevo dataset = añadir función
viz_<slug> en build_viz.py.