Un oggetto igraph può avere bordi diretti e non orientati?
Sto cercando di usare igraph / ggraph per tracciare una rete, in cui alcuni dei bordi sono diretti e altri no.
Un piccolo esempio dal mio edgelist. Qui i bordi del sito della proteina sono ciò che voglio rappresentare come non orientati e il bordo della fosforilazione come diretto.
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")
)
Ho provato a suddividere i bordi non orientati e specificarli come tali, ma non ha funzionato:
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"] ))
Qualcuno ha altri suggerimenti? Come ho detto, in realtà voglio solo tracciare questo (usando ggraph).
Grazie!
Risposte
Se desideri stampare con igraph
, puoi importare l'elenco dei bordi come indicato e quindi utilizzare edge.arrow.mode
.
nw <- graph_from_data_frame(df, directed = T)
plot(nw)

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

Non sono sicuro che ggraph
supporti qualcosa di simile. Ho pensato che fosse possibile modificare la dimensione delle frecce e impostarla su 0 per i bordi non orientati. Questo non funziona, poiché le frecce ereditano lo stile del resto del bordo.