Ir al contenido
  1. Cursos/
  2. Visualizaci贸n de Informaci贸n/

Visualizaci贸n de Redes y 脕rboles

·22 mins

En esta unidad aprenderemos t茅cnicas de visualizaci贸n de redes y 谩rboles, dos estructuras de datos importantes que permiten modelar fen贸menos complejos, ya que contienen relaciones entre elementos. Asimismo, visualizar una red o un 谩rbol no es f谩cil debido a esa complejidad inherente en los datos.

Una red se define por dos tipos de elementos: sus nodos o v茅rtices (nodes o vertex), que representan 铆tems, elementos, personas, y demases; y sus aristas o enlaces (edges o links), que representan relaciones entre nodos. Por tanto, la especificaci贸n de una red consiste en definir qu茅 es un nodo y c贸mo dos nodos se relacionan. Por ejemplo:

  • Una red de personas, donde dos personas est谩n conectadas si:
    • Son amigas en una red social.
    • Dan 鈥渕e gusta鈥 a las mismas p谩ginas.
    • Han visitado los mismos lugares.
    • Colaboran para realizar un trabajo (ejemplo: colaboraci贸n musical, cient铆fica, etc.).
    • Una ha contagiado a la otra de COVID-19.
  • Una red de lugares, donde dos lugares est谩n conectados si:
    • Alguien va desde uno de ellos hasta el otro.
    • Tienen el mismo uso de suelo, o proveen los mismos servicios.
  • Una red de productos, donde dos productos est谩n conectados si:
    • Son producidos por la misma entidad (proveedor, ciudad, regi贸n, pa铆s, etc.).
    • Los compra la misma persona.
    • Comparten ingredientes o composici贸n.
  • Una red cerebral, dos neuronas est谩n conectadas si se activan al mismo tiempo frente a un est铆mulo.

El siguiente ejemplo muestra parcialmente una red de trazado de contactos de COVID, de una paciente que contagi贸 a cientos de personas en Corea del Sur:

Trazado de Contactos COVID-19. Fuente: REUTERS.
Trazado de Contactos COVID-19. Fuente: REUTERS.

Esta visualizaci贸n ense帽a las relaciones entre algunos contactos, mostrando c贸mo se contagi贸 el virus de una persona a otra, y cu谩l era el tama帽o de la comunidad susceptible de infectarse para cada contagiado. Es una visualizaci贸n parcial, puesto que no muestra todas las conexiones de la red: en el caso de la paciente 31, sabemos que hay m谩s de mil contactos involucrados, pero no sabemos como se relacionan entre s铆. Es una muestra de c贸mo trabajar con redes y visualizarlas es un desaf铆o, puesto que suelen tener una cantidad considerable de nodos y aristas. Adem谩s no suelen tener atributos que podamos codificar directamente, a excepci贸n de nodos o aristas con datos geogr谩ficos. Ahora bien, eso no es necesariamente un problema, ya que las tareas que se efect煤an visualizando redes son distintas a las que vimos en las unidades anteriores. Estas tareas nos permitir谩n comprender la topolog铆a de la red: 驴cu谩l es el proceso que gener贸 esta red?; su estructura: 驴cu谩l es el camino desde un nodo hasta otro?驴cu谩ntas comunidades contiene?, o en el caso de un 谩rbol, 驴cu谩l es su profundidad?驴c贸mo var铆a 茅sta en las distintas ramas del 谩rbol?

Un dataset emblem谩tico en la ciencia de redes es el Club de Karate de Zachary. Zachary es un investigador que document贸 la red social de un club de Karate durante tres a帽os. En medio de su investigaci贸n, el administrador del club y el sensei tuvieron un problema que disolvi贸 el dojo. 驴Qu茅 har铆an les estudiantes del club?驴Seguir铆an a su maestro, al administrador, o abandonar铆an el club? Zachary predijo correctamente todas las decisiones de los miembros del club, con excepci贸n de una persona, utilizando an谩lisis de redes. As铆 luce la red:

Club de Karate de Zachary. Fuente: Wikipedia.
Club de Karate de Zachary. Fuente: Wikipedia.

Cada nodo es una persona. 驴Qu茅 observan en esta red? El color de los nodos nos ayuda a interpretar: hay dos comunidades que reflejan qui茅nes se quedaron en el dojo y qui茅nes no. No es coincidencia que la densidad de conexiones explique este fen贸meno — quedarse (o no) en el dojo es una decisi贸n social, un fen贸meno bien modelado por estas estructuras.

La siguiente red muestra como luce una red de conceptos en Wikipedia, construida en funci贸n de los clics que hacen les visitantes del sitio. Quienes visitan el art铆culo de neutralidad en la red, 驴hacia d贸nde siguen leyendo?驴desde d贸nde llegan a ese art铆culo?驴cu谩l es la tem谩tica alrededor de ese art铆culo?

Wikipedia Clickstream del art铆culo Neutralidad en la Red, en ingl茅s.
Wikipedia Clickstream del art铆culo Neutralidad en la Red, en ingl茅s.

Ahora bien, en esta introducci贸n hemos hablado de redes, pero la unidad es de redes y 谩rboles. Si recuerdan nuestra unidad de abstracci贸n de datos, sabr谩n que todo 谩rbol es una red, pero no toda red es un 谩rbol. Esto se debe a que los 谩rboles tienen una estructura jer谩rquica, con un nodo ra铆z. Esto puede facilitar la visualizaci贸n o incluso habilitar met谩foras visuales. El siguiente ejemplo toma el nombre de 谩rbol de manera literal para visualizar la relaci贸n entre las lenguas indoeuropeas:

脕rbol de lenguas en el mundo. Fuente: Stand Still Stay Silent.
脕rbol de lenguas en el mundo. Fuente: Stand Still Stay Silent.

En esta infograf铆a es posible ver como a partir de la ra铆z de lenguas indoeuropeas se separan las lenguas indo-iranesas y europeas. Luego se ramifican los lenguajes que conocemos, con sus respectivas variaciones. El espa帽ol (castellano) se encuentra en la rama de las lenguas romance.

Si quieren profundizar sobre el uso de redes para estructurar y modelar conocimiento, y de su uso en visualizaci贸n, entonces les recomiendo la siguiente charla de Manuel Lima. Manuel nos cuenta de la complejidad y las redes de manera visual. Es fascinante e inspiradora:

El resto de la unidad est谩 estructurada de la misma manera que las unidades anteriores: revisaremos t茅cnicas de visualizaci贸n de redes y comentaremos para qu茅 tareas son efectivas.

La visualizaci贸n del Club de Karate es del tipo nodo-arista o node_link. Es la manera tradicional de representar una red, con nodos visualizados con una marca circular o con s铆mbolos, y con las aristas representadas con marcas de l铆neas que unen sus nodos correspondientes. Estas l铆neas pueden ser decoradas con flechas, para indicar la direcci贸n de la relaci贸n (si es que no es bidireccional), y no tienen por qu茅 ser rectas, pueden ser curvas y seguir caminos.

En las t茅cnicas node_link la visualizaci贸n contiene un paso previo de organizaci贸n de nodos y aristas. Este preproceso calcula una posici贸n para los nodos y un recorrido para las aristas de tal modo que se cumpla alguna condici贸n basada en la conectividad y en los atributos de los nodos, o tambi茅n en restricciones geom茅tricas (por ej., los nodos deben estar a una distancia promedio espec铆fica, o estar organizados en un c铆rculo). En la mayor铆a de los casos, la posici贸n se da en un espacio 2D, pero tambi茅n puede ser 3D.

La t茅cnica force_directed_placement extiende node_link a trav茅s del c谩lculo de las posiciones de los nodos utilizando fuerzas de repulsi贸n. Imaginen que cada arista de la red es un resorte, de modo que al disponer los nodos de manera aleatoria en el espacio, algunos resortes estar谩n comprimidos y otros estar谩n estirados. Esto provoca que cada resorte tire o empuje a sus nodos; el c谩lculo de las fuerzas ejercidas por todas las aristas busca encontrar la posici贸n de los nodos que minimice la tensi贸n en ellas. El siguiente ejemplo muestra una red visualizada as铆:

Ejemplo de Force-Directed Placement. Fuente: Mike Bostock.
Ejemplo de Force-Directed Placement. Fuente: Mike Bostock.

El ejemplo muestra que podemos utilizar canales en los nodos y en las aristas para expresar atributos de 茅stos: podemos utilizar color y tama帽o en los nodos, y color y grosor en las aristas.

Una visualizaci贸n node_link (y por tanto, force_directed_placement) permite explorar la topolog铆a de la red, identificar caminos, y encontrar nodos espec铆ficos debido a su conectividad o a sus caracter铆sticas. En t茅rminos de escalabilidad, puede contener decenas o cientos de nodos, pero manteniendo una relaci贸n de densidad nodo/arista: E < 4N. De otro modo, podemos tener el problema de las bolas de pelo o hairballs, es decir, una visualizaci贸n que muestra tanto que se vuelve inentendible.

Consideren que la posici贸n de los nodos en esta visualizaci贸n es un dato derivado. No codifica atributos de los nodos, por el contrario, es ajustada por la visualizaci贸n en pos de la est茅tica. Esto implica que la posici贸n, la proximidad de los nodos o el largo de una arista no siempre tiene significado. M谩s bien son artefactos del algoritmo que deriv贸 los datos. Debemos interpretar esta visualizaci贸n con cuidado, ya que podr铆amos ver una estructura en los datos que quiz谩s no est茅 presente.

Existe una extensi贸n llamada sfdp, que realiza un force_directed_placement multinivel: deriva de la red una jerarqu铆a de clusters, y ejecuta force_directed_placement en cada nivel en vez de la red completa, separando el problema de calcular la organizaci贸n de toda la red en organizaciones m谩s peque帽as. Esto hace que la visualizaci贸n sea m谩s escalable en t茅rminos de c贸mputo, permitiendo visualizar 1K nodos y 10K aristas en un tiempo razonable. La apariencia de esta t茅cnica no es tan distinta de force_directed_placement:

Multilevel Graph Drawing with sfdp. Fuente: Yifan Hu, Efficient and high quality force-directed graph drawing.
Multilevel Graph Drawing with sfdp. Fuente: Yifan Hu, Efficient and high quality force-directed graph drawing.

En las clases pr谩cticas veremos como implementar estas visualizaciones en Python. Ahora bien, existe el software Gephi que se define como “el Photoshop de las redes.” Tiene motivos para hacerlo, puesto que permite cargar datos en muchos formatos, incluyendo CSV, y crear o manipular redes en estilo node_link con m煤ltiples m茅todos de organizaci贸n, incluyendo los que hemos mencionado aqu铆. El programa luce as铆:

Fuente: Gephi.org en Wikipedia
Fuente: Gephi.org en Wikipedia.

Adem谩s de la visualizaci贸n en s铆 misma, Gephi permite estimar comunidades, m茅tricas de nodos y aristas, realizar animaciones, conectarse con bases de datos, entre otras caracter铆sticas. 隆Es un buen punto de partida para experimentar con redes!

Matriz de Adyacencia #

Otra manera tradicional de visualizar redes es la matriz de adyacencia o adjacency_matrix, una visualizaci贸n que utiliza la misma codificaci贸n visual que el heatmap (ver unidad de Visualizaci贸n de Tablas). En este caso, la marca de cada arista es un cuadro, una celda de la matriz, y su color (o la ausencia de 茅ste) codifica si hay una relaci贸n entre los nodo representados en la fila y columna correspondientes. La codificaci贸n puede ser binaria (hay o no hay relaci贸n), o cuantativa (la relaci贸n tiene un peso). La adjacency_matrix es tambi茅n (primero es esto, de hecho) una estructura de datos para almacenar grafos. Un ejemplo de esta estructura es el siguiente:

Matrices de Adyacencia. Fuente: Wikipedia.
Matrices de Adyacencia. Fuente: Wikipedia.

Esta configuraci贸n implica que la escalabilidad de adjacency_matrix es enorme: permite mostrar tantas aristas como p铆xeles dispongamos en pantalla. Un n煤mero m谩ximo recomendado es 1K nodos con 1M de aristas. Estas matrices tambi茅n pueden ser interactivas. Una operaci贸n posible es ordenar las filas y columnas de acuerdo a alg煤n criterio espec铆fico.

El siguiente ejemplo muestra una adjacency_matrix con datos que hemos visto: la conectividad en Santiago entre comunas para viajes realizados por motivos de salud. Es decir, las comunas de la ciudad son nodos, y dos comunas A -> B est谩n conectadas si alguien que vive en la comuna A va a la comuna B para ir al consultorio, al hospital, a una consulta m茅dica o dental, entre otras:

Ejemplo de Matriz de Adjacencia de viajes, o Matriz Origen-Destino. Fuente: Eduardo Graells-Garrido.
Ejemplo de Matriz de Adjacencia de viajes, o Matriz Origen-Destino. Fuente: Eduardo Graells-Garrido.

Observamos que la matriz no es densa, y que la mayor铆a de los viajes se realizan dentro de una misma comuna (una explicaci贸n es la disponibilidad de consultorios en todas las comunas); que hay agrupaciones de comunas que van a la misma comuna dentro de su mismo sector en la ciudad para viajes fuera de ellas (una explicaci贸n es que no todas las comunas tienen hospitales, y que cada hospital cubre varias comunas dentro de un sector –norte, sur, etc.–). Esta 煤ltima observaci贸n la podemos hacer porque la matriz contiene una marca adicional para cada comuna, que indica el sector al que pertenecen utilizando el canal de tono.

As铆, vemos que la visualizaci贸n adjacency_matrix permite realizar tareas de identificaci贸n de grupos, de encontrar nodos que cumplen con criterios espec铆ficos, y de medir la densidad de la red.

Para responder la primera pregunta necesitamos enumerar las ventajas de cada visualizaci贸n.

  • node_link: la topolog铆a es evidente, se pueden ver caminos, es intuitiva, no necesita entrenar a las personas para ser utilizada.
  • adjacency_matrix: es predecible, escalable, permite reordenar y agregar marcas adicionales sin interferir con las marcas de nodos y aristas. A veces se puede ver la topolog铆a.

Entonces, dependiendo de cu谩l de esas ventajas se necesite para la tarea a resolver, se podr谩 elegir adecuadamente. Un estudio efectuado el 2005 por Ghoniem et. al, titulado On the readability of graphs using node-link and matrix-based representations: a controlled experiment and statistical analysis, en la revista Information Visualization, determin贸 mediante un experimento con personas realizando tareas que node_link es mejor para redes peque帽as, y que adjacency_matrix es mejor para redes grandes, si es que las tareas no son de topolog铆a de la red (determinar caminos o estructura).

Podemos ejemplificar la tarea de identificar topolog铆a y c贸mo se diferencia entre ambas visualizaciones en este diagrama de Michael J. McGuffin:

Fuente: Michael J. McGuffin
Fuente: Michael J. McGuffin.

驴Por qu茅 es complicado ver topolog铆a en adjacency_matrix? En el caso de las comunidades que dan estructura a la red, porque depende estrictamente del orden utilizado para nodos y aristas. Usualmente no es un orden natural (como alfab茅tico o por orden de inserci贸n en la red), sino un dato derivado luego de aplicar un algoritmo de clustering. En el caso de los caminos, porque perdemos la noci贸n de cual arista precede o prosigue a otra: dos aristas cercanas en la red pueden estar en lados opuestos de la matriz.

La segunda pregunta del encabezado se puede responder: 隆s铆! Existe una t茅cnica llamada NodeTrix que combina lo mejor de ambos mundos: una organizaci艅o basada en node_link, donde cada nodo es en realidad una sub-red representada con un glifo de adjacency_matrix:

<code>NodeTrix</code> combina ambas t茅cnicas: <code>node_link</code> y <code>adjacency_matrix</code>. Fuente: Henry et al, NodeTrix: a hybrid visualization of social networks.
NodeTrix combina ambas t茅cnicas: node_link y adjacency_matrix. Fuente: Henry et al, NodeTrix: a hybrid visualization of social networks.

Genial, 驴no? Esta visualizaci贸n puede ser 煤til cuando nos interesa la estructura de la red, particularmente, los caminos entre una comunidad y otra. Un ejemplo de aplicaci贸n de NodeTrix visualiza redes cerebrales:

Fuente: Yang et al, Blockwise human brain network visual comparison using NodeTrix representation.
Fuente: Yang et al, Blockwise human brain network visual comparison using NodeTrix representation.

Esta visualizaci贸n permite conocer la red de cada 谩rea del cerebro (con una adjacency_matrix por cada 谩rea), y tambi茅n saber como las distintas 谩reas se relacionan entre s铆 (node_link entre 谩reas). En el diagrama vemos que el 煤ltimo paso realiza un agrupamiento de aristas entre comunidades. 脡sa es la siguiente t茅cnica que veremos.

Edge Bundling #

驴Qu茅 pasa cuando tenemos demasiadas aristas en una visualizaci贸n node_link? Tendremos la imagen sobrepasada de marcas, incluso llegando al extremo de tener una bola de pelos (hairball) que no ser谩 煤til para resolver nuestras tareas. Una manera de facilitar la visualizaci贸n es reducir el desorden (clutter) causado por el exceso de aristas, no reduciendo la cantidad de 茅stas, sino agrup谩ndolas (bundling). As铆, una t茅cnica de edge_bundling agrupa aristas que son similares en una red, donde similaridad usualmente se define en funci贸n de los nodos que son conectados por las aristas: dos aristas que conectan nodos cercanos entre s铆, son similares.

Existen muchas t茅cnicas de edge_bundling. Quiz谩s las m谩s ad-hoc al contenido introductorio de este curso son dos: force_directed_edge_bundling y hierarchical_edge_bundling. La segunda es la t茅cnica pionera, al ser la primera en plantear la idea, sin embargo, la primera es m谩s aplicable a lo que hemos visto. En force_directed_edge_bundling se parte de un gr谩fico node_link, con aristas representadas como l铆neas rectas. El prop贸sito de la t茅cnica es que las aristas que sean similares tengan recorridos cercanos en la visualizaci贸n, casi como si un el谩stico las restringiese en sus puntos m谩s cercanos. As铆, un algoritmo de esta t茅cnica debe identificar o crear esos puntos cercanos, y manipular la forma geom茅trica de las aristas para que se agrupen, convirti茅ndolas en curvas suaves. La siguiente imagen ilustra un par de t茅cnicas en una red de vuelos entre aeropuertos en los Estados Unidos:

Force Directed Edge Bundling. Fuente: Holten &amp; Van Wijk, Force鈥恉irected edge bundling for graph visualization.
Force Directed Edge Bundling. Fuente: Holten & Van Wijk, Force鈥恉irected edge bundling for graph visualization.

隆Al utilizar estas t茅cnicas la legibilidad de una visualizaci贸n node_link aumenta considerablemente! Sin embargo, debemos tener en cuenta que la agrupaci贸n de las aristas sigue un criterio basado en las posiciones de los nodos, que no siempre tienen significado en una visualizaci贸n node_link (en el ejemplo s铆 lo tienen, puesto que son nodos con posici贸n geogr谩fica). Por tanto, edge_bundling en un gr谩fico node_link no habilita nuevas tareas, sino que podr铆a facilitar algunas — 隆no todas! Por ejemplo, es posible que al modificar la forma de las aristas perdamos la noci贸n de camino entre nodos.

La primera aplicaci贸n concreta de esta t茅cnica se public贸 el a帽o 2006, llamada hierarchical_edge_bundling. Tiene el nombre hierarchical porque se aplica principalmente a 谩rboles, o a redes en los que se puede inferir una estructura jer谩rquica (esto es posible en algunos algoritmos de detecci贸n de comunidades o de clustering). La t茅cnica tiene la siguiente apariencia:

Hierarchical Edge Bundling. Fuente: Holten, Hierarchical edge bundles: Visualization of adjacency relations in hierarchical data.
Hierarchical Edge Bundling. Fuente: Holten, Hierarchical edge bundles: Visualization of adjacency relations in hierarchical data.

En hierarchical_edge_bundling se utiliza una codificaci贸n similar a node_link. Los nodos se expresan con marcas de c铆rculos o puntos organizados de manera circular, por comunidades. En el ejemplo, se muestra la red de c贸digo fuente de un framework, de modo que existen componentes (comunidades) dentro de macro-componentes, y todas las macro-componentes pertenecen al mismo framework. Los nodos son conectados entre s铆 con aristas, como en node_link, sin embargo estas aristas no son l铆neas rectas, sino que son curvas siguen el camino jer谩rquico: imaginen que existen c铆rculos internos en la visualizaci贸n, uno por cada nivel de jerarqu铆a, hasta llegar al centro del c铆rculo, que contiene la ra铆z de 茅sta. Cada arista sigue un camino que la acerca a los nodos de la jerarqu铆a que marcan el camino desde un nodo a otro. Para ejemplificar veamos una red peque帽a, el genoma del gusano C. elegans:

Red del genoma de un gusano. Fuente: graph-tool.
Red del genoma de un gusano. Fuente: graph-tool.

Este genoma no tiene una jerarqu铆a de comunidades en sus nodos, pero 茅sta puede ser inferida. La biblioteca de Python graph-tool toma una red e infiere dicha estructura. As铆, los nodos est谩n dispuestos de acuerdo a la comunidad a la que pertenecen, y la red jer谩rquica de comunidades aparece desplegada como l铆neas celestes al interior del c铆rculo. Como ven, cuando un gen se relaciona con otro, la curva que los une se mueve a trav茅s de la jerarqu铆a — la jerarqu铆a es el camino a seguir de cada arista. Las aristas, entonces, son agrupadas impl铆citamente: m谩s que definir c贸mo una arista es similar a otra, dos aristas que siguen el mismo camino jer谩rquico ser谩n cercanas en la visualizaci贸n.

En t茅rminos de implementaci贸n, cada arista es una curva B-Spline cuyos puntos de control son los nodos de la jerarqu铆a (organizados dentro del c铆rculo utilizando un m茅todo radial para node_link).

Arc Diagram #

La t茅cnica arc_diagram puede ser similar a node_link, en tanto los nodos se posicionan en una l铆nea recta, y las aristas son arcos sobre o bajo esta l铆nea, dispuestos de acuerdo a alg煤n criterio (como orden temporal, o inferido utilizando un algoritmo). Un ejemplo de esta visualizaci贸n es Edge Maps, que muestra relaciones de influencia entre personajes filos贸ficos:

Edge Maps, una visualizaci贸n estilo <code>arc_diagram</code>. Fuente: Marian D枚rk.
Edge Maps, una visualizaci贸n estilo arc_diagram. Fuente: Marian D枚rk.

Como vemos en la imagen, las personas est谩n organizadas temporalmente. En este caso, esto implica que las relaciones de haberse inspirado en las ideas de otras personas van hacia atr谩s, y por tanto se muestran abajo de los nodos, mientras que las relaciones de influir a otras personas van hacia adelante en el tiempo, apareciendo en la parte superior del gr谩fico.

Este tipo de visualizaci贸n es menos escalable que node_link debido a la restricci贸n de espacio de los nodos, que solamente se pueden organizar en una l铆nea recta. Tambi茅n podr铆a dificultar ver caminos entre nodos, pero eso depender谩 de la interacci贸n y de los canales utilizados en las aristas. Ahora bien, permite encontrar patrones relacionados con los atributos de los nodos de manera m谩s directa que en node_link.

En arc_diagram tambi茅n podemos utilizar un glifo como nodo. El siguiente ejemplo de Gast贸n S谩nchez muestra relaciones de personajes en Star Wars, donde cada nodo adem谩s de incorporar el nombre del o de la personaje correspondiente, muestra un gr谩fico de barras con sus palabras m谩s usadas en los di谩logos de la pel铆cula:

Star Wars <code>arc_diagram</code>. Fuente: Gast贸n S谩nchez.
Star Wars arc_diagram. Fuente: Gast贸n S谩nchez.

Al ser una t茅cnica que funciona sobre una l铆nea recta, es posible complementar una adjacency_matrix con arc_diagram en sus dos ejes. En algunas ocasiones, es posible que esto facilite hacer tareas dif铆ciles en adjacency_matrix, como seguir caminos.

Hive Plot #

La t茅cnica hive_plot busca resolver el problema de la falta de estructura (o una estructura artificial basada en criterios est茅ticos de un algoritmo) en los diagramas tradicionales, al definir ejes estructurales donde posicionar los nodos. La especificaci贸n de la t茅cnica es la siguiente:

Dise帽o de <code>hive_plot</code>. Fuente: Krzywinski et al, Hive plots鈥攔ational approach to visualizing networks.
Dise帽o de hive_plot. Fuente: Krzywinski et al, Hive plots鈥攔ational approach to visualizing networks.

Es una idea similar a parallel_coordinates para visualizar tablas, pero para redes. Las tareas relacionadas con estructura y topolog铆a de la red pueden facilitarse en funci贸n de la definici贸n de los ejes de esta visualizaci贸n. Los nodos pueden repetirse entre ejes, dependiendo de lo que codifique cada uno de ellos. Al igual que parallel_coordinates es una t茅cnica que requiere entrenamiento para ser utilizada. Eso no es una limitante, pero s铆 es algo que debe ser considerado. La siguiente imagen ilustra la diferencia entre node_link y hive_plot:

Diferencia entre <code>node_link</code> y <code>hive_plot</code>. Fuente: Krzywinski et al.
Diferencia entre node_link y hive_plot. Fuente: Krzywinski et al.

Una tarea que se vuelve posible con esta visualizaci贸n, que no era factible con las vistas anteriormente, es la comparaci贸n de redes. Si dos redes difieren en sus nodos o aristas, las visualizaciones anteriores ser谩n irremediablemente distintas en su estructura (por ej., teniendo menos filas y columnas en la adjacency_matrix, o teniendo una organizaci贸n diferente en node_link debido a su naturaleza algor铆tmica). En cambio, como hive_plot define ejes estructurales, lo que comparamos al ver dos (o m谩s) instancias de esta visualizaci贸n es c贸mo distintas redes presentan (o no) esa estructura espec铆fica.

La t茅cnica radial_node_link es una instancia espec铆fica de node_link para 谩rboles. Utiliza la misma codificaci贸n visual, pero la organizaci贸n y orientaci贸n de los nodos est谩 restringida por la estructura de la red. El nodo central es la ra铆z del 谩rbol, y desde all铆 se ramifican las aristas a cada nivel de profundidad del 谩rbol. Luce as铆:

Ejemplo de <code>radial_node_link</code>. Fuente: Mike Bostock.
Ejemplo de radial_node_link. Fuente: Mike Bostock.

Adem谩s de las tareas y especificaciones de escalabilidad de node_link, al utilizar radial_node_link se vuelve posible realizar otras operaciones, como saber si dos nodos son hermanos o no, debido a la proximidad angular de los nodos, o bien saber el nivel o profundidad a la que se encuentra un nodo, ya que este atributo est谩 codificado por la distancia hacia el centro (ra铆z) del 谩rbol.

Treemap #

La visualizaci贸n treemap tambi茅n est谩 orientada a 谩rboles. Sin embargo, presenta un esquema distinto a las visualizaciones anteriores, ya que es una t茅cnica de estilo space filling, es decir, llena todo el espacio de la visualizaci贸n. Es una visualizaci贸n recursiva que utiliza la estructura de la red para dividir el espacio, que utiliza rect谩ngulos como marca para cada nodo. Primero, la ra铆z ocupa todo el espacio rectangular. Luego, cada uno de los nodos es representando con un rect谩ngulo cuyo tama帽o es proporcional a la cantidad de nodos que descienden de 茅l (o de un valor total calculado para todos sus nodos descendientes a partir de un atributo cuantitativo). Cada uno de esos rect谩ngulos es dividido siguiendo el mismo esquema. Una manera de ejemplificar esto es a trav茅s del sistema TreeSize, que visualiza el contenido de un dispositivo de almacenamiento:

Ejemplo de <code>treemap</code> en el sistema TreeSize. Fuente: Wikipedia.
Ejemplo de treemap en el sistema TreeSize. Fuente: Wikipedia.

Observamos que la ra铆z del disco (C:\) es un rect谩ngulo que contiene otros directorios (rect谩ngulos), cuyo tama帽o es proporcional al espacio que ocupa cada directorio en el disco. En este caso el canal de color utiliza la saturaci贸n y la luminosidad para codificar la profundidad de cada directorio en el disco.

Las tareas que se pueden realizar con un treemap incluyen explorar las distribuciones de los atributos de los nodos y consultar atributos de los nodos hoja (los 煤ltimos en la profundidad), y cuantificar relaciones parte-de-un-todo. Su escalabilidad depender谩 del tama帽o de la visualizaci贸n a utilizar, pero, al igual que adjacency_matrix, puede alcanzar el mill贸n de hojas si queremos que cada hoja sea representada con un p铆xel. Su limitante es que el tama帽o de los rect谩ngulos solo es una aproximaci贸n de los valores reales asociados a cada hoja, ya que no siempre es posible dividir el espacio de manera exacta utilizando rect谩ngulos.

Esta t茅cnica de visualizaci贸n est谩 implementada en todos los sistemas de visualizaci贸n comercial y BI. Es directa de utilizar y de interactuar, y su codificaci贸n visual no es compleja. Dependiendo de los canales utilizados, puede tener un alto valor est茅tico tambi茅n. Por tanto, es un buen punto de partida para explorar datos que se puedan estructurar en 谩rboles. Pueden ver una p谩gina con la historia de los treemaps y sus variantes preparada por su creador, Ben Shneiderman.

Voronoi TreeMap #

La t茅cnica voronoi_treemap extiende la propuesta de treemap a 谩reas flexibles en vez de rect谩ngulos, lo que consigue una mejor relaci贸n entre el tama帽o asignado a un 谩rea y el valor codificado por ella. Como su nombre lo dice, utiliza diagramas de Voronoi para lograr ese efecto. Un ejemplo que visualiza un repositorio de c贸digo luce as铆:

Ejemplo de <code>voronoi_treemap</code> para un repositorio de c贸digo. Fuente: Balzer et al, Voronoi treemaps for the visualization of software metrics.
Ejemplo de voronoi_treemap para un repositorio de c贸digo. Fuente: Balzer et al, Voronoi treemaps for the visualization of software metrics.

Como vemos, la apariencia es m谩s org谩nica y flexible que en el treemap tradicional, aunque es tambi茅n puede perjudicar la comprensi贸n de la visualizaci贸n. Sin embargo, 茅sa es tambi茅n la fortaleza de esta visualizaci贸n. Al ser adaptable a cualquier forma los podemos utilizar dentro de otras visualizaciones, por ejemplo con datos geogr谩ficos. El New York Times realiz贸 una visualizaci贸n que convirti贸 las tasas de migraci贸n interna e internacional en cada estado en los Estados Unidos en una estructura de 谩rbol, donde la ra铆z es el pa铆s, los nodos del primer nivel son los estados, y los nodos del segundo nivel son los or铆genes de la poblaci贸n de cada estado. Por tanto, es posible construir una visualizaci贸n mixta:

&ldquo;Mapping Migration in the US,&rdquo; un ejemplo de visualizaci贸n mixta de mapas y <code>voronoi_treemap</code>. Fuente: New York Times.
Mapping Migration in the US, un ejemplo de visualizaci贸n mixta de mapas y voronoi_treemap. Fuente: New York Times.

La visualizaci贸n permite ver para cada estado cu谩l es la distribuci贸n de migrantes (o locales), es decir, tareas parte-de-un-todo, que son f谩cilmente comparables entre estados debido al uso del canal de color para mostrar el atributo categ贸rico de origen.

A pesar de que la escabilidad de voronoi_treemap es alta, sus usos m谩s efectivos suelen ser aquellos donde la red no es grande, como el ejemplo del New York Times, o en 谩rboles geogr谩ficos con resultados de votaci贸n. A煤n as铆, es una visualizaci贸n que tiene buen potencial est茅tico y comunicativo.

Fin de Unidad #

En esta unidad hemos visto t茅cnicas de visualizaci贸n para redes. A pesar de que las redes son datos cada d铆a m谩s presentes, sobretodo debido a la disponibilidad de trazas digitales, el abanico de t茅cnicas de visualizaci贸n es menos amplio que para otros tipos de dataset. Visualizar redes de manera efectiva plantea desaf铆os importantes, tanto de escalabilidad, de an谩lisis de los datos, y tambi茅n de interpretabilidad y legibilidad en la visualizaci贸n. Vale la pena enfrentar esos desaf铆os, ya que los fen贸menos que podemos trabajar y analizar a trav茅s de las redes no son transferibles a otros tipos de dataset. Las necesidades de la sociedad hoy son complejas, y la visualizaci贸n es una manera de poner esa complejidad ante nuestros ojos y poder interactuar con ella, sumergirnos en su profundidad, y extraer conocimiento que nos ayude a resolver los problemas actuales que nos aquejan.

Lecturas Recomendadas #