igraphオブジェクトに有向エッジと無向エッジを設定できますか?

Aug 20 2020

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を使用して)プロットしたいだけです。

ありがとう!

回答

3 desval Aug 20 2020 at 13:51

一緒にプロットし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に設定できるのではないかと思いました。矢印はエッジの残りの部分のスタイルを継承するため、これは機能しません。