我有兴趣通过这篇关于R的可折叠树的文章
http://bl.ocks.org/mbostock/4339083
我正在尝试使用这样的玩具数据集再现相同的例子
ID Car Bus Train Feedback_Car Feedback_Bus Feedback_Train 23433 Yes Yes Yes Toyota GreyHound Amtrak
哪个可以表示为可折叠树,如下所示
我想知道如果有人可以帮助我重现这个概念(可折叠的树),使用上面的玩具数据集,这个例子将给我一个想法如何不同的组件的工作,例如格式化的JSON数据在R等等,并作为一个初始点.提前致谢.
解决方法
您可以使用data.tree包将您的数据转换为JSON,也可以使用networkD3包:
dat <- read.table(text="ID Car Bus Train Feedback_Car Feedback_Bus Feedback_Train 23433 Yes Yes Yes Toyota GreyHound Amtrak",header=TRUE) ## Make an edgelist from your data edges <- rbind(cbind(dat$ID,names(dat)[2:4]),cbind(names(dat)[2:4],as.vector(t(dat[5:7])))) library(data.tree) tree <- FromDataFrameNetwork(as.data.frame(edges)) tree
那将打印如下:
levelName 1 23433 2 ¦--Car 3 ¦ °--Toyota 4 ¦--Bus 5 ¦ °--GreyHound 6 °--Train 7 °--Amtrak
现在,使用树结构来绘制networkD3:
lol <- ToListExplicit(tree,unname = TRUE) library(networkD3) diagonalNetwork(lol)
不幸的是,这并不支持可折叠的树木.但here是一个例子,如何获得你想要的闪光.为了将您的数据转换为正确的JSON格式,只需执行以下操作:
library(jsonlite) json <- toJSON(lol)