R的網絡視覺化包整理: igraph, diagrammR , ggraph

整理一下R包中做網絡視覺化(network visualization)的工具包

igraph

簡介
有十年開發歷史的network graph包,其發展成熟,很多後來開發的工具包
開發者:Gábor Csárdi, Tamás Nepusz

GGally

簡介
為ggplot2的延伸套件,其中的函數ggnet2專門可以用來畫network
開發者:Barret Schloerke

network3d

簡介
是D3 javascript的network graph R套件,也支持igraph的資料結構,他可以將圖形輸出至rmarkdown, shiny或是網頁的形式。
開發者:Christopher Gandrud, JJ Allaire, Kent Russell, & CJ Yetman

Rgraphviz

簡介
主要由bioconductor項目的負責人所開發的工具包,但主要語法承襲base繪圖語法,且視覺化的效果跟plot系列的調性一樣
開發者:Jeff Gentry, Robert Gentleman, Wolfgang Huber

diagrammR

簡介
這個工具的設計很有野心,整合多種常見的network創建語法,包括graphviz等,其整套語法建構得很完整,加上文檔講解清晰,算是目前network visualization系列的工具包中文檔最詳盡用心的。
開發者: Richard Iannone, Kent Russell , JJ Allaire, Michaël Benesty

network

簡介
使用network object來將關聯性資料轉換成graph型態
開發者:Carter Butts

ggnetwork

簡介
可以將network object直接用ggplot來繪圖
開發者:François Briatte

ggraph

簡介
是目前很完整地實現ggplot2語法來設計graph, network視覺化的工具包
開發者:Thomas Lin Pedersen

tidygraph

簡介
承襲ggraph,但著眼與如何用tidyverse的語法來處理graph/network data structure
開發者:Thomas Lin Pedersen

總結

各種包的差異上,主要是在graphics、graph data manipulation、layout三大方面的差異,graphics效果上可以大致分成三大類,承襲base plot的效果、ggplot grammer和javascript功能三類,graph data manipulation上來說,diagrammR和ggraph在圖形資料結構的處理上都支持關聯性資料、matrix資料等模式,目前只對igraph, diagrammR這兩個包有比較深入的使用,在視覺化的效果上,後者的確優秀許多。

R視覺化套件:grid簡介

grid套件是由Paul Murrell所寫的,而目前知名的ggplot2便是奠基於grid的工作上,相對於ggplot2的設計,grid可以讓使用者從比較底層的方式去控制視覺化物件,且最新版的R已經屬於base package,所以一安裝R就會安裝好grid。

想要了解更深入grid背後的邏輯和設計可以看Paul Murrell所寫的書R Graphics,有提供免費的網頁版本可以閱讀。

grid架構視覺化圖形的邏輯主要有兩個:
1. 直接底層控制畫線、正方形、文字、圓形、點,使用x-y座標控制
2. 藉由控制視野變化來調整視覺化效果(Viewports)
screenshot.png