Diagrama de interacciones

2020-10-07 R Bipartite circlize Network3D

1. Cargar los paquetes y la tabla de datos.

Primero cargamos el paquete “bipartite”, si aun no esta instalado debemos instalarlo primero con la funcion install.packages(“bipartite”)

library(bipartite)
data("bezerra2009")

En este ejemplo usaremos la tabla 1 de datos de bezerra2009 la cual consta de observaciones de 38 individuos pertenecientes a 13 especies de plantas oleaginosas de la familia Malphighiaceae. Se colectaron los visitantes florales y solo se consideraron los visitantes legítimos. Los números en la tabla se refieren a la cantidad de visitantes de cada especie de abeja recolectada en cada especie de planta. El número de abeja que visitaron las flores se registraron durante cuatro días consecutivos, de 5.00 a 17.00 con un total de 1392h de observaciones.

Ubicación: Parque Nacional do Catimbau, Brasil (8°24’00" -37°36’35“S y 3°09’30” -37°14’40"W)

Para mas información puede visitar http://www.nceas.ucsb.edu/interactionweb

Table 1: Tabla de datos
Centris.aenea Centris.fuscata Centris.caxiensis Centris.tarsata Centris.flavifrons Centris.trigonoides Centris.obsoleta Epicharis.sp2 Apis.mellifera Centris.sp3 Centris.sp1 Xylocopa.sp Xylocopa.grisescens
Diplopterys.pubipetala 1368 1364 740 460 416 256 0 328 364 368 0 0 0
Byrsonima.gardnerana 924 320 2108 464 284 0 0 0 28 0 0 0 0
Banisteriopsis.muricata 396 468 108 140 272 652 912 364 44 0 368 164 84
Heteropterys.sp1 764 680 528 308 404 300 0 28 0 0 0 76 0
Heteropterys.sp2 740 656 528 332 0 324 0 116 116 0 0 0 0
Dicella.bracteosa 556 512 356 132 524 0 0 0 0 0 0 0 0
Carolus.chasei 604 452 432 200 0 0 0 0 0 0 0 0 0
Stigmaphyllon.paralias 504 816 0 0 0 0 0 0 0 0 0 0 0
Banisteriopsis.stellaris 292 300 244 116 0 0 0 0 0 0 0 0 0
Banisteriopsis.schizoptera 228 224 124 120 0 0 0 0 0 0 0 0 0
Stigmaphyllon.auriculatum 240 164 68 0 196 0 0 0 0 0 0 0 0
Stigmaphyllon.ciliatum 268 196 0 0 164 0 0 0 0 0 0 0 0
Janusia.anisandra 188 244 0 96 0 0 0 0 0 0 0 0 0

2. Graficar

Cuando los datos no se encuentren organizados de mayor a menor se debe usar antes la funcion sortweb() sobre los datos

plotweb(bezerra2009, method="normal", text.rot="90",
labsize=0.9, col.low="#CDCD00", col.high="#27408B", col.interaction="cornsilk4")

Estas interacciones tambien se pueden graficar de otra manera a traves de la funcion visweb()

visweb(bezerra2009, plotsize=9)

Usando el paquete NetworkD3

Paquetes necesarios

library(networkD3)
library(tidyverse)
library(bipartite)

1. Convertimos la matrix de datos a un Data Frame

datos <- bezerra2009 %>% as_tibble(rownames = "source")

2. Covertimos la tabla a la forma adecuada para ser leida por el paquete

links <- datos %>% 
        pivot_longer(2:14, names_to = "target", values_to = "value")

3. Creamos un Data Frame con todas especies de plantas

nodes <- data.frame(
        name=c(as.character(links$source), 
               as.character(links$target)) %>% unique()
)

4. Hacer las conecciones con un ID.

links$IDsource <- match(links$source, nodes$name)-1 
links$IDtarget <- match(links$target, nodes$name)-1

5. Hacer el plot

sankeyNetwork(Links = links, Nodes = nodes,
                   Source = "IDsource", Target = "IDtarget",
                   Value = "value", NodeID = "name", 
                   sinksRight=F, fontSize = 10)

Usando el paquete circlize

Paquetes necesarios

library(circlize)
library(tidyverse)

1. Creamos una matrix de datos

valores <- c(500:1000)

muestra <- sample(valores, 15)

col_pal <- c(bee1 = "#6a3d9a", bee2 = "#e31a1c", bee3 = "#ff7f00", bee4 = "#1f78b4", bee5 = "#fb9a99",
             plant1 = "#33a02c", plant2 = "#33a02c" , plant3 = "#33a02c")

tabla <- matrix(muestra, nrow = 5, dimnames = list(c("bee1", "bee2", "bee3", "bee4", "bee5"),
                                                               c("plant1", "plant2", "plant3")))

2. Graficamos

chordDiagram(tabla, grid.col = col_pal)

comments powered by Disqus