Re: [R] ggplot2-Issue placing error bars behind data points
Jeff Newmiller and Dennis, As always, very helpful. I appreciate the comments on how best to organize the code as well. Simplifies things greatly. Thanks, Nate On Wed, Sep 7, 2011 at 3:33 PM, Dennis Murphy djmu...@gmail.com wrote: Hi: For your test data, try this: # Result of dput(NerveSurv) NerveSurv - structure(list(Time = c(0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5 ), SAP = c(1, 1.04, 1.04, 1.06, 1.04, 1.22, 1.01, 1, 1.01, 1.01, 1.06, 1.01, 0.977, 0.959, 1, 1.01, 1.06, 0.921, 0.951, 0.904, 0.911), Temp = c(25L, 25L, 25L, 25L, 25L, 25L, 25L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 8L, 8L, 8L, 8L, 8L, 8L, 8L), SAPSE = c(0, 0.0412, 0.0935, 0.0818, 0.131, 0.144, 0.0712, 0, 0.0156, 0.0337, 0.0481, 0.0168, 0.00486, 0.0155, 0, 0.00462, 0.0491, 0.0329, 0.0304, 0.0471, 0.0722)), .Names = c(Time, SAP, Temp, SAPSE ), class = data.frame, row.names = c(NA, -21L)) limits-aes(ymax = NerveSurv$SAP + NerveSurv$SAPSE, ymin = NerveSurv$SAP - NerveSurv$SAPSE) # library('ggplot2') p - ggplot(data=NerveSurv,aes(x=Time,y=SAP)) p + geom_errorbar(limits,width=0.2) + geom_point(aes(fill=factor(Temp)), colour = colors()[173], shape = 21, size=4) + xlab(Time (min)) + xlim(c(0, 2)) + ylab(Normalized Spontaneous Action Potential Rate) + ylim(c(0,1.6)) + scale_fill_manual(Acclimation\nTemperature, breaks=c(8,18,25), labels=c(25ºC, 18 ºC, 8 ºC), values=c(colours()[c(173,253,218)])) Notice the following in the above code: (1) As Jeff Newmiller pointed out, put geom_errorbar() before geom_point(). (2) If you are going to be using the same value of a plot aesthetic, you *set* it outside aes() rather than *map* it inside aes(). See the revised code for geom_point(). The idea is that if a variable is assigned to a plot aesthetic (e.g., color, fill, shape), then it needs to be mapped inside aes(); if an aesthetic is set to a specific value, it is set outside aes(). (3) Your test data had an effective x-range of 0 - 1.5 rather than 0 - 50, so I shrunk xlim() for readability. (4) You can use \n inside of a character string as a carriage return. See the legend title for scale_fill_manual(). (5) Style note: you want the layer addition operator + to be at the end of a line, not at the beginning. Copy and paste this code verbatim to see what I mean: p + geom_errorbar(limits,width=0.2) + geom_point(aes(fill=factor(Temp)), colour = colors()[173], shape = 21, size=4) This happens because the first line is syntactically complete. HTH, Dennis On Wed, Sep 7, 2011 at 2:48 PM, Nathan Miller natemille...@gmail.com wrote: Hi all, This seems like a basic problem, but no amount of playing with the code has solved it. I have a time-series data set like that shown below (only longer) and am seeking to plot the data with filled, circular points and error bars. I would like the error bars to be behind the points otherwise they tend to obscure the points (especially when I have a lot of points in the actual data set). Despite providing a fill colour for the points and using shapes that utilize fill colours, the error bars are always placed on top of the points. Can anyone see the error I am making? I simply want to move the error bars so they are behind the data points. Thanks for your help. I assume its simple...or else its a bug. Nate Time SAP TempSAPSE 0.00 1.00 25 0.00 0.25 1.04 25 0.041200 0.50 1.04 25 0.093500 0.75 1.06 25 0.081800 1.00 1.04 25 0.131000 1.25 1.22 25 0.144000 1.50 1.01 25 0.071200 0.00 1.00 15 0.00 0.25 1.01 15 0.015600 0.50 1.01 150.033700 0.75 1.06 150.048100 1.00 1.01 150.016800 1.25 0.977000 150.004860 1.50 0.959000 150.015500 0.00 1.008 0.00 0.25 1.018 0.004620 0.50 1.068 0.049100 0.75 0.9210008 0.032900 1.00 0.9510008 0.030400 1.25 0.904000 8 0.047100 1.50 0.911000 8 0.072200 limits-aes(ymax=NerveSurv$SAP+NerveSurv$SAPSE,ymin=NerveSurv$SAP-NerveSurv$SAPSE) p-ggplot(data=NerveSurv,aes(x=Time,y=SAP)) p+geom_point(aes(colour=factor(Temp), shape=factor(Temp), fill=factor(Temp)), size=4) +geom_errorbar(limits,width=0.2) +xlab(Time (min)) +xlim(c(0,50)) +ylab(Normalized Spontaneous Action Potential Rate) +ylim(c(0,1.6)) +scale_shape_manual(Acclimation Temperature,breaks=c(8,18,25), labels=c(25 ºC, 18 ºC, 8 ºC),values=c(21,21,21)) +scale_fill_manual(Acclimation Temperature,breaks=c(8,18,25), labels=c(25 ºC, 18 ºC, 8 ºC),values=c(colours()[c(173,253,218)])) +scale_colour_manual(Acclimation Temperature,breaks=c(8,18,25), labels=c(25 ºC, 18 ºC, 8 ºC),
[R] ggplot2-Issue placing error bars behind data points
Hi all, This seems like a basic problem, but no amount of playing with the code has solved it. I have a time-series data set like that shown below (only longer) and am seeking to plot the data with filled, circular points and error bars. I would like the error bars to be behind the points otherwise they tend to obscure the points (especially when I have a lot of points in the actual data set). Despite providing a fill colour for the points and using shapes that utilize fill colours, the error bars are always placed on top of the points. Can anyone see the error I am making? I simply want to move the error bars so they are behind the data points. Thanks for your help. I assume its simple...or else its a bug. Nate Time SAP TempSAPSE 0.00 1.00 25 0.00 0.25 1.04 25 0.041200 0.50 1.04 25 0.093500 0.75 1.06 25 0.081800 1.00 1.04 25 0.131000 1.25 1.22 25 0.144000 1.50 1.01 25 0.071200 0.00 1.00 15 0.00 0.25 1.01 15 0.015600 0.50 1.01 150.033700 0.75 1.06 150.048100 1.00 1.01 150.016800 1.25 0.977000 150.004860 1.50 0.959000 150.015500 0.00 1.008 0.00 0.25 1.018 0.004620 0.50 1.068 0.049100 0.75 0.9210008 0.032900 1.00 0.9510008 0.030400 1.25 0.9040008 0.047100 1.50 0.9110008 0.072200 limits-aes(ymax=NerveSurv$SAP+NerveSurv$SAPSE,ymin=NerveSurv$SAP-NerveSurv$SAPSE) p-ggplot(data=NerveSurv,aes(x=Time,y=SAP)) p+geom_point(aes(colour=factor(Temp), shape=factor(Temp), fill=factor(Temp)), size=4) +geom_errorbar(limits,width=0.2) +xlab(Time (min)) +xlim(c(0,50)) +ylab(Normalized Spontaneous Action Potential Rate) +ylim(c(0,1.6)) +scale_shape_manual(Acclimation Temperature,breaks=c(8,18,25), labels=c(25 ºC, 18 ºC, 8 ºC),values=c(21,21,21)) +scale_fill_manual(Acclimation Temperature,breaks=c(8,18,25), labels=c(25 ºC, 18 ºC, 8 ºC),values=c(colours()[c(173,253,218)])) +scale_colour_manual(Acclimation Temperature,breaks=c(8,18,25), labels=c(25 ºC, 18 ºC, 8 ºC), values=c(colours()[c(173,173,173)])) [[alternative HTML version deleted]] __ 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.
Re: [R] ggplot2-Issue placing error bars behind data points
Add geom_errorbar() before adding geom_point() ? --- Jeff Newmiller The . . Go Live... DCN:jdnew...@dcn.davis.ca.us Basics: ##.#. ##.#. Live Go... Live: OO#.. Dead: OO#.. Playing Research Engineer (Solar/Batteries O.O#. #.O#. with /Software/Embedded Controllers) .OO#. .OO#. rocks...1k --- Sent from my phone. Please excuse my brevity. Nathan Miller natemille...@gmail.com wrote: Hi all, This seems like a basic problem, but no amount of playing with the code has solved it. I have a time-series data set like that shown below (only longer) and am seeking to plot the data with filled, circular points and error bars. I would like the error bars to be behind the points otherwise they tend to obscure the points (especially when I have a lot of points in the actual data set). Despite providing a fill colour for the points and using shapes that utilize fill colours, the error bars are always placed on top of the points. Can anyone see the error I am making? I simply want to move the error bars so they are behind the data points. Thanks for your help. I assume its simple...or else its a bug. Nate Time SAP Temp SAPSE 0.00 1.00 25 0.00 0.25 1.04 25 0.041200 0.50 1.04 25 0.093500 0.75 1.06 25 0.081800 1.00 1.04 25 0.131000 1.25 1.22 25 0.144000 1.50 1.01 25 0.071200 0.00 1.00 15 0.00 0.25 1.01 15 0.015600 0.50 1.01 15 0.033700 0.75 1.06 15 0.048100 1.00 1.01 15 0.016800 1.25 0.977000 15 0.004860 1.50 0.959000 15 0.015500 0.00 1.00 8 0.00 0.25 1.01 8 0.004620 0.50 1.06 8 0.049100 0.75 0.921000 8 0.032900 1.00 0.951000 8 0.030400 1.25 0.904000 8 0.047100 1.50 0.911000 8 0.072200 limits-aes(ymax=NerveSurv$SAP+NerveSurv$SAPSE,ymin=NerveSurv$SAP-NerveSurv$SAPSE) p-ggplot(data=NerveSurv,aes(x=Time,y=SAP)) p+geom_point(aes(colour=factor(Temp), shape=factor(Temp), fill=factor(Temp)), size=4) +geom_errorbar(limits,width=0.2) +xlab(Time (min)) +xlim(c(0,50)) +ylab(Normalized Spontaneous Action Potential Rate) +ylim(c(0,1.6)) +scale_shape_manual(Acclimation Temperature,breaks=c(8,18,25), labels=c(25 �C, 18 �C, 8 �C),values=c(21,21,21)) +scale_fill_manual(Acclimation Temperature,breaks=c(8,18,25), labels=c(25 �C, 18 �C, 8 �C),values=c(colours()[c(173,253,218)])) +scale_colour_manual(Acclimation Temperature,breaks=c(8,18,25), labels=c(25 �C, 18 �C, 8 �C), values=c(colours()[c(173,173,173)])) [[alternative HTML version deleted]] _ 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. [[alternative HTML version deleted]] __ 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.
Re: [R] ggplot2-Issue placing error bars behind data points
Hi: For your test data, try this: # Result of dput(NerveSurv) NerveSurv - structure(list(Time = c(0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5 ), SAP = c(1, 1.04, 1.04, 1.06, 1.04, 1.22, 1.01, 1, 1.01, 1.01, 1.06, 1.01, 0.977, 0.959, 1, 1.01, 1.06, 0.921, 0.951, 0.904, 0.911), Temp = c(25L, 25L, 25L, 25L, 25L, 25L, 25L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 8L, 8L, 8L, 8L, 8L, 8L, 8L), SAPSE = c(0, 0.0412, 0.0935, 0.0818, 0.131, 0.144, 0.0712, 0, 0.0156, 0.0337, 0.0481, 0.0168, 0.00486, 0.0155, 0, 0.00462, 0.0491, 0.0329, 0.0304, 0.0471, 0.0722)), .Names = c(Time, SAP, Temp, SAPSE ), class = data.frame, row.names = c(NA, -21L)) limits-aes(ymax = NerveSurv$SAP + NerveSurv$SAPSE, ymin = NerveSurv$SAP - NerveSurv$SAPSE) # library('ggplot2') p - ggplot(data=NerveSurv,aes(x=Time,y=SAP)) p + geom_errorbar(limits,width=0.2) + geom_point(aes(fill=factor(Temp)), colour = colors()[173], shape = 21, size=4) + xlab(Time (min)) + xlim(c(0, 2)) + ylab(Normalized Spontaneous Action Potential Rate) + ylim(c(0,1.6)) + scale_fill_manual(Acclimation\nTemperature, breaks=c(8,18,25), labels=c(25ºC, 18 ºC, 8 ºC), values=c(colours()[c(173,253,218)])) Notice the following in the above code: (1) As Jeff Newmiller pointed out, put geom_errorbar() before geom_point(). (2) If you are going to be using the same value of a plot aesthetic, you *set* it outside aes() rather than *map* it inside aes(). See the revised code for geom_point(). The idea is that if a variable is assigned to a plot aesthetic (e.g., color, fill, shape), then it needs to be mapped inside aes(); if an aesthetic is set to a specific value, it is set outside aes(). (3) Your test data had an effective x-range of 0 - 1.5 rather than 0 - 50, so I shrunk xlim() for readability. (4) You can use \n inside of a character string as a carriage return. See the legend title for scale_fill_manual(). (5) Style note: you want the layer addition operator + to be at the end of a line, not at the beginning. Copy and paste this code verbatim to see what I mean: p + geom_errorbar(limits,width=0.2) + geom_point(aes(fill=factor(Temp)), colour = colors()[173], shape = 21, size=4) This happens because the first line is syntactically complete. HTH, Dennis On Wed, Sep 7, 2011 at 2:48 PM, Nathan Miller natemille...@gmail.com wrote: Hi all, This seems like a basic problem, but no amount of playing with the code has solved it. I have a time-series data set like that shown below (only longer) and am seeking to plot the data with filled, circular points and error bars. I would like the error bars to be behind the points otherwise they tend to obscure the points (especially when I have a lot of points in the actual data set). Despite providing a fill colour for the points and using shapes that utilize fill colours, the error bars are always placed on top of the points. Can anyone see the error I am making? I simply want to move the error bars so they are behind the data points. Thanks for your help. I assume its simple...or else its a bug. Nate Time SAP Temp SAPSE 0.00 1.00 25 0.00 0.25 1.04 25 0.041200 0.50 1.04 25 0.093500 0.75 1.06 25 0.081800 1.00 1.04 25 0.131000 1.25 1.22 25 0.144000 1.50 1.01 25 0.071200 0.00 1.00 15 0.00 0.25 1.01 15 0.015600 0.50 1.01 15 0.033700 0.75 1.06 15 0.048100 1.00 1.01 15 0.016800 1.25 0.977000 15 0.004860 1.50 0.959000 15 0.015500 0.00 1.00 8 0.00 0.25 1.01 8 0.004620 0.50 1.06 8 0.049100 0.75 0.921000 8 0.032900 1.00 0.951000 8 0.030400 1.25 0.904000 8 0.047100 1.50 0.911000 8 0.072200 limits-aes(ymax=NerveSurv$SAP+NerveSurv$SAPSE,ymin=NerveSurv$SAP-NerveSurv$SAPSE) p-ggplot(data=NerveSurv,aes(x=Time,y=SAP)) p+geom_point(aes(colour=factor(Temp), shape=factor(Temp), fill=factor(Temp)), size=4) +geom_errorbar(limits,width=0.2) +xlab(Time (min)) +xlim(c(0,50)) +ylab(Normalized Spontaneous Action Potential Rate) +ylim(c(0,1.6)) +scale_shape_manual(Acclimation Temperature,breaks=c(8,18,25), labels=c(25 ºC, 18 ºC, 8 ºC),values=c(21,21,21)) +scale_fill_manual(Acclimation Temperature,breaks=c(8,18,25), labels=c(25 ºC, 18 ºC, 8 ºC),values=c(colours()[c(173,253,218)])) +scale_colour_manual(Acclimation Temperature,breaks=c(8,18,25), labels=c(25 ºC, 18 ºC, 8 ºC), values=c(colours()[c(173,173,173)])) [[alternative HTML version deleted]] __ 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,