War*_*ght 5 r sankey-diagram networkd3
我正在尝试使用networkD3库构建桑基图。我有以下代码和数据:
# Plotting the Sankey network diagram
nodes = data.frame("name" =
c("Mamalian", # Node 0
"Avian", # Node 1
"Critical", # Node 2
"Critical-maintained", # Node 3
"Endangerd", #Node 4
"Endangered-maintained", #Node 5
"Not at risk")) # Node 6
links = as.data.frame(matrix(c(
0, 2, 16, # Note the values in the final column refer to the % of breeds in each risk category
0, 3, 2.2,
0, 4, 17.6,
0, 5, 7.0,
0, 6, 57.2,
1, 2, 23.9,
1, 3, 1.3,
1, 4, 24.7,
1, 5, 13.1,
1, 6, 37.0),
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, iterations = 0)
Run Code Online (Sandbox Code Playgroud)
我想手动更改与每个节点关联的颜色,因为它们当前与我列出的危险类别不对应。我怎样才能做到这一点?
使用该colourScale参数设置自定义 JS/D3 色标。(我把你名字中的空格替换为-因为d3.scaleOrdinal()不喜欢它们)。使用示例中的数据/对象......
nodes$group <- gsub(" ", "-", nodes$name)
color_scale <-
"d3.scaleOrdinal()
.domain(['Mamalian', 'Avian', 'Critical', 'Critical-maintained',
'Endangerd', 'Endangered-maintained', 'Not-at-risk'])
.range(['#000', '#F00', '#0F0', '#00F', '#FF0', '#F0F', '#0FF']);
"
sankeyNetwork(Links = links, Nodes = nodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
fontSize= 12, nodeWidth = 30, iterations = 0,
NodeGroup = "group", colourScale = color_scale)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2292 次 |
| 最近记录: |