R的可折叠网络图

问题描述:

我试图在R的基础上实现可折叠网络more network layouts。但是,我总是得到Object not found的错误。R的可折叠网络图

devtools::install_github 
devtools::install_github("timelyportfolio/[email protected]/d3.chart.layout") 
library(htmltools) 
library(networkD3) 

hc = hclust(dist(mtcars)) 

treeNetwork( 
    as.treeNetwork(hc, "mtcars") 
) 

tagList(
    lapply(
    c("tree.cartesian" 
     ,"tree.radial" 
     ,"cluster.cartesian" 
     ,"cluster.radial" 
    ) 
    ,function(chartType){ 
     hierNetwork(as.treeNetwork(hc), type=chartType, zoomable=T, collapsible=T) 
    } 
) 
) 
tree.cartesian 

编辑1

我们如何利用这些图表为边缘文件建立一个网络?例如:

From To 
A  B 
A  C 
A  D 
D  L 
L  J 
J  T 
B  O 
+0

你在哪里得到“未找到对象”? – Marcelo

+0

@Marcelo - 在控制台本身 – NinjaR

+0

我的意思是询问代码的哪一行出现错误。 – Marcelo

是:

library(networkD3) 
to <- c("a","a","a","d","l","j","b") 
from <- c("b","c","d","l","j","t","o") 
df <-data.frame(to,from) 
simpleNetwork(df) 

你应该使用官方networkD3包:

install.packages("networkD3") 
+0

但是这不会给我我正在寻找的可折叠网络.. – NinjaR

我不知道什么tree.cartesian对象应该是在你的代码,但是您收到错误“找不到对象”,因为tree.cartesian对象从未在您的代码中创建。

话虽如此,如果您从tagList函数中删除您的lapply命令,您的代码将工作。或者更简洁...

devtools::install_github("timelyportfolio/[email protected]/d3.chart.layout") 
library(networkD3) 

hc = hclust(dist(mtcars)) 

hierNetwork(as.treeNetwork(hc), type = 'tree.cartesian', zoomable = T, collapsible = T) 
# or 
hierNetwork(as.treeNetwork(hc), type = 'tree.radial', zoomable = T, collapsible = T) 
# or 
hierNetwork(as.treeNetwork(hc), type = 'cluster.cartesian', zoomable = T, collapsible = T) 
# or 
hierNetwork(as.treeNetwork(hc), type = 'cluster.radial', zoomable = T, collapsible = T) 

只是要清楚,你正在使用networkD3,其中(据我所知)不再被开发的一个分支。目前有一些意向将此功能添加到官方的networkD3分支,但目前(v0.3.1),此功能(可折叠分支)当前不可用。

+0

这是否回答你的问题? –

networkD3的当前官方开发版本(v0.4.9000截至2017.09.02)具有新功能treeNetwork,可启用可折叠树。

devtools::install_github("christophergandrud/networkD3") 
library(networkD3) 

hc <- hclust(dist(mtcars)) 
treeNetwork(hc) 

edges <- read.table(header = T, text = " 
From To 
NA  A 
A  B 
A  C 
A  D 
D  L 
L  J 
J  T 
B  O 
") 

edges <- as_treenetdf(edges, cols = c(nodeId = "To", parentId = "From")) 
treeNetwork(edges) 

它还在开发中,所以我们将不胜感激feedback