首页 > 解决方案 > 桑基图有序年

问题描述

我正在尝试制作桑基图

数据:

library(tidyverse)
library(networkD3)

        tabla <- read.table(text = '
        
        Dato1   Dato2   n
        1998    2001    104
        1998    2002    105
        1998    2003    120
        1999    2002    224
        1999    2003    133
        2000    2000    440
        2000    2004    162
        2000    2005    108
        2001    2001    130
        2001    2003    133
        2001    2004    130
        2002    2004    160
        2002    2005    262
        2002    2006    128
        2003    2003    247
        2003    2005    255
        2003    2006    339
        2003    2010    144
        2004    2004    101
        2004    2005    170
        2004    2006    348
        2004    2007    314
        2004    2008    402
        2004    2009    120
        2004    2010    326
        2005    2005    376
        2005    2006    416
        2005    2007    163
        2005    2008    348
        2005    2009    274
        2005    2010    540
        2006    2006    227
        2006    2008    364
        2006    2009    432
        2006    2010    597
        2006    2011    190
        2006    2012    529
        2006    2013    247
        2006    2014    157
        2007    2007    107
        2007    2009    194
        2007    2010    785
        2007    2011    1058
        2007    2012    272
        2007    2013    136
        2007    2014    168
        2008    2008    324
        2008    2009    118
        2008    2010    232
        2008    2011    387
        2008    2012    984
        2008    2013    656
        2008    2014    359
        2008    2015    301
        2008    2016    116
        2009    2009    335
        2009    2012    788
        2009    2013    1064
        2009    2014    357
        2009    2015    431
        2009    2016    134
        2010    2010    642
        2010    2011    176
        2010    2012    268
        2010    2013    768
        2010    2014    1625
        2010    2015    1370
        2011    2011    367
        2011    2013    175
        2011    2014    1071
        2011    2015    785
        2011    2016    596
        2012    2012    170
        2012    2013    152
        2012    2014    238
        2012    2015    1961
        2012    2016    1412
        2012    2017    167
        2013    2013    291
        2013    2014    158
        2013    2015    346
        2013    2016    1503
        2013    2017    723
        2014    2014    134
        2014    2015    232
        2014    2016    503
        2015    2015    160
        2015    2016    363
        2016    2016    447
        2017    2017    214
        2018    2018    171
        2018    2019    397
        ', header = TRUE, stringsAsFactors = FALSE)
        
        

图表:

tabla$Dato2<-paste0(tabla$Dato2," ")

nodes <- data.frame(name=c(tabla$Dato1,tabla$Dato2) %>% unique())

tabla$IDsource=match(tabla$Dato1, nodes$name)-1 
tabla$IDtarget=match(tabla$Dato2, nodes$name)-1

library(networkD3)
sankeyNetwork(Links = tabla, Nodes = nodes,
              Source = "IDsource", Target = "IDtarget",
              Value = "n", NodeID = "name")

出去:

在此处输入图像描述

我怎么能把连续的年份?(例如,右侧出现2001年之前的2002年)

排序因素不起作用。

填写,因为它说没有足够的文字并且不会让我提交问题(看起来您的帖子主要是代码;请添加更多详细信息)

对不起我的英语不好。

标签: r

解决方案


添加iterations = 0似乎可以解决问题。

library(networkD3)

sankeyNetwork(Links = tabla, Nodes = nodes,
              Source = "IDsource", Target = "IDtarget",
              Value = "n", NodeID = "name", iterations = 0)

在此处输入图像描述


推荐阅读