¿Puede un objeto igraph tener bordes dirigidos y no dirigidos?
Estoy tratando de usar igraph / ggraph para trazar una red, en la que algunos de los bordes están dirigidos y otros no.
Un pequeño ejemplo de mi edgelist. Aquí los bordes del sitio de la proteína son lo que quiero representar como no dirigido y el borde de fosforilación como dirigido.
df <- data.frame(
stringsAsFactors = FALSE,
from = c("RPS6KA3", "RPS6KA3", "RPS6KA3", "RPS6KA3", "RPS6KA3"),
to = c("RPS6KA3_Y529-p",
"RPS6KA3_S227-p","RPS6KA3_S369-p","RPS6KA3_T577-p","ATF4"),
action = c("protein-site","protein-site",
"protein-site","protein-site","phosphorylation")
)
Intenté crear subconjuntos de los bordes no dirigidos y especificarlos como tales, pero no funcionó:
library(igraph)
nw <- graph_from_data_frame(df)
E(nw)[E(nw)$action == "protein-site"] <- as.undirected(subgraph.edges(nw, E(nw)[E(nw)$action == "protein-site"] ))
¿Alguien tiene alguna otra sugerencia? Como digo, en realidad solo quiero trazar esto (usando ggraph).
¡Gracias!
Respuestas
Si está dispuesto a trazar con igraph
, puede importar la lista de bordes como se indica y luego usar edge.arrow.mode
.
nw <- graph_from_data_frame(df, directed = T)
plot(nw)

plot(nw,
edge.arrow.mode = ifelse(E(nw)$action=="protein-site", "-", ">"))

No estoy seguro de que sea ggraph
compatible con algo similar. Pensé que sería posible cambiar el tamaño de las flechas y establecerlo en 0 para los bordes no dirigidos. Esto no funciona, ya que las flechas heredan el estilo del resto del borde.