使用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)

 

ABCDJEFGHI

 

#例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數據創建桑基圖,例子如下:

 

Agricultural 'waste'Bio-conversionLiquidLossesSolidGasBiofuel importsBiomass importsCoal importsCoalCoal reservesDistrict heatingIndustryHeating and cooling - commercialHeating and cooling - homesElectricity gridOver generation / exportsH2 conversionRoad transportAgricultureRail transportLighting & appliances - commercialLighting & appliances - homesGas importsNgasGas reservesThermal generationGeothermalH2HydroInternational shippingDomestic aviationInternational aviationNational navigationMarine algaeNuclearOil importsOilOil reservesOther wastePumped heatSolar PVSolar ThermalSolarTidalUK land based bioenergyWaveWind

 

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)

 

flareanalyticsclusterAgglomerativeClusterCommunityStructureHierarchicalClusterMergeEdgegraphBetweennessCentralityLinkDistanceMaxFlowMinCutShortestPathsSpanningTreeoptimizationAspectRatioBankeranimateEasingFunctionSequenceinterpolateArrayInterpolatorColorInterpolatorDateInterpolatorInterpolatorMatrixInterpolatorNumberInterpolatorObjectInterpolatorPointInterpolatorRectangleInterpolatorISchedulableParallelPauseSchedulerSequenceTransitionTransitionerTransitionEventTweendataconvertersConvertersDelimitedTextConverterGraphMLConverterIDataConverterJSONConverterDataFieldDataSchemaDataSetDataSourceDataTableDataUtil

 

#直接生成一棵從左到右的樹,如下圖: diagonalNetwork(List = Flare, fontSize = 10, opacity = 0.9)

 

flareanalyticsclusterAgglomerativeClusterCommunityStructureHierarchicalClusterMergeEdgegraphBetweennessCentralityLinkDistanceMaxFlowMinCutShortestPathsSpanningTreeoptimizationAspectRatioBankeranimateEasingFunctionSequenceinterpolateArrayInterpolatorColorInterpolatorDateInterpolatorInterpolatorMatrixInterpolatorNumberInterpolatorObjectInterpolatorPointInterpolatorRectangleInterpolatorISchedulableParallelPauseSchedulerSequenceTransitionTransitionerTransitionEventTweendataconvertersConvertersDelimitedTextConverterGraphMLConverterIDataConverterJSONConverterDataFieldDataSchemaDataSetDataSourceDataTableDataUtil

 

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

 


免責聲明!

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



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