【问题标题】:Extracting Year from Date for ggplot2 to compare time series从日期中提取 ggplot2 的年份以比较时间序列
【发布时间】:2015-04-09 07:09:27
【问题描述】:

我有以下数据,我试图将它们绘制在一张图表上,以便我可以比较 2013 年和 2014 年的数据,颜色由“年份”设置。

我希望输出看起来像 this

我的示例 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

我有以下代码,但它没有从“日期”数据中提取“年份”。我只知道如何用不同的颜色来对待每个“约会”,但这并不是我真正想要的。

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

任何帮助将不胜感激。

【问题讨论】:

    标签: r datetime ggplot2


    【解决方案1】:

    在您的数据框中添加一个额外的列 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
    

    【讨论】:

      【解决方案2】:

      给定一个日期对象,您可以按如下方式提取年份 格式(日期系列,'%Y')

      %Y 将使用 4 位数字,%y 只是最后 2 位 您可以在格式字符串中添加更多元素,例如 %Y%m 输出诸如 201401、201402 之类的内容 - 我经常使用这个

      【讨论】:

      • 太好了,谢谢大家。我只是稍微修改了代码,因为我的日期有点混乱,但下面的效果很好: d$Date
      • 抱歉,我不知道如何更好地格式化我的回复
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      相关资源
      最近更新 更多