How to make a googleVis multiple Sankey from a data.frame?

后端 未结 1 814
盖世英雄少女心
盖世英雄少女心 2021-02-10 06:07

Aim

I am aiming to make a multiple Sankey in R using the googleVis package. The output should look similar to this:

Data

I\'ve

相关标签:
1条回答
  • Function gvisSankey does accept mid-levels directly. These levels have to be coded in underlying data.

     source <- sample(c("NorthSrc", "SouthSrc", "EastSrc", "WestSrc"), 100, replace=T)
     mid <- sample(c("NorthMid", "SouthMid", "EastMid", "WestMid"), 100, replace=T)
     destination <- sample(c("NorthDes", "SouthDes", "EastDes", "WestDes"), 100, replace=T) 
     dummy <- rep(1,100) # For aggregation
    

    Now, we'll reshape original data:

     library(dplyr)
    
     datSM <- dat %>%
      group_by(source, mid) %>%
      summarise(toMid = sum(dummy) ) %>%
      ungroup()
    

    Data frame datSM summarises number of units from Source to Mid.

      datMD <- dat %>%
       group_by(mid, destination) %>%
       summarise(toDes = sum(dummy) ) %>%
       ungroup()
    

    Data frame datMD summarises number of units from Mid to Destination. This data frame will be added to the final data frame. Data frame need to be ungroup and have same colnames.

      colnames(datSM) <- colnames(datMD) <- c("From", "To", "Dummy")
    

    As the datMD is appended as the last one, gvisSankey will recognise the middle step automatically.

      datVis <- rbind(datSM, datMD)
    
      p <- gvisSankey(datVis, from="From", to="To", weight="dummy")
      plot(p)
    

    Here is the plot:

    0 讨论(0)
提交回复
热议问题