本文将描述如何在R中创建自定义Sankey图。
我将首先解释Sankey图的基础,然后提供自动创建和手动控制的布局的示例。
Sankey图的元素
Sankey图是一种可视化数据流的方式。Sankey图由三组元素组成: 节点, 链接和确定其位置的指令。
首先,有节点。在下面的示例中,方框表示四个节点。
这些链接具有 与之关联的值,该值由链接的厚度表示。在示例中,连接节点A和节点B的第一条链接的宽度是连接A和C的第二条链接的宽度的一半。此外,从B到D的链接再次变大,最大的链接是从C到D。
使用R
nodes = data.frame("name" =
c("Node A", # Node 0
...
"Node D"))# Node 3
links = as.data.frame(matrix(c(
0, 1, 10, # Each row represents a link. The first number
....
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)
此代码的一些方面要注意:
- 第1行加载程序包。
- 第2至6行创建一个数据框。
- 第7至11行指定链接。
- 最后几行使用sankeyNetwork函数。
如果要修改此示例,则只需修改节点(此示例中的第3至6行)和链接(第8至11行)即可。
使用自动布局的Sankey图
可下载资源
关于作者
Kaizong Ye是拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。
本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。
非常感谢您阅读本文,如需帮助请联系我们!
使用R
nodes = data.frame("name" =
c("Node A", # Node 0
...
"Node D"))# Node 3
links = as.data.frame(matrix(c(
0, 1, 10, # Each row represents a link. The first number
....
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)
此代码的一些方面要注意:
- 第1行加载程序包。
- 第2至6行创建一个数据框。
- 第7至11行指定链接。
- 最后几行使用sankeyNetwork函数。
如果要修改此示例,则只需修改节点(此示例中的第3至6行)和链接(第8至11行)即可。
使用自动布局的Sankey图