从ggplot2的日期提取年份以比较时间序列

时间:2015-04-09 07:09:27

标签: r datetime ggplot2

我有以下数据,我试图在一个图表上绘制,所以我可以比较2013年和2014年的数据,颜色设置为'年份。

我希望输出看起来像thisplot example

我的示例CSV数据如下所示:

Date        Data
1/01/2013   10
1/02/2013   20
1/03/2013   30
1/04/2013   20
1/01/2014   40
1/02/2014   70
1/03/2014   80
1/04/2014   90

我有以下代码,但它没有提取“#year;'来自'日期'数据。我只知道如何对待每个日期'用不同的颜色代替,但它并不是我想要的。

p <- ggplot(d, aes(x=as.Date(Date, "%d/%m/%Y"), y=Data,
            group=Date, color=Date)) +
geom_bar(stat="identity") +
scale_color_discrete(name="Year") +
labs(x="",y="Test Data") +
geom_smooth(aes(group=1))
p

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

在数据框中添加额外的列Year。这是一个简单的例子:

# create example data set
library("zoo")
library("strucchange")
d <- data.frame(Date=index(SP2001)+90, Data=SP2001$AAPL)
# add year column to data frame
d$Year <- format(d$Date, "%Y")

library("ggplot2")
p <- ggplot(d, aes(x=as.Date(Date, "%d/%m/%Y"), y=Data,
            group=Year)) +
     geom_bar(aes(fill=Year), stat="identity") +
     labs(x="", y="Test Data") +
     geom_smooth(aes(colour=Year))
p

plot

答案 1 :(得分:0)

给定日期对象,您可以按如下方式提取年份 格式(date_series,&#39;%Y&#39)

%Y将使用4位数,%y仅使用最后2位数 你可以在格式字符串中添加更多元素,例如%Y%m输出像201401,201402这样的东西 - 我经常使用这个元素