Looks good, but there are some ways in which I think you’re making it more complicated than necessary. Two calls to plot(), with plot.new() in between, is definitely not needed. Recalculating LAI_simulation$Date three times should not be needed.
## create example data day0 <- as.Date('2009-10-7') mydat <- data.frame( date=seq(day0, by=1, len=6*365) , y=runif(6*365) ) ## plot day0fmt <- format(day0, '%b %d, %Y') daynum <- as.integer(mydat$date) xn <- seq(0, length(daynum)+200, by=200) plot(y ~ date, data=mydat, xaxt='n', xlab=paste('Days since',day0fmt) , ylab='My data') axis.Date(3, mydat$date) axis(1, at=day0+xn, lab=xn) mtext('Year', line=2.5) -Don -- Don MacQueen Lawrence Livermore National Laboratory 7000 East Ave., L-627 Livermore, CA 94550 925-423-1062 On 7/6/17, 7:42 AM, "Ahmed Attia" <ahmedati...@gmail.com> wrote: Thanks it worked for me. I wanted to plot days since planting on x-axis 1 and years on x-axis 3. LAI_simulation$Date <- as.Date( LAI_simulation$Date, '%Y/%m/%d') LAI_simulation$Date <- as.integer(LAI_simulation$Date - as.Date("2009-10-07")) plot(LAI~Date,data=LAI_simulation,xlab="Days since Oct, 7, 2009",cex=0.3,cex.lab=1.2,xaxt="n",xaxs="i",yaxs="i",ylim=c(0,6)) axis(1,xlim=c(0,2200),xaxp=c(0,2200,11),cex.lab=1.2,cex.axis=0.8,xaxs="i") LAI_simulation$Date<- as.Date(LAI_simulation$Date, origin="2009-10-07") par(new=TRUE) plot(LAI~Date, data=LAI_simulation,xlab="",ylab="", xaxt="n",type="p",cex=0.2,col=1,xaxs="i",yaxs="i",ylim=c(0,6)) axis.Date(side=3, at=seq(min(LAI_simulation$Date), max(LAI_simulation$Date),by="year"), format="%Y", xlab="xxx",cex.axis=0.9) mtext("years",side=3,line=3,cex.lab=1.2) Ahmed Attia, Ph.D. Agronomist & Soil Scientist On Wed, Jul 5, 2017 at 4:52 PM, MacQueen, Don <macque...@llnl.gov> wrote: > Not entirely sure what you really want the axis on the top to look like, but here's what I'd be likely to do: > > ## note, correction to format; in your example data year comes last > LAI_simulation$Date <- as.Date( LAI_simulation$Date, '%m/%d/%Y') > > plot(LAI~Date, data=LAI_simulation) > > simdate <- as.numeric( LAI_simulation$Date - as.Date('2009-10-7') ) > ## or > simdate <- difftime( LAI_simulation$Date, as.Date('2009-10-7') ) > > ## then > axis(3, pretty(simdate) ) > > > Converting LAI_simulation$Date to numeric, and then applying axis.Date() to it makes no sense to me, since the elapsed numbers of days are not dates. > > -- > Don MacQueen > > Lawrence Livermore National Laboratory > 7000 East Ave., L-627 > Livermore, CA 94550 > 925-423-1062 > > > On 7/5/17, 11:23 AM, "Ahmed Attia" <ahmedati...@gmail.com> wrote: > > How can I convert date to continuous variable staring from 1. I tried > as.numeric but R starts counting from default January 1, 1970 while my data > start Oct 7, 2009. > > I need to do this conversion to plot the date on two x-axes (1 and 3). > Ex; > Date LAI > 10/7/2009 0 > 10/8/2009 0.004173 > 10/9/2009 0.009997 > 10/10/2009 0.009998 > 10/11/2009 0.009999 > 10/12/2009 0.009999 > 10/13/2009 0.009999 > 10/14/2009 0.009999 > 10/15/2009 0.009998 > 10/16/2009 0.009998 > 10/17/2009 0.009998 > 10/18/2009 0.009998 > 10/19/2009 0.009998 > 10/20/2009 0.009998 > > LAI_simulation$Date <- as.Date( LAI_simulation$Date, '%Y/%m/%d') > plot(LAI~Date, data=LAI_simulation) > LAI_simulation$Date<- as.numeric(LAI_simulation$Date,origin="2009-10-07") > #R does not see the origin > axis.Date(side=3,at=LAI_simulation$Date) > > > > > Ahmed Attia, Ph.D. > Agronomist & Soil Scientist > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.