First of all, a practical way to supply data is to use the function dput() Just do dput(mydata) and copy and paste the results into your email. The reader can copy and paste into R and have an identical data set.
I am not sure I have followed exactly what you are doing but here is something that may approach what you want, done using the ggp;pt2 package. Do 'install.packages("ggplot2) if you do not have it. Anyway here is roughly your data set in the dput format mydata <- structure(list(tradeflavor = c(1L, 2L, 1L, 1L, 1L, 2L, 16L, 1L, 16L, 1L, 1L, 16L, 1L, 4L, 8L, 1L, 8L, 16L, 1L, 8L, 16L, 1L, 4L, 8L, 16L, 1L, 2L, 4L, 8L, 1L, 4L, 8L, 16L, 1L, 2L, 4L, 8L, 16L, 1L, 2L), timestamp = structure(c(14266, 14266, 14267, 14271, 14272, 14272, 14272, 14273, 14273, 14274, 14277, 14277, 14278, 14278, 14278, 14279, 14279, 14279, 14280, 14280, 14280, 14281, 14281, 14281, 14281, 14284, 14284, 14284, 14284, 14285, 14285, 14285, 14285, 14286, 14286, 14286, 14286, 14286, 14287, 14287 ), class = "Date"), x = c(1L, 1L, 1L, 54L, 105L, 2L, 2L, 71L, 2L, 42L, 19L, 2L, 36L, 2L, 3L, 73L, 12L, 7L, 53L, 6L, 9L, 38L, 6L, 2L, 3L, 42L, 2L, 1L, 2L, 87L, 2L, 4L, 3L, 55L, 6L, 4L, 2L, 8L, 153L, 6L)), .Names = c("tradeflavor", "timestamp", "x"), row.names = c(NA, -40L), class = "data.frame") #===================================== library(ggplot2) # first subset m1data <- subset(mydata, tradeflavor == 1) # plot for tradeflavor = 1 p1 <- ggplot(m1data , aes( timestamp, x)) + geom_point() + geom_smooth(method = lm, se = FALSE) p1 m2data <- subset(mydata, tradeflavor == 2) p2 <- ggplot(m2data , aes( timestamp, x )) + geom_point() + geom_smooth(method = lm, se = FALSE) p2 # plot a grid of results pgrid <- p <- ggplot(mydata , aes( timestamp, x)) + geom_point() + geom_smooth(method = lm, se = FALSE) + facet_grid(tradeflavor ~ .) pgrid # Have fun with R. John Kane Kingston ON Canada > -----Original Message----- > From: norbert.skal...@ronin-capital.com > Sent: Tue, 28 Aug 2012 11:48:32 -0500 > To: r-help@r-project.org > Subject: [R] 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. ____________________________________________________________ GET FREE SMILEYS FOR YOUR IM & EMAIL - Learn more at http://www.inbox.com/smileys Works with AIM®, MSN® Messenger, Yahoo!® Messenger, ICQ®, Google Talk™ and most webmails ______________________________________________ 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.