Reputation: 389
Here is example code that I use to make a Sankey chart using networkD3::sankeyNetwork()
library("networkD3")
a <- read.csv(header = TRUE, text = "
date,Data Center,Customer,companyID,source,target,value
")
node_names <- unique(c(as.character(a$source), as.character(a$target)))
nodes <- data.frame(name = node_names)
links <- data.frame(source = match(a$source, node_names) - 1,
target = match(a$target, node_names) - 1,
value = a$value)
sankeyNetwork(Links = links, Nodes = nodes, Source = "source",
Target = "target", Value = "value", NodeID = "name",
sinksRight = FALSE)
I want to change the color for all links to blue. I think the argument 'linkgroups' might help.
Upvotes: 0
Views: 213
Reputation: 8848
Add a column to your links
data.frame that will specify the group for each link (in your case, they will all be in the same group). Then add a custom color scale command that will specify "blue" for that group. Then tell the sankeyNetwork()
function the name of the column in your links
data.frame that specifies the link group and pass it you custom colorScale
.
library("networkD3")
data <- read.csv(header = TRUE, text = "
date,Data Center,Customer,companyID,source,target,value
6/1/2021,dcA,customer1,companyID1,open_list_view_1,open_card_2,1
6/1/2021,dcA,customer1,companyID1,open_card_2,edit_card_3,1
6/1/2021,dcA,customer1,companyID1,edit_card_3,save_card_4,1
6/1/2021,dcA,customer1,companyID1,save_card_4,back_to_card_list_5,2
6/1/2021,dcA,customer1,companyID1,back_to_card_list_5,show_more_6,1
6/1/2021,dcA,customer1,companyID1,show_more_6,view_introduction_7,1
6/1/2021,dcA,customer1,companyID1,view_introduction_7,scroll_down_8,2
6/2/2021,dcA,customer2,companyID2,open_list_view_1,open_card_2,3
6/2/2021,dcA,customer2,companyID2,open_card_2,edit_card_3,1
6/2/2021,dcA,customer2,companyID2,edit_card_3,save_card_4,4
6/2/2021,dcA,customer2,companyID2,save_card_4,back_to_card_list_5,2
6/2/2021,dcA,customer2,companyID2,back_to_card_list_5,show_more_6,1
6/2/2021,dcA,customer2,companyID2,show_more_6,view_introduction_7,1
6/2/2021,dcA,customer2,companyID2,view_introduction_7,scroll_down_8,5
")
node_names <- unique(c(as.character(data$source), as.character(data$target)))
nodes <- data.frame(name = node_names)
links <- data.frame(source = match(data$source, node_names) - 1,
target = match(data$target, node_names) - 1,
value = data$value)
links$linkgroup <- "linkgrp"
colourScale <-
'd3.scaleOrdinal()
.domain(["linkgrp"])
.range(["blue"].concat(d3.schemeCategory20))'
sankeyNetwork(Links = links, Nodes = nodes, Source = "source",
Target = "target", Value = "value", NodeID = "name",
sinksRight = FALSE,
LinkGroup = "linkgroup",
colourScale = colourScale)
Upvotes: 2