R Grouped Barplot With Error Bars
Contents |
here for a quick overview of the site Help barplot with error bars ggplot2 Center Detailed answers to any questions you might have
Adding Standard Error Bars In R
Meta Discuss the workings and policies of this site About Us Learn more about barplot with error bars matlab Stack Overflow the company Business Learn more about hiring developers or posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges error.bar r Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 6.2 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up Grouped barplot in R with error bars up vote 4 down vote favorite 1
Error.bar Function R
Dear Stackoverflow users, I would like to draw a grouped barplot with error bars. Here is the kind of figure I have been able to get up to now, and this is ok for what I need: And here is my script: #create dataframe Gene<-c("Gene1","Gene2","Gene1","Gene2") count1<-c(12,14,16,34) count2<-c(4,7,9,23) count3<-c(36,22,54,12) count4<-c(12,24,35,23) Species<-c("A","A","B","B") df<-data.frame(Gene,count1,count2,count3,count4,Species) df mean1<-mean(as.numeric(df[1,][c(2,3,4,5)])) mean2<-mean(as.numeric(df[2,][c(2,3,4,5)])) mean3<-mean(as.numeric(df[3,][c(2,3,4,5)])) mean4<-mean(as.numeric(df[4,][c(2,3,4,5)])) Gene1SpeciesA.stdev<-sd(as.numeric(df[1,][c(2,3,4,5)])) Gene2SpeciesA.stdev<-sd(as.numeric(df[2,][c(2,3,4,5)])) Gene1SpeciesB.stdev<-sd(as.numeric(df[3,][c(2,3,4,5)])) Gene2SpeciesB.stdev<-sd(as.numeric(df[4,][c(2,3,4,5)])) ToPlot<-c(mean1,mean2,mean3,mean4) #plot barplot plot<-matrix(ToPlot,2,2,byrow=TRUE) #with 2 being replaced by the number of genes! tplot<-t(plot) BarPlot <- barplot(tplot, beside=TRUE,ylab="count", names.arg=c("Gene1","Gene2"),col=c("blue","red")) #add legend legend("topright", legend = c("SpeciesA","SpeciesB"), fill = c("blue","red")) #add error bars ee<-matrix(c(Gene1SpeciesA.stdev,Gene2SpeciesA.stdev,Gene1SpeciesB.stdev,Gene2SpeciesB.stdev),2,2,byrow=TRUE)*1.96/sqrt(4) tee<-t(ee) error.bar(BarPlot,tplot,tee) The problem is that I need to do this for 50 genes, and 4 species, so my script is gonna get super super long and I guess this is not optimized... I tried to find help here but I can't figure out a bett
Diet & Nutrition (28) Education (1) Evolution (35) Human Ecology (75) Infectious Disease (66) LaTeX (5) Primates (9) R (12) science (17) errbar r Social Network Analysis (17) Statistics (16) Teaching (10) Uncategorized (28) scatter plot with error bars in r Meta Log in Entries RSS Comments RSS WordPress.org ← Latest Swine Flu Epidemic Curve for the
Summaryse R
United States Stanford Workshop in Biodemography → Plotting Error Bars in R August 24th, 2009 · 52 Comments · R One common frustration that I have http://stackoverflow.com/questions/29768219/grouped-barplot-in-r-with-error-bars heard expressed about R is that there is no automatic way to plot error bars (whiskers really) on bar plots. I just encountered this issue revising a paper for submission and figured I'd share my code. The following simple function will plot reasonable error bars on a bar plot. PLAIN TEXT R: error.bar http://monkeysuncle.stanford.edu/?p=485 <- function(x, y, upper, lower=upper, length=0.1,...){ if(length(x) != length(y) | length(y) !=length(lower) | length(lower) != length(upper)) stop("vectors must be same length") arrows(x,y+upper, x, y-lower, angle=90, code=3, length=length, ...) } Now let's use it. First, I'll create 5 means drawn from a Gaussian random variable with unit mean and variance. I want to point out another mild annoyance with the way that R handles bar plots, and how to fix it. By default, barplot() suppresses the X-axis. Not sure why. If you want the axis to show up with the same line style as the Y-axis, include the argument axis.lty=1, as below. By creating an object to hold your bar plot, you capture the midpoints of the bars along the abscissa that can later be used to plot the error bars. PLAIN TEXT R: y <- rnorm(500, mean=1) y <- matrix(y,100,5) y.means <- apply(y,2,mean) y.sd <- apply(y,2,sd) barx <- barplot(y.means, names.arg=1:5,ylim=c(0,1.5), col="blue", axis.lty=1, xlab="Replicates", ylab="Value (arbitrary units)") error.ba
error bars Two within-subjects variables Note about normed means Helper functions Problem You want to plot means and error bars http://cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/ for a dataset. Solution To make graphs with ggplot2, the data http://blog.revolutionanalytics.com/2009/09/making-barplots-with-error-bars-in-r.html must be in a data frame, and in “long” (as opposed to wide) format. If your data needs to be restructured, see this page for more information. Sample data The examples below will the ToothGrowth dataset. Note that dose is a numeric error bars column here; in some situations it may be useful to convert it to a factor. tg <- ToothGrowth head(tg) #> len supp dose #> 1 4.2 VC 0.5 #> 2 11.5 VC 0.5 #> 3 7.3 VC 0.5 #> 4 5.8 VC with error bars 0.5 #> 5 6.4 VC 0.5 #> 6 10.0 VC 0.5 library(ggplot2) First, it is necessary to summarize the data. This can be done in a number of ways, as described on this page. In this case, we’ll use the summarySE() function defined on that page, and also at the bottom of this page. (The code for the summarySE function must be entered before it is called here). # summarySE provides the standard deviation, standard error of the mean, and a (default 95%) confidence interval tgc <- summarySE(tg, measurevar="len", groupvars=c("supp","dose")) tgc #> supp dose N len sd se ci #> 1 OJ 0.5 10 13.23 4.459709 1.4102837 3.190283 #> 2 OJ 1.0 10 22.70 3.910953 1.2367520 2.797727 #> 3 OJ 2.0 10 26.06
11, 2009 Making barplots with error bars in R When presenting summarized data -- the data in the cells of a two-way ANOVA, for example -- it's always a good idea to visualize the uncertainty in the summaries. The natural way for statisticians is to use a boxplot, and ggplot2 makes that easy: qplot(class, hwy, fill=factor(year), data=mpg, geom="boxplot", position="dodge")+theme_bw() But Jarrett Byrnes, a marine community biologist, wanted to use a barplot, instead. (A boxplot shows more details of the distribution, but more people know how to read a barplot.) As he shows, it is possible, with a little extra work, add error bars to a barplot with ggplot2: See the link below for the code: a great demonstration of the customization capabilities of ggplot2. i’m a chordata! urochordata!: Let’s All Go Down to the Barplot! (Update Jan 2 2013: link to http://www.imachordata.com/?p=199 removed -- site compromised) Posted by David Smith at 07:11 in graphics, R | Permalink Comments You can follow this conversation by subscribing to the comment feed for this post. The comments to this entry are closed. Information About this blog Comments Policy About Categories About the Authors Local R User Group Directory Tips on Starting an R User Group Search Revolutions Blog Got comments or suggestions for the blog editor? Email David Smith. Follow David on Twitter: @revodavid +David Smith Get this blog via email with Categories academia advanced tips announcements applications beginner tips big data courses current events data science developer tips events finance government graphics high-performance computing life sciences Microsoft open source other industry packages popularity predictive analytics profiles python R R is Hot random reviews Revolution Rmedia roundups sports statistics user groups See More R links Find R packagesCRAN package