ggraph trabaja con objetos de grafo creados con igraph. Construye uno a partir de un data frame de lista de aristas con graph_from_data_frame(). Cada fila es una conexión entre dos nodos.
# install.packages("igraph")
library(igraph)
edges <- data.frame(
from = c("Alice", "Alice", "Bob", "Carol", "Carol", "Dave", "Eve"),
to = c("Bob", "Carol", "Dave", "Dave", "Eve", "Frank","Frank"),
weight = c(3, 5, 2, 4, 1, 3, 2)
)
g <- graph_from_data_frame(edges, directed = FALSE)
ggraph() inicializa el gráfico y establece el algoritmo de layout. Añade geom_edge_link() para las aristas y geom_node_point() para los nodos. theme_graph() elimina los ejes y el fondo gris.
# install.packages("ggraph")
library(ggraph)
ggraph(g, layout = "fr") +
geom_edge_link() +
geom_node_point(size = 5) +
theme_graph()


Añade geom_node_text() y mapea name a label. Activa repel = TRUE para que las etiquetas se alejen del centro de los nodos y no se solapen.
# install.packages("ggraph")
library(ggraph)
ggraph(g, layout = "fr") +
geom_edge_link() +
geom_node_point(size = 5) +
geom_node_text(aes(label = name), repel = TRUE) +
theme_graph()
El argumento layout controla cómo se posicionan los nodos. "fr" (Fruchterman-Reingold) es el layout de fuerzas por defecto. Otras opciones habituales son "kk" (Kamada-Kawai), "circle", "star" y "tree".
# install.packages("ggraph")
library(ggraph)
ggraph(g, layout = "circle") +
geom_edge_link() +
geom_node_point(size = 5) +
geom_node_text(aes(label = name)) +
theme_graph()


Mapea degree(g) a size y color dentro de aes() para codificar cuántas conexiones tiene cada nodo. degree() es una función de igraph que cuenta las aristas por nodo.
# install.packages("ggraph")
library(ggraph)
ggraph(g, layout = "fr") +
geom_edge_link(alpha = 0.4) +
geom_node_point(aes(size = degree(g),
color = degree(g))) +
scale_color_viridis_c(guide = "none") +
scale_size(range = c(4, 10), guide = "none") +
theme_graph()
Mapea un atributo numérico de arista a width dentro de aes() y usa scale_edge_width() para definir el rango de salida. Aquí la columna weight codifica la intensidad de la conexión.
# install.packages("ggraph")
library(ggraph)
ggraph(g, layout = "fr") +
geom_edge_link(aes(width = weight), alpha = 0.6) +
geom_node_point(size = 5) +
scale_edge_width(range = c(0.5, 3), guide = "none") +
theme_graph()


Activa directed = TRUE en graph_from_data_frame() y pasa un arrow() a geom_edge_link(). Usa end_cap para que la punta de la flecha no quede solapada con el nodo.
# install.packages(c("igraph", "ggraph"))
library(igraph)
library(ggraph)
gd <- graph_from_data_frame(edges, directed = TRUE)
ggraph(gd, layout = "fr") +
geom_edge_link(arrow = arrow(length = unit(3, "mm"),
type = "closed"),
end_cap = circle(3, "mm")) +
geom_node_point(size = 5) +
theme_graph()
Sustituye geom_edge_link() por geom_edge_arc() para dibujar aristas curvas. El argumento strength controla la curvatura — 0 es recto, 1 es una semicircunferencia.
# install.packages("ggraph")
library(ggraph)
ggraph(g, layout = "fr") +
geom_edge_arc(strength = 0.3, alpha = 0.6) +
geom_node_point(size = 5) +
geom_node_text(aes(label = name), repel = TRUE) +
theme_graph()

Aprende estadística desde lo básico hasta técnicas avanzadas, explicado con claridad
Ir al sitio
También te puede interesar