d3network包
http://www.cnblogs.com/shangfr/p/5417054.html
ShangFR
2016年5月6日
R d3network包
通過Christopher Gandrud編寫的d3network包可以輕松創建基於Htmlwidgets框架的網絡圖。它目前支持三種類型的網絡圖:
- 力導向圖,可以顯示復雜的網絡划分關系;
- 桑基圖(Sankeydiagram),利於展現分類維度間的相關性,以流的形式呈現共享同一類別的元素數量。特別適合表達集群的發展,比如展示特定群體的人數分布等;
- Reingold-Tilford樹型圖,可以把一個樹形結構的數據,用不重疊、緊湊、分層的形式展示出來。
下面通過例子展示這三種類型的網絡圖。
力導向圖
首先載入networkD3包,然后創建src源、target目標兩個向量,整合成數據框networkData,最后就可以通過simpleNetwork函數畫出一個簡單的力導向圖(見例1);此外,也可以通過自有數據框MisLinks、MisNodes創建復雜一點的力導向圖(見例2)。
#例1 # 載入軟件包 library(networkD3) # 創建數據 src <- c("A", "A", "A", "A", "B", "B", "C", "C", "D") target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I") networkData <- data.frame(src, target, zoom = TRUE) # 畫圖 simpleNetwork(networkData)
#例2 # 直接載入數據包(數據框) data(MisLinks) data(MisNodes) # 畫圖 forceNetwork(Links = MisLinks, Nodes = MisNodes, Source = "source", Target = "target", Value = "value", NodeID = "name", Group = "group", opacity = 0.8, zoom = TRUE)
桑基圖(Sankeydiagram)
桑基圖(Sankeydiagram),利於展現分類維度間的相關性,以流的形式呈現共享同一類別的元素數量。特別適合表達集群的發展,比如展示特定群體的人數分布等;可以直接使用網上下載的JSON數據創建桑基圖,例子如下:
Reingold-Tilford樹型圖
RT樹型圖可以把一個樹形結構的數據,用不重疊、緊湊、分層的形式展示出來。
URL <- paste0( "https://cdn.rawgit.com/christophergandrud/networkD3/", "master/JSONdata//flare.json") ## 格式轉化 Flare <- jsonlite::fromJSON(URL, simplifyDataFrame = FALSE) # 使用部分數據1-3 Flare$children = Flare$children[1:3] #環形的RT樹,如下圖: radialNetwork(List = Flare, fontSize = 10, opacity = 0.9)
#直接生成一棵從左到右的樹,如下圖: diagonalNetwork(List = Flare, fontSize = 10, opacity = 0.9)