library(ggraph)
library(ggthemes)
library(dplyr)
library(igraph)
library(pander)
Se tiene un dataset que presenta los viajes de unas aerolineas. Se hará mayor enfoque en la información a cerca de los países de origen y destino para la creación de los grafos.
| Origen | Destino |
|---|---|
| SFO | RDU |
| ORD | MSY |
| ITO | LAX |
| JAC | ORD |
| MCI | IAH |
| LGA | ORD |
base_usoo=base_uso %>% group_by(Origen, Destino) %>% summarise(n=n()) %>% arrange(-n)
base_uso2=base_usoo[base_usoo$n>500,]
pander(head(base_uso2))
| Origen | Destino | n |
|---|---|---|
| SFO | LAX | 1420 |
| LAX | SFO | 1400 |
| JFK | LAX | 1138 |
| LAX | JFK | 1138 |
| LGA | ORD | 994 |
| ORD | LGA | 984 |
Se mirará un grafo cuyo ancho de las aristas será proporcional a la frecuencia con que se toma esos trayectos de origen a destino. Es decir, entre más cantidad de veces se viaja de un país a otro más ancha será la linea que los une.
g=graph.data.frame(base_uso2,directed = F)
plot.igraph(g,
edge.curved =T, # Aristas curvas
edge.color = "black", # Color de aristas
edge.width = (E(g)-min(E(g)))/12) # Ancho de aristas
A continuación, se elimina los nodos o vertices cuyo grado es menor o igual a 2, es decir no se tendrá en cuenta aquellos nodos que se conectan a otros nodos con solo dos aristas o menos.
new.g<-delete.vertices(graph = g,v = V(g)[degree(graph = g)<=2])
plot.igraph(new.g,edge.curved=T,# Aristas curvas
edge.color="black", # Color de aristas
vertex.color="azure3",# Color de nodos o vertices
edge.width=(E(g)-min(E(g)))/12, # ancho de arista
layout=layout.auto, # layout es la forma del grafo
vertex.label.color="black") # color de las etiquetas de los nodos
gd=graph.data.frame(d = base_uso2,directed = T)
new_gd=delete.vertices(graph = gd,v = V(graph = gd)[degree(graph = gd,mode = "all")<=2])
A continuación, se presenta un grafo dirigido que tendrá el tamaño de sus nodos proporcional al grado de dicho nodo según número de aristas entrantes. Lo que quiere decir que los países cuyo vertice sea más grande más han sido elegidos como lugar de destino.
plot.igraph(new_gd,
vertex.size=degree(gd,mode = "in")*2, # Tamaño de nodo
edge.arrow.size=0.2, # tamaño de flecha de la arista
edge.arrow.width=0.6, # ancho de flecha de la arista
edge.color="black", # color de arista
edge.curved = T, # arista curva
vertex.label.cex=0.8, # tamaño de las etiquetas de los nodos
main="Vuelos de Origen a Destino",
vertex.label.color="black", # color de las etiquetas de los nodos
vertex.color="coral", # color de nodos
#vertex.label.family="arial"
)
Grado de los nodos según aristas de entrada. En orden descendente se muestra los países que más han sido elegidos como destino por los viajeros.
degree(gd,mode = "in") %>% as.data.frame() %>% arrange(-.) %>% head(5)
## .
## LAX 12
## ATL 12
## SFO 11
## ORD 11
## DEN 9
Intermediación o betweennes. Es una medida que cuantifica el número de veces que un nodo actua como un puente a lo largo del camino más corto entre otros dos nodos. Lo que quiere decir que los países con mayor valor de esta medida, son los que más han actuado como enlace entre dos países.
betweenness(graph = gd) %>% as.data.frame() %>% arrange(-.) %>% head(5)
## .
## LAX 366.7667
## ATL 301.4000
## SFO 225.2667
## ORD 210.7667
## HNL 174.0000