Force Directed Edge Bundling
En mi última práctica profesional trabajé remotamente con Eduardo Graells-Garrido, arreglando el código de un algoritmo de visualización de grafos nodo-arista.
Necesitaba una última práctica profesional de Ingeniería Matemática y me encontré con el trabajo de Eduardo Graell-Garrido, quien hace visualización de datos de transporte. En ese momento me interesó porque en mi tesis estaba estudiando un modelo que incorporara el efecto de la movilización de la gente en la propagación del Covid, y Eduardo trabajaba con datos de la Encuesta Origen Destino que yo usaba. Le pregunté si estaba trabajando en algún proyecto en el que pudiera aportar, y me habló de que tenían una implementación de un paper de visualización de grafos nodo-arista (grafos tipo flecha, donde las aristas tienen un nodo de origen y uno de destino) que fallaba y no entendían por qué.
Así que empecé a trabajar con Force Directed Edge-Bundling. Después de harto testing, resultó que solamente faltaba un for
😂. Mi versión corregida quedó en un fork de la implementación de Vera Sativa, que a su vez estaba basada en una implementación en d3.js
. También añadí unos códigos para hacer gráficos con aristas coloreadas con un gradiente, de forma que se pudiera distinguir el origen del destino de las flechas.
Una visualización de los viajes más frecuentes en Santiago, con el código corregido.
Como el proyecto me había gustado, más tarde implementé otra versión porque me parecía un crimen que no estuviera en Julia (mi lenguaje regalón de la época). En mi opinión, el código quedó mucho más limpio y me ahorré tener que pelear con Numba pa compilar el código. Le tenía tanto cariño que hasta le hice una página de documentación que se actualizaba automáticamente con GitHub Actions, pero me faltó agregar algunos ejemplos. Creo que de haberle dado un poco más de amor, habría podido subirlo como un paquete de Julia, habría sido una buena oportunidad de aprender el proceso.