Si está bien que las líneas sean curvas, entonces sé de dos maneras. Primero creo un edgelist:
Edges <- data.frame(
from = rep(1:5,each=5),
to = rep(1:5,times=5),
thickness = abs(rnorm(25)))
Edges <- subset(Edges,from!=to)
Este contiene el nodo de origen en la primera columna, el nodo de destino en el segundo y el peso en el tercero. Puedes usar mi qgraph de pacake para trazar un gráfico ponderado usando esto. Por defecto, los bordes son curvos si hay múltiples aristas entre dos nodos:
library("qgraph")
qgraph(Edges,esize=5,gray=TRUE)
Sin embargo, este paquete no está realmente diseñado para este propósito y no se puede cambiar los colores del borde (sin embargo, trabajando en eso:)). Sólo se pueden hacer todos los bordes negro con un pequeño truco:
qgraph(Edges,esize=5,gray=TRUE,minimum=0,cut=.Machine$double.xmin)
Para un mayor control se puede utilizar el paquete de igraph. Primero hacemos el gráfico:
library("igraph")
g <- graph.edgelist(as.matrix(Edges[,-3]))
Tenga en cuenta la conversión a la matriz y restar uno porque el primer nodo es 0.A continuación definimos el diseño:
l <- layout.fruchterman.reingold(g)
Ahora podemos cambiar algunos de los parámetros de borde con la función E()
:
# Define edge widths:
E(g)$width <- Edges$thickness * 5
# Define arrow widths:
E(g)$arrow.width <- Edges$thickness * 5
# Make edges curved:
E(g)$curved <- 0.2
Y finalmente trazar la gráfica:
plot(g,layout=l)
Muchas gracias, Las 2 soluciones están funcionando. Pero ahora encontré otro problema; Estoy dibujando 2 redes con los mismos nombres de nodo pero con diferente grosor de borde, el mismo nodo tiene una ubicación diferente en cada red, por ejemplo, el nodo 1 en la 1ra red se dibuja en la esquina superior izquierda y en la 2da red se dibuja en la parte superior derecho. Necesito que los nodos estén en la misma ubicación, por lo que es fácil compararlos visualmente entre las 2 redes. ¿Conoces una manera de arreglar esto? Gracias – Pansy
Puede definir manualmente la ubicación de los nodos utilizando un diseño fijo. En qgraph esto se puede hacer de la siguiente manera: Almacene el diseño de un gráfico con: 'L <- qgraph ([arguments]) $ layout' luego utilícelo en otro gráfico con' qgraph ([arguments], layout = L) '. En igraph puedes guardar el layour como ya he mostrado anteriormente y solo usarlo nuevamente en el segundo gráfico. –
No estoy seguro de por qué, pero el bit que tiene el código 'g <- graph.edgelist (as.matrix (Edges [, - 3] -1))' produce un error como 'Error in graph (t (el) , dirigido = dirigido): en structure_generators.c: 84: Id. de vértice (negativo) inválido, Id. de vértice no válido ¿Alguna idea de cuál es el problema? –