peace
peace

Reputation: 389

R networkD3 sankey - change the colors for all links to blue

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

Answers (1)

CJ Yetman
CJ Yetman

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)

enter image description here

Upvotes: 2

Related Questions