代码之家  ›  专栏  ›  技术社区  ›  s0-0s

x轴上随时间变化的过渡(Sankey)图

  •  2
  • s0-0s  · 技术社区  · 7 年前

    1.  A  A  B
    2.  B  C  A
    3.  A  C  C
    

    其中,每列表示周期,每行表示代理,每个字母表示状态。我想创建一个情节,如 Sankey Diagram 代理人的身份并不重要。
    我想要一个这样的情节: enter image description here


    It seems

    如有任何帮助或其他可视化建议,我们将不胜感激, 提前非常感谢,

        transitiondata <- data.frame("t1"=c("A","B","A"),
                                     "t2"=c("A","C","C"),
                                     "t3"=c("B","A","C"))
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   s0-0s    5 年前

    ggalluvial

    让我们加载所需的库:

    library(ggplot2)
    library(ggalluvial)
    library(tidyr)
    library(dplyr
    

    然后需要为数据创建标识符,然后再将其转换为整洁的格式。因此,新数据如下:

    transitiondata$id <- c("id1","id2","id3")
    

    transitiondata_tidy <- transitiondata %>% 
                               gather(time, state, t1,t2,t3) %>% 
                               mutate(time = as.factor(time), state = as.factor(state))
    

       id time state
    1 id1   t1     A
    2 id2   t1     B
    3 id3   t1     A
    4 id1   t2     A
    5 id2   t2     C
    6 id3   t2     C
    7 id1   t3     B
    8 id2   t3     A
    9 id3   t3     C
    

    ggplot2 GG冲积层

    ggplot(transitiondata_tidy,
           aes(x = time, stratum = state, alluvium = id, fill = state, label = state)) +
      geom_stratum() +
      geom_text(stat = "stratum", size = 3) +
      geom_flow(fill = "darkgrey", color = "black")
    

    我们的过渡(桑基)图已经准备好:

    enter image description here