【问题标题】:Plotting Time Series with 8 variables用 8 个变量绘制时间序列
【发布时间】:2017-03-21 02:32:25
【问题描述】:

我的数据框是这样的

     " States X2010 X2011 X2012 X2013 X2014 X2015 X2016 Andhra pradhesh   116    99  2827  4827  1359   817   660 Arunachal pradhesh     0     0     0     0     0    35   Assam     0     0     0   742     0     0    38

如何在 ggplot 中绘图。我在这里尝试了所有发布的答案。我的问题是我不知道如何处理列名的年份。 X2010 X2011 X2012 X2013 X2014 X2015 X2016。

【问题讨论】:

    标签: r time series


    【解决方案1】:

    这很难从您发布的数据中辨别出来,但无论如何我都会试一试。您在绘制时间序列数据时遇到的最大问题是您的数据是宽格式,而不是长格式。如果你把它转换成long,它会容易得多。我使用tidyr 包编写了一个快速示例,以及一些符合我认为您的数据结构看起来的随机样本数据(尽管在未来,格式化在问题上会有很长的路要走。)逐步完成示例,看看这样的事情是否适合您的问题。

    set.seed(100)
    df <- data.frame(States = c('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'),
                     X2010 = runif(10),
                     X2011 = runif(10),
                     X2012 = runif(10),
                     X2013 = runif(10),
                     X2014 = runif(10),
                     X2015 = runif(10),
                     X2016 = runif(10))
    
    library('tidyr')
    library('ggplot2')
    library('stringr')
    
    df <- gather(df, year, value, X2010:X2016)
    df$year <- str_replace_all(df$year, 'X', '')
    df$year <- as.numeric(df$year)
    
    ggplot(df, aes(x = year, y = value, group = States, color = States)) + geom_line()
    

    将宽数据收集为长格式后,您将拥有每个州和年份的唯一行。同样,我不能确定这是否是您的数据的样子,但鉴于您的标题,我相当肯定重塑您的数据将大大有助于绘制时间序列。如果这不起作用,请务必将您的问题编辑得更具体,并包含更好的示例数据格式。

    【讨论】:

    • 您建议的解决方案有效。此外,我将数据格式化为长格式,并使用了 reshape2 中的 melt 函数。 > df.long ggplot(df。 long, aes(Years, value, color = variable)) + geom_line()
    猜你喜欢
    • 2018-10-31
    • 1970-01-01
    • 2021-12-15
    • 2021-12-04
    • 2012-10-31
    • 1970-01-01
    • 2017-09-28
    • 2018-07-05
    • 2015-05-19
    相关资源
    最近更新 更多