桑基图

作者: 生信编程日常 | 来源:发表于2020-03-25 23:54 被阅读0次

桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融等数据的可视化分析。因1898年Matthew Henry Phineas Riall Sankey绘制的“蒸汽机的能源效率图”而闻名,此后便以其名字命名为“桑基图”。因1898年Matthew Henry Phineas Riall Sankey绘制的“蒸汽机的能源效率图”而闻名,此后便以其名字命名为“桑基图”。

R语言里面主要用networkD3包的sankeynetwork()函数.
主要参数为:

sankeyNetwork(Links, Nodes, Source, Target, Value, NodeID, NodeGroup = NodeID, LinkGroup = NULL, units = "",
  colourScale = JS("d3.scaleOrdinal(d3.schemeCategory20);"), fontSize = 7,
  fontFamily = NULL, nodeWidth = 15, nodePadding = 10, margin = NULL,
  height = NULL, width = NULL, iterations = 32, sinksRight = TRUE)

桑基图的数据结构很简单,只有三列数据信息,起点,终点,权重.
一个比较好的示例原文链接https://rpubs.com/dmormandy/DV_Sankey
如下

library(networkD3)

nodes = data.frame("name" = c("CUBD15_CAULFIELD_SOUTH","CUBDEM1","GMWE15_GLENHUNTLY_WEST","CUBD15_CAULFIELD_SOUTH",
                              "OMND15_ORMOND","BTED15_BRIGHTON_EAST","GMWEEM2","GMWEEM3","CUBDEM2","CUBDEM3",
                              "OMNDEM3","BTEDEM3","CUBDEM2","GVAD15_GARDENVALE","HUID15_HURLINGHAM_PARK",
                              "GVADEM1","HUIDEM3","OMNDEM3","GVADEM3","GVADEM2"))

links = as.data.frame(matrix(c(
0,1,6861,1,2,5284,1,3,1111,1,4,349,1,5,117,2,6,3368,2,7,1916,3,8,590,3,9,521,4,10,349,5,11,117,0,8,11979,8,13,7616,8,14,1283,
8,4,1213,8,3,1474,8,5,393,13,15,6866,14,16,1283,4,10,1213,3,9,904,3,1,570,13,18,440,5,11,393,13,19,310),
 byrow = TRUE, ncol = 3))

names(links) = c("source", "target", "value")

sankeyNetwork(Links = links, Nodes = nodes,
 Source = "source", Target = "target",
 Value = "value", NodeID = "name",
 fontSize= 12, nodeWidth = 30)
image.png

参考:
https://zhuanlan.zhihu.com/p/26897906
https://cloud.tencent.com/developer/article/1092599

欢迎关注公众号~


生信编程日常

相关文章

网友评论

    本文标题:桑基图

    本文链接:https://www.haomeiwen.com/subject/nyuwyhtx.html