R 用8个变量绘制时间序列

R 用8个变量绘制时间序列,r,time,series,R,Time,Series,我的数据框看起来像这样 如何在ggplot中绘图。我在这里尝试了所有张贴的答案。我的问题是我不知道如何处理列名中的年份。X2010 X2011 X2012 X2013 X2014 X2015 X2016。根据您发布的数据,很难辨别出这一点,但我还是要尝试一下。绘制时间序列数据时遇到的最大问题是,数据的格式很宽,而不是很长。如果您将其转换为long,则执行起来会容易得多。我用tidyr软件包写了一个快速的例子,一些随机样本数据符合我认为的数据结构,尽管在未来,格式在很大程度上会遇到问题。通过这个例

我的数据框看起来像这样


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

根据您发布的数据,很难辨别出这一点,但我还是要尝试一下。绘制时间序列数据时遇到的最大问题是,数据的格式很宽,而不是很长。如果您将其转换为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()

将宽数据收集为长格式后,每个州和年份将有一个唯一的行。同样,我不能确定这是否是您的数据的外观,但考虑到您的标题,我相当确定重塑数据将对绘制时间序列大有帮助。如果这不起作用,请确保编辑您的问题,使其更具体,并包括更好的样本数据格式。

您建议的解决方案有效。此外,我还将数据格式化为长格式,并使用了Reforme2的melt函数。>df.long ggplotdf.long,年份,值,颜色=变量+几何图形线
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()