为桑基图中节点之间的链接着色:networkD3
Colour the links between nodes in sankey diagram: networkD3
我正在寻求帮助,为桑基图中节点之间的 link 着色。我在 R 中使用 networkD3 包来创建绘图。这是我想要实现的一个非常简单的例子:
library(networkD3)
nodes <- c("a", "b", "c")
source <- c(0, 0)
target <- c(1, 2)
value <- c(5, 5)
cbind(source, target, value) -> links
as.data.frame(links) -> links
as.data.frame(nodes) -> nodes
sankeyNetwork(Links=links, Nodes=nodes, Source="source",
Target="target", Value="value")
以上代码创建了一个简单的桑基图,其中 links 到 2 个节点,"b"
和 "c"
,从 "a"
。我想做的只是简单地为每个 link 着色,而不是为节点着色。例如,a->b 为绿色,a->c 为黄色。我试图遵循其他使用 d3.scaleOrdinal()
操纵色标的示例,但我没有任何运气。该图要么不呈现,要么始终保持灰色。
library(networkD3)
nodes<-c("a","b","c")
source<-c(0,0)
target<-c(1,2)
value<-c(5,5)
cbind(source,target,value)->links
as.data.frame(links)->links
as.data.frame(nodes)->nodes
links$group <- "blue"
my_color <- 'd3.scaleOrdinal() .domain(["blue"]) .range(["blue"])'
sankeyNetwork(Links = links,Nodes = nodes,Source = "source",Target =
"target",Value = "value", colourScale=my_color, LinkGroup="group")
您需要在链接中创建一个新列,命名要绘制的链接和地图,使用 d3.scaleOrdinal 每个名称和颜色。最后,将它们传递给 sankeyNetwork。
上面的示例会将所有链接绘制为蓝色
library(networkD3)
nodes<-c("a","b","c")
source<-c(0,0)
target<-c(1,2)
value<-c(5,5)
cbind(source,target,value)->links
as.data.frame(links)->links
as.data.frame(nodes)->nodes
links$group[1] <- "blue"
links$group[2] <- "green"
my_color <- 'd3.scaleOrdinal() .domain(["blue", "green"]) .range(["blue", "green"])'
sankeyNetwork(Links = links,Nodes = nodes,Source = "source",Target =
"target",Value = "value", colourScale=my_color, LinkGroup="group")
这个会做蓝色和绿色
在此处查看更多内容:https://www.r-graph-gallery.com/322-custom-colours-in-sankey-diagram/
我正在寻求帮助,为桑基图中节点之间的 link 着色。我在 R 中使用 networkD3 包来创建绘图。这是我想要实现的一个非常简单的例子:
library(networkD3)
nodes <- c("a", "b", "c")
source <- c(0, 0)
target <- c(1, 2)
value <- c(5, 5)
cbind(source, target, value) -> links
as.data.frame(links) -> links
as.data.frame(nodes) -> nodes
sankeyNetwork(Links=links, Nodes=nodes, Source="source",
Target="target", Value="value")
以上代码创建了一个简单的桑基图,其中 links 到 2 个节点,"b"
和 "c"
,从 "a"
。我想做的只是简单地为每个 link 着色,而不是为节点着色。例如,a->b 为绿色,a->c 为黄色。我试图遵循其他使用 d3.scaleOrdinal()
操纵色标的示例,但我没有任何运气。该图要么不呈现,要么始终保持灰色。
library(networkD3)
nodes<-c("a","b","c")
source<-c(0,0)
target<-c(1,2)
value<-c(5,5)
cbind(source,target,value)->links
as.data.frame(links)->links
as.data.frame(nodes)->nodes
links$group <- "blue"
my_color <- 'd3.scaleOrdinal() .domain(["blue"]) .range(["blue"])'
sankeyNetwork(Links = links,Nodes = nodes,Source = "source",Target =
"target",Value = "value", colourScale=my_color, LinkGroup="group")
您需要在链接中创建一个新列,命名要绘制的链接和地图,使用 d3.scaleOrdinal 每个名称和颜色。最后,将它们传递给 sankeyNetwork。 上面的示例会将所有链接绘制为蓝色
library(networkD3)
nodes<-c("a","b","c")
source<-c(0,0)
target<-c(1,2)
value<-c(5,5)
cbind(source,target,value)->links
as.data.frame(links)->links
as.data.frame(nodes)->nodes
links$group[1] <- "blue"
links$group[2] <- "green"
my_color <- 'd3.scaleOrdinal() .domain(["blue", "green"]) .range(["blue", "green"])'
sankeyNetwork(Links = links,Nodes = nodes,Source = "source",Target =
"target",Value = "value", colourScale=my_color, LinkGroup="group")
这个会做蓝色和绿色
在此处查看更多内容:https://www.r-graph-gallery.com/322-custom-colours-in-sankey-diagram/