使用R的networkD3包畫可交互的網絡圖


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)

詳細資料,參見http://christophergandrud.github.io/networkD3/

反饋與建議


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM