【问题标题】:Can an igraph object have directed and undirected edges?igraph 对象可以有有向边和无向边吗?
【发布时间】:2020-12-09 18:37:21
【问题描述】:

我正在尝试使用 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)。

谢谢!

【问题讨论】:

  • 这只是一个可视化问题吗?还是您想用这样的图表做某事

标签: r graph igraph ggraph


【解决方案1】:

如果您愿意使用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 用于无向边。这不起作用,因为箭头继承了边缘其余部分的样式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-25
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多