繁体   English   中英

如何将垂直 geom_vline 设置为课程日期的 x 轴?

[英]How to get a vertical geom_vline to an x-axis of class date?

即使我在POSIXctgeom_vline的谷歌组中找到了 Hadley 的帖子,我也无法完成。 例如,我有一个时间序列,并想为 1998、2005 和 2010 年绘制一条垂直线。 我尝试了ggplotqplot语法,但我仍然看不到垂直线,或者在第一个垂直网格上绘制了垂直线,并且整个系列有点奇怪地向右移动。

gg <- ggplot(data=mydata,aes(y=somevalues,x=datefield,color=category)) +
      layer(geom="line")
gg + geom_vline(xintercept=mydata$datefield[120],linetype=4)
# returns just the time series plot I had before, 
# interestingly the legend contains dotted vertical lines

我的日期字段的格式为“1993-07-01”,属于Date类。

尝试as.numeric(mydata$datefield[120])

gg + geom_vline(xintercept=as.numeric(mydata$datefield[120]), linetype=4)

一个简单的测试示例:

library("ggplot2")

tmp <- data.frame(x=rep(seq(as.Date(0, origin="1970-01-01"),
                            length=36, by="1 month"), 2),
                  y=rnorm(72),
                  category=gl(2,36))

p <- ggplot(tmp, aes(x, y, colour=category)) +
     geom_line() +
     geom_vline(xintercept=as.numeric(tmp$x[c(13, 24)]),
                linetype=4, colour="black")
print(p)

geom_vline 示例图

你也可以做geom_vline(xintercept = as.numeric(as.Date("2015-01-01")), linetype=4)如果你想让这条线保持原位,无论你的日期是否在第 120 行。

as.numeric 对我有用

ggplot(data=bmelt)+
  geom_line(aes(x=day,y=value,colour=type),size=0.9)+
  scale_color_manual(labels = c("Observed","Counterfactual"),values = c("1","2"))+
  geom_ribbon(data=ita3,aes(x=day, 
      y=expcumresponse, ymin=exp.cr.ll,ymax=exp.cr.uu),alpha=0.2) +
  labs(title="Italy Confirmed cases",
        y ="# Cases ", x = "Date",color="Output")+
  geom_vline(xintercept = as.numeric(ymd("2020-03-13")), linetype="dashed", 
                color = "blue", size=1.5)+
  theme_minimal()

代码输出

根据您如何将“日期”列传as.numeric aesas.numericas.POSIXct可以工作:

library(ggplot2)

  1. 使用aes(as.Date(Dates),...)

     ggplot(df, aes(as.Date(Dates), value)) + geom_line() + geom_vline(xintercept = as.numeric(as.Date("2020-11-20")), color = "red", lwd = 2)
  2. 使用aes(Dates, ...)

     ggplot(df, aes(Dates, value)) + geom_line() + geom_vline(xintercept = as.POSIXct(as.Date("2020-11-20")), color = "red", lwd = 2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM