簡體   English   中英

如何從圖形 object 到圖形 object 的 go? (右)

[英]How to go from a ggraph object to an igraph object? (R)

我想創建一個交互式擴充 map。 我使用了來自emapplot package 的emapplot function 來執行此操作。 但是這個 function 返回 static plot。 我想使用(最好) visNetwork package 使其具有交互性。

emapplot function 返回一個 ggraph object。 我找不到 function 將 ggraph object 更改為 igraph/visNetwork/tbl_graph object。 於是我想到了提取節點和邊緣信息。

這可用於創建示例 ggraph object。

library(igraph)
library(ggraph)
library(tidyverse)

graph <- graph_from_data_frame(highschool)
graph2 <- ggraph(graph, layout = "kk") + 
    geom_edge_link(aes(colour = factor(year))) + 
    geom_node_point()

attributes(graph2)

Output:

$names
[1] "data"        "layers"      "scales"      "mapping"     "theme"       "coordinates" "facet"       "plot_env"    "labels"     

$class
[1] "ggraph" "gg"     "ggplot"

可以使用graph2$data獲得節點位置。

           x          y name .ggraph.orig_index circular .ggraph.index
1  0.7326425  2.3767052    1                  1    FALSE             1
2  0.7041666  2.9986454    2                  2    FALSE             2
3  1.5125110  2.9624914    3                  3    FALSE             3
4 -2.7467842 -1.0804763    4                  4    FALSE             4
5 -2.8196405  0.2369667    5                  5    FALSE             5
6 -2.6184244  2.1968979    6                  6    FALSE             6

現在我現在需要知道以獲取邊緣信息。

我看到ggraph::get_edgesgeom_edge_link類的函數用於檢索邊緣信息。 不幸的是,我無法讓它工作。

有人知道如何從 ggraph object 獲取邊緣信息,或者將其更改為 igraph object?

編輯
應 camille 的要求,這里是使用 emapplot function 的示例

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("enrichplot")

library(DOSE)
library(ggnewscale)
library(ggraph)
library(igraph)
library(enrichplot)

data(geneList)
de <- names(geneList)[1:100]
x <- enrichDO(de)
x2 <- pairwise_termsim(x)
graph <- emapplot(x2)

找到了!

假設您有一個名為x的 ggobject。 您可以將節點和邊緣信息提取為tbl_graph object(這是 igraph 對象的包裝器),如下所示:

graph_info <- attributes(x$data)$graph

# If you want to plot it using visNetwork
visNetwork::visIgraph(graph_info)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM