igraph 对象可以有有向和无向边吗?
Can an igraph object have directed and undirected edges?
我正在尝试使用 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 表示无向边。这不起作用,因为箭头继承了边缘其余部分的样式。
我正在尝试使用 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 表示无向边。这不起作用,因为箭头继承了边缘其余部分的样式。