1

I have data from a panel study. I present these in a Sankey diagram. Unfortunately, I can't manage to adjust the color so that the flow runs uniformly from one field to the next.

I have posted the data to reproduce:

# load packages
library(tidyverse)
library(highcharter)
# example data
data <- tibble(w1 = c("gut", "gut", "weder gut noch schlecht", "gut", 
              "gut", "weder gut noch schlecht", "sehr gut", "sehr gut", 
              "gut", "weder gut noch schlecht", "schlecht", "gut", "gut", 
              "sehr gut", "gut", "schlecht", "gut", "gut", "schlecht", 
              "sehr gut", "weder gut noch schlecht", "weder gut noch schlecht", 
              "sehr gut", "gut", "gut", "gut", "sehr gut", "gut", "sehr gut", 
              "gut", "gut", "gut", "gut", "weder gut noch schlecht", "sehr gut", 
              "gut"),
       w2 = c("weder gut noch schlecht ", "gut ", "weder gut noch schlecht ", 
              "sehr gut ", "gut ", "sehr gut ", "gut ", "gut ", "gut ", 
              "weder gut noch schlecht ", "weder gut noch schlecht ", "gut ", 
              "gut ", "gut ", "schlecht ", "schlecht ", "gut ", "gut ", 
              "weder gut noch schlecht ", "sehr gut ", "weder gut noch schlecht ", 
              "weder gut noch schlecht ", "gut ", "sehr gut ", "gut ", 
              "gut ", "sehr gut ", "sehr gut ", "sehr gut ", "sehr gut ", 
              "gut ", "gut ", "weder gut noch schlecht ", "gut ", "gut ", 
              "gut "),
       w3 = c("gut  ", "gut  ", "weder gut noch schlecht  ", 
              "sehr gut  ", "sehr gut  ", "gut  ", "sehr gut  ", "gut  ", 
              "gut  ", "gut  ", "weder gut noch schlecht  ", "weder gut noch schlecht  ", 
              "gut  ", "sehr gut  ", "gut  ", "weder gut noch schlecht  ", 
              "gut  ", "gut  ", "weder gut noch schlecht  ", "gut  ", "weder gut noch schlecht  ", 
              "weder gut noch schlecht  ", "sehr gut  ", "gut  ", "gut  ", 
              "gut  ", "sehr gut  ", "gut  ", "sehr gut  ", "gut  ", "gut  ", 
              "gut  ", "weder gut noch schlecht  ", "weder gut noch schlecht  ", 
              "gut  ", "gut  "))

# transform data into sankey
sankey_data <- data_to_sankey(data)

# relevel and summarise
sankey_data <- sankey_data %>% 
  mutate(from = factor(from, levels = c('sehr gut','sehr gut ', 'sehr gut  ',
                                        'gut', 'gut ', 'gut  ',
                                        'weder gut noch schlecht', 'weder gut noch schlecht ', 'weder gut noch schlecht  ',
                                        'schlecht', 'schlecht ', 'schlecht  ',
                                        'sehr schlecht', 'sehr schlecht ', 'sehr schlecht  '
                                        )),
         to = factor(to, levels = c('sehr gut','sehr gut ', 'sehr gut  ',
                                    'gut', 'gut ', 'gut  ',
                                    'weder gut noch schlecht', 'weder gut noch schlecht ', 'weder gut noch schlecht  ',
                                    'schlecht', 'schlecht ', 'schlecht  ',
                                    'sehr schlecht', 'sehr schlecht ', 'sehr schlecht  '))) %>% 
  group_by(from, to, weight, id) %>% 
  summarise(from = sort(from))

I tried to use the function hc_colors() to adjust the colors, but the function does not behave as I expect it to behave

# plot
hchart(sankey_data, "sankey", name = "Panel Study") %>% 
  hc_colors(c('green', 'red', 'blue'))

enter image description here

To be more precise, if a group of persons has the status "sehr gut" over all three survey dates, the bar should be displayed uniformly in one color

If someone could help me with the problem that would be really great

alex
  • 89
  • 7

0 Answers0