programing

수직 gem_vline을 클래스 날짜의 x축으로 가져오는 방법은 무엇입니까?

topblog 2023. 6. 7. 22:06
반응형

수직 gem_vline을 클래스 날짜의 x축으로 가져오는 방법은 무엇입니까?

비록 내가 구글 그룹에서 해들리의 게시물을 찾았지만,POSIXct그리고.geom_vline저는 그것을 끝낼 수 없었습니다.저는 1998년, 2005년, 2010년의 시계열을 가지고 있으며, 예를 들어, 1998년, 2005년, 2010년의 수직선을 그리고 싶습니다.로 시도했습니다.ggplot그리고.qplot구문이지만, 여전히 저는 수직선이 전혀 보이지 않거나 수직선이 첫 번째 수직 그리드에 그려지고 전체 시리즈가 약간 이상하게 오른쪽으로 이동합니다.

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)

gem_vline 예제 그림

당신은 또한 할 수 있습니다.geom_vline(xintercept = as.numeric(as.Date("2015-01-01")), linetype=4)날짜가 120번째 줄에 있는지 여부에 관계없이 줄이 제자리에 유지되기를 원하는 경우.

"날짜" 열을 전달하는 방법에 따라aes,어느 하나as.numeric또는as.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) 
    

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()

여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/5388832/how-to-get-a-vertical-geom-vline-to-an-x-axis-of-class-date

반응형