Может ли объект igraph иметь направленные и неориентированные края?
Я пытаюсь использовать igraph / ggraph для построения сети, в которой одни ребра направлены, а другие нет.
Небольшой пример из моего списка публикаций. Здесь края белковых сайтов - это то, что я хочу представить как ненаправленные, а край фосфорилирования - как направленные.
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")
)
Я попытался выделить неориентированные ребра и указать их как таковые, но это не сработало:
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"] ))
У кого-нибудь есть другие предложения? Как я уже сказал, на самом деле я просто хочу это построить (используя ggraph).
Благодаря!
Ответы
Если вы хотите рисовать вместе, igraph
вы можете импортировать список ребер, как указано, а затем использовать edge.arrow.mode
.
nw <- graph_from_data_frame(df, directed = T)
plot(nw)

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

Я не уверен, что ggraph
поддерживает что-либо подобное. Я подумал, что можно изменить размер стрелок и установить его на 0 для ненаправленных краев. Это не работает, поскольку стрелки наследуют стиль остальной кромки.