使用ggplot2绘制特定的日期范围

时间:2017-08-31 23:48:40

标签: r ggplot2

我正在尝试在个人的特定日期范围内绘制数据。我已经粘贴了以前有效的示例代码,但是我没有覆盖所有数据,只是在2016年11月30日之后会发生什么。我已经尝试了这里显示的解决方案(Select Data After Specific Date),但我得到“错误:输入无效:date_trans仅适用于类Date的对象。”有任何想法吗?

 mydf<- data.frame(Date = as.Date(Subject$date, format = "%m/%d/%Y"),
                   variable1 = (Subject$var1),
                   variable2 = (Subject$var2), 
                   variable3 = (Subject$var3),
                   variable4 = (Subject$var4))

ggplot(mydf, aes(Date > "2016-11-30", variable1)) + 
  geom_point() + 
  stat_smooth(color = "blue", fill = "lightskyblue") +
  theme(axis.title.x = element_blank()) + 
  ylab("") + xlab("")+ 
  ggtitle("Variable 1 units") + 
  scale_x_date(date_breaks = "months", 
               date_labels = "%b%y") + 
  theme_hc()

2 个答案:

答案 0 :(得分:2)

尝试对数据框进行子集化,同时将其提供给ggplot,如下所示:

ggplot(data=mydf[which(mydf$Date>"2016-11-30"),],
       aes(x=Date, y=variable1)) + 
       geom_point() + 
       stat_smooth(color = "blue", fill = "lightskyblue") +
       theme(axis.title.x = element_blank()) + 
       ylab("") + xlab("")+ 
       ggtitle("Variable 1 units") + 
       scale_x_date(date_breaks = "months", 
                    date_labels = "%b%y") + 
       theme_hc()

答案 1 :(得分:0)

创建第二个子数据帧可能更简单,更重复。将类(mydf $ Date)转换为POSIXct并假定前面的评论者提到的“ format =“%Y-%m-%d”:

mydf$Date <- as.POSIXct(mydf$Date, format="%Y-%m-%d")
after1130 <- subset(mydf, Date > "2016-11-30")
ggplot(data=after1130, +
   aes(x=Date, y=variable1)) + 
   geom_point() + 
   stat_smooth(color = "blue", fill = "lightskyblue") +
   theme(axis.title.x = element_blank()) + 
   ylab("") + xlab("")+ 
   ggtitle("Variable 1 units") + 
   scale_x_date(date_breaks = "months", 
                date_labels = "%b%y") + 
   theme_hc()

此方法可让您将来方便地调用子集以进行统计和/或更多绘制。