igraph对象可以具有有向边和无向边吗?

问题描述

我正在尝试使用igraph / ggraph绘制网络,其中某些边是定向的,而其他边则不是。

我的边缘列表中的一个小例子。在这里,我想将蛋白质位点的边缘表示为无向,而将磷酸化的边缘表示为有向。

df <- data.frame(
  stringsAsFactors = FALSE,from = c("RPS6KA3","RPS6KA3","RPS6KA3"),to = c("RPS6KA3_Y529-p","RPS6KA3_S227-p","RPS6KA3_S369-p","RPS6KA3_T577-p","ATF4"),action = c("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)

enter image description here

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

enter image description here

我不确定ggraph是否支持类似的内容。我认为可能可以更改箭头的大小,并为无方向的边缘将其设置为0。这无效,因为箭头继承了边缘其余部分的样式。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...