代码之家  ›  专栏  ›  技术社区  ›  Antoni Parellada

如何修改函数`作为POSIXct`指定要在R basic plot()中绘制的时间间隔?

  •  0
  • Antoni Parellada  · 技术社区  · 5 年前

    我不喜欢时间格式,尤其是, as.POSIXct plot() 函数来建立x轴的标签。您可以运行下面的整个代码,但困难在于修改

    axis.POSIXct(1,NY$date, at=NY$date,
                 labels=format(NY$date,"%m-%d"),
                 las=2, cex.axis=0.7)
    

    我试着把它改成

    axis.POSIXct(1,NY$date, at=NY$date, by = 4,
                 labels=format(NY$date,"%m-%d"),
                 las=2, cex.axis=0.7)
    

    我打算4天,但我想最后解释为每4秒一次。我看到有一个选择包括 'days' 但我真的想具体说明一下 每4天

    at 行导致长度不匹配,导致代码无用。例如:

    at <- seq(NY$date[2], NY$date[length(NY$date], by=2)
    

    整个代码块:

    require(tidyverse) 
    states = read.csv("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-states.csv", sep =",",header = T)
    states <- states %>%
          mutate(date = as.POSIXct(date, format = '%Y-%m-%d'))
        
    # Tri-state cases (NY, NJ, PA):
    
    NJ <- states[states$state=="New Jersey",]
    NJ <- droplevels(NJ)
    rownames(NJ) <- NULL
    
    NY <- states[states$state=="New York",]
    NY <- droplevels(NY)
    rownames(NY) <- NULL
    
    PA <- states[states$state=="Pennsylvania",]
    PA <- droplevels(PA)
    rownames(PA) <- NULL
    
    with(as.data.frame(NY),
         plot(date,cases,xaxt="n", xlab="", ylab="", pch=19, 
              cex.axis=0.6, cex=0.7,
              cex.main=1.5, las=2, bty='l',
              main="Tri-state confirmed cases"))
    axis.POSIXct(1,NY$date, at=NY$date,
                 labels=format(NY$date,"%m-%d"),
                 las=2, cex.axis=0.7)
    points(NJ$date, NJ$cases, pch=19, col=4, cex=0.7)
    points(PA$date, PA$cases, pch=19, col=5, cex=0.7)
    
    legend(NY$date[1], 300000, bg="transparent",
           legend=c("New York state", "New Jersey", "Pennsylvania"),
           col=c(1, 4, 5), pch=19, cex=1.2, box.lty=0)
    
    0 回复  |  直到 5 年前