[R] 使用networkD3 包繪制桑基圖

?;鶊D,繪制人口流動、網(wǎng)絡(luò)等表征信息流動關(guān)系或者對應(yīng)關(guān)系的圖表。
使用bipartite包自帶的二分網(wǎng)絡(luò)數(shù)據(jù)進行繪制。

library(igraph)
library(networkD3)
library(bipartite)
library(tidyr)

data(Safariland)
nodes = data.frame(ID = unique(c(rownames(Safariland),colnames(Safariland))), stringsAsFactors = FALSE) 

edges <- Safariland %>% as.data.frame() %>% tibble::rownames_to_column(.,var = "plants") %>% 
  pivot_longer(cols = !plants ,names_to  = "animals")  %>% 
  mutate(value = if_else(value>0,1,0))%>%
  filter(value!=0) %>% as.data.frame() 

edges$plants <- match(edges$plants, nodes$ID) - 1
edges$animals <- match(edges$animals, nodes$ID) - 1

networkD3::sankeyNetwork(Links = edges ,
                         Nodes = nodes,
                         Source = "plants", 
                         Target = "animals",
                         Value = "value",
                         NodeID = "ID")

需要注意的地方在于 match 定義順序后需要再減一

edges$plants <- match(edges$plants, nodes$ID) - 1
edges$animals <- match(edges$animals, nodes$ID) - 1
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容