Rueda de Dependencia en R

Highcharter R

En este Post voy a compartir un breve resumen sobre los Dependency Wheel Plot y como implementarlo usando R.

Maxi Galoto
2022-10-22

react

Inicio



Dependency Wheel

Volver al Inicio



Una rueda de dependencia es un tipo de diagrama de flujo, donde los nodos se disponen en un círculo y se dibujan vínculos entre ellos. Este ancho del enlace y el tamaño de los nodos son proporcionales a la cantidad de flujo o peso de cada enlace.

Las áreas de uso de la rueda de dependencia son similares al diagrama de Sankey , pero mientras que el diagrama de Sankey admite varias columnas y hay una dirección de flujo clara, los nodos de la rueda de dependencia están dispuestos en el mismo nivel, lo que indica que el flujo es multidireccional.

Utilidad

Volver al Inicio



Este tipo de gráficos puede ser útil para visualizar la relación entre distintas variables categóricas asignándoles un peso a cada una de las relaciones.

Algunas de las utilidades de los “dependency wheel plots” incluyen:

Visualización de Dependencias: Los gráficos de rueda de dependencias proporcionan una representación visual clara de las relaciones y dependencias entre diferentes elementos. Esto puede ser útil para comprender la estructura y la interconexión de datos o componentes en un sistema.

Detección de Ciclos y Redundancias: Los “dependency wheel plots” pueden ayudar a identificar ciclos y redundancias en las dependencias entre elementos. Esto es crucial para evitar problemas como bucles infinitos o redundancias innecesarias en sistemas complejos.

Facilita la Toma de Decisiones: Al proporcionar una representación gráfica de las dependencias, estos gráficos facilitan la toma de decisiones informadas sobre cómo afectarán los cambios en un elemento a otros elementos relacionados.

Comunicación Efectiva: Son herramientas útiles para la comunicación entre equipos multidisciplinarios. Permiten a diferentes partes interesadas comprender fácilmente las interdependencias en un sistema, lo que facilita la colaboración y la toma de decisiones conjuntas.

Análisis de Impacto: Pueden utilizarse para evaluar el impacto de cambios propuestos en un sistema al comprender cómo esos cambios afectarán a otros elementos interconectados.

En resumen, los “dependency wheel plots” son valiosos en situaciones donde se necesita comprender y visualizar las complejas relaciones y dependencias entre diferentes elementos, ya sea en el ámbito de la programación de software, la gestión de proyectos, el análisis de datos u otros contextos.

Un buen ejemplo para usar este tipo de gráficos puede ser para visualizar el monto total comerciado entre países durante un periodo determinado de tiempo. Para comprenderlo mejor voy a compartir el siguiente gráfico utilizando la librería Highcharter:

Librería y Versión

Volver al Inicio



Se utilizó la librería highcharter para desarrollar el gráfico. Para más información sobre la librería click aqui.


[
  {
      "package": "highcharter",
      "version":"0.9.4"
  }
]

Gráfico

Volver al Inicio



data_list = list(
  list(from = 'Argentina', to = 'Brasil', weight = 10),
  list(from = 'Argentina', to = 'China', weight = 15),
  list(from = 'Argentina', to = 'Estados Unidos', weight = 8),
  list(from = 'Argentina', to = 'Singapur', weight = 6),
  list(from = 'Argentina', to = 'Paraguay', weight = 6),
  list(from = 'Paraguay',  to = 'Argentina', weight = 10),
  list(from = 'China',     to = 'Paraguay', weight = 12),
  list(from = 'Singapur',  to = 'Argentina', weight = 6),
  list(from = 'Brasil',    to = 'Argentina', weight = 9)
)
highchart() %>%
  highcharter::hc_chart(type = 'dependencywheel',
             showInLegend = F,
             maxSize = "15%",
             dataLabels = list(enabled = TRUE,
                               format = '{{point.from} to {point.to}, {point.weight}.}')) %>%
  highcharter::hc_add_series(
    data = data_list,
    distance = 20,
    size = '95%') 

Muy bien!

Ahora tenemos una idea sobre su utilidad y el imput de datos que requiere este tipo de gráficos.

Aclaración: Este gráfico nos sirve para visualizar una relación de dependencia, por lo tanto, si queremos ver (por ejemplo) el total de exportaciones de Argentina hacia los demás países es conveniente utilizar un Bar Plot para tener dimension de forma mas clara y precisa hacia donde van la mayor y menor cantidad de exportaciones del pais analizado.

A continuación vamos a ver como pasar de datos que tenemos en un Data Frame al formato data_list visto anteriormente:

data = read.csv('poke.csv')
group = df %>% 
  group_by(type1, type2) %>% 
  count() %>% arrange(desc(n))

types <- c("grass", "fire", "water", "bug", "normal", 
           "poison", "electric", "ground", "fairy", 
           "fighting", "psychic", "ghost", "rock", 
           "ice", "dragon", "dark", "steel")

colors <- c('#59d97f', '#E7372A', '#22a0bd', '#00a650','#636b67', 
            '#6a1e7d', '#c7d92b','#a16d1a', '#f252c8',
            '#b09b5b', '#a8209d', '#d265d6', '#907e51', 
            '#1b8aa6','#21a3ff', '#1c1f1e', '#616966')

datatable(group,extensions = "Buttons", 
            options = list(paging = TRUE,
                           scrollX=TRUE, 
                           searching = TRUE,
                           ordering = TRUE,
                           dom = 'Bfrtip',
                           buttons = c('copy', 'excel'),
                           pageLength=10, 
                           lengthMenu=c(3,5,10) )) %>% formatStyle(
  'type1',
  target = 'row',
  backgroundColor = styleEqual(types, colors),
  color = styleEqual(c('dark', 'steel', 'poison'), c('white', 'white', 'white'))
)
function_types = function(df) {
  
  lista_final = list()
  for (i in 1:nrow(df)){
    lista_final[[i]] = list(from = as.character(df[i,][1]) ,
                          to = as.character(df[i,][2]) ,
                          weight = as.numeric(df[i,][3] ))
  }
  
  if (length(lista_final) == nrow(df)){
    return(lista_final)
  }
  else{
    return(NULL)
  }
  
}

types_dependency = function_types(group)
highchart() %>%
    hc_chart(type = 'dependencywheel') %>%
    hc_add_series(
      data = types_dependency,
       dataLabels = list(
        color = '#333',
        textPath = list(
          enabled = TRUE
        )
    ),
    distance = 10,
    size = '95%') %>%  

    hc_title(text = paste0('Pokemon Dependency Wheel Plot'),
       style = list(fontSize = '20px', fontWeight = 'bold')) %>% 
    hc_credits(enabled = TRUE, 
               text = "Fuente: Kaggle",
               align = "right",
               verticalAlign = "bottom",
        style = list(color = "black", 
                     fontSize = '12px'),
        href = "https://www.kaggle.com/datasets/rounakbanik/pokemon") %>% 
    hc_yAxis(labels = list(style = list(color = "black")),
             tickColor = "black") %>% 
    hc_xAxis(labels = list(style = list(color = "black")),
             tickColor = "black") %>% 
 
  highcharter::hc_caption(
    text = "Dependency Wheel Plot using Pokemon Data", 
    useHTML = TRUE
    )  

Listo nuestro gráfico :D

Conclusión

Volver al Inicio



En conclusión, en este post hemos explorado el concepto de la Rueda de Dependencia (Dependency Wheel) y cómo implementarla utilizando R. Este tipo de gráfico es útil para visualizar las relaciones entre variables categóricas asignándoles un peso a cada una de las relaciones.

La Rueda de Dependencia nos permite comprender la interacción y flujo multidireccional entre variables, mostrando el origen y el destino de cada enlace junto con el peso correspondiente. En el ejemplo presentado, utilizamos la librería Highcharter en R para crear un gráfico de Rueda de Dependencia basado en datos ficticios de exportaciones entre países.

Es importante tener en cuenta que este tipo de gráfico es adecuado cuando se desea visualizar la relación de dependencia entre variables, pero si se busca analizar la cantidad absoluta de una variable hacia otras, puede ser más conveniente utilizar otro tipo de gráfico, como un diagrama de barras.

En resumen, la Rueda de Dependencia en R es una herramienta visual poderosa para comprender las relaciones entre variables categóricas y su flujo multidireccional. Nos permite identificar patrones y entender mejor la estructura de los datos. La librería Highcharter en R facilita la creación de este tipo de gráficos, brindando flexibilidad y opciones de personalización.

¡Espero que este post haya proporcionado una introducción útil a la creación de gráficos de Rueda de Dependencia en R!