Thanks for your suggestions, The solution was as proposed by Mr. Nordlund, I had to convert the timestamps again using as.POSIXct() I will have to remember that anytime I do any kind of filtering/subselection of dates to reconvert them. Lesson learned.
Also thank you for the dput() suggestions for data, another tip I shall not forget. This question is now closed. Thanks! -----Original Message----- From: Norbert Skalski Sent: Tuesday, August 28, 2012 11:49 AM To: 'r-help@r-project.org' Subject: date in plot, can't add regression line Hello all, I have been using R for about 3 weeks and I am frustrated by a problem. I have read R in a nutshell, scoured the internet for help but I either am not understanding examples or am missing something completely basic. Here is the problem: I want to plot data that contains dates on the x axis. Then I want to fit a line to the data. I have been unable to do it. This is an example of the data (in a dataframe called "tradeflavorbyday"), 40 lines of it (I'm sorry it's not in a runnable form, not sure how to get that from R) : tradeflavor timestamp x 1 1 2009-01-22 1 2 2 2009-01-22 1 3 1 2009-01-23 1 4 1 2009-01-27 54 5 1 2009-01-28 105 6 2 2009-01-28 2 7 16 2009-01-28 2 8 1 2009-01-29 71 9 16 2009-01-29 2 10 1 2009-01-30 42 11 1 2009-02-02 19 12 16 2009-02-02 2 13 1 2009-02-03 36 14 4 2009-02-03 2 15 8 2009-02-03 3 16 1 2009-02-04 73 17 8 2009-02-04 12 18 16 2009-02-04 7 19 1 2009-02-05 53 20 8 2009-02-05 6 21 16 2009-02-05 9 22 1 2009-02-06 38 23 4 2009-02-06 6 24 8 2009-02-06 2 25 16 2009-02-06 3 26 1 2009-02-09 42 27 2 2009-02-09 2 28 4 2009-02-09 1 29 8 2009-02-09 2 30 1 2009-02-10 87 31 4 2009-02-10 2 32 8 2009-02-10 4 33 16 2009-02-10 3 34 1 2009-02-11 55 35 2 2009-02-11 6 36 4 2009-02-11 4 37 8 2009-02-11 2 38 16 2009-02-11 8 39 1 2009-02-12 153 40 2 2009-02-12 6 The plot displays the x column as the yaxis and the date as the x axis, grouped by the tradetype column. The timestamp column: > class(tradeflavorbyday$timestamp) [1] "POSIXlt" "POSIXt" So in this case I want to plot tradetype 1 (method 1): xdates <- tradeflavorbyday$timestamp[tradeflavorbyday$tradeflavor == 1] ydata <- tradeflavorbyday$x[tradeflavorbyday$tradeflavor == 1] plot(xdates, ydata, col="black", xlab="Dates", ylab="Count") Up to here it works great. Now a abline through lm: xylm <- lm(ydata~xdates) <------ this fails, can't do dates as below abline(xylm, col="black") > lm(ydata~xdates) Error in model.frame.default(formula = ydata ~ xdates, drop.unused.levels = TRUE) : invalid type (list) for variable 'xdates' So I try this instead (method 2): xdata <- 1:length(tradeflavorbyday$timestamp[tradeflavorbyday$tradeflavor == 1]) ydata <- tradeflavorbyday$x[tradeflavorbyday$tradeflavor == 1] xylm <- lm(ydata~xdata) <------ now this works, great abline(xylm, col="black") The problem now is that I can't get the dates onto the xaxis. I have tried turning off the axis using xaxt="n" and reploting using the axis.POSIXct() call but it does not want to display the dates: dateseq = seq(xdates[1], xdates[length(xdates)], by="month") axis.POSIXct(1, at=dateseq, format="%Y\n%b") I have tried combining both approaches by plotting dates and trying to fit the line using method 2: xdates <- tradeflavorbyday$timestamp[tradeflavorbyday$tradeflavor == 1] xdata <- 1:length(tradeflavorbyday$timestamp[tradeflavorbyday$tradeflavor == 1]) ydata <- tradeflavorbyday$x[tradeflavorbyday$tradeflavor == 1] plot(xdates, ydata, col="black", xlab="Dates", ylab="Count", xaxt="n") dateseq = seq(xdates[1], xdates[length(xdates)], by="month") axis.POSIXct(1, at=dateseq, format="%Y\n%b") xylm <- lm(ydata~xdata) <- works abline(xylm, col="black") <- does nothing In this case the call to lm and abline "works" but nothing is drawn. Confused I plugged in the coefficients manually (I have complete data, so they will be different than the example data I pasted): > lm(ydata~xdata) Call: lm(formula = ydata ~ xdata) Coefficients: (Intercept) xdata 6.11491 -0.02577 Abline(6.11491, -0.02577) <- call worked, but nothing shown Just by chance I added many 0 to flatten out the slope: Abline(6.11491, -0. 0000000002577) <- call worked and a horizontal line appeared????? So I took off a 0: Abline(6.11491, -0. 000000002577) <- the line moved significantly down So I took off another 0: Abline(6.11491, -0. 00000002577) <- line disappeared I guess the slope causes it to go vertical and disappear of the graph. I have no idea how to solve my issue. If anyone can see my basic idiotic error please point it out, or maybe you have another suggestion, I will gladly try it. Thanks for your help!! ______________________________________________ R-help@r-project.org mailing list 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.