Grouped Bar Plot With Error Bars In R
Contents |
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss
Barplot With Error Bars Ggplot2
the workings and policies of this site About Us Learn more adding standard error bars in r about Stack Overflow the company Business Learn more about hiring developers or posting ads with us Stack error.bar r Overflow Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 4.7 million programmers, just like you, helping
Error.bar Function R
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 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
Barplot With Error Bars Matlab
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 better way to do what I'd like. If I did not need error bars I could adapt this script but the tricky part is to mix ggplot beautiful barplots and error bars! ;) If you have any idea to optimize my script, I would really appreciate! :) Thanks a lot! r ggplot2 bar-chart share|improve this question asked Apr 21 '15 at 9:32 tlorin 173213 1 b
error bars Two within-subjects variables Note about normed means Helper functions Problem You want to plot means and error bars for a dataset. Solution To summaryse r make graphs with ggplot2, the data must be in a data frame,
Errbar R
and in “long” (as opposed to wide) format. If your data needs to be restructured, see this calculate standard error in r page for more information. Sample data The examples below will the ToothGrowth dataset. Note that dose is a numeric column here; in some situations it may be useful to http://stackoverflow.com/questions/29768219/grouped-barplot-in-r-with-error-bars 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 0.5 #> 5 6.4 VC 0.5 #> 6 10.0 VC 0.5 http://cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/ class="n">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 2.655058 0.8396031 1.899314 #> 4 VC 0.5 10 7.98 2.746634 0.8685620 1.964824 #> 5 VC 1.0 10 16.77 2.515309 0.7954104 1.799343 #> 6 VC 2.0 10 26.14 4.797731 1.517
needs to be set at the layer level if you are overriding the plot defaults. data A layer specific dataset - only needed if you want to override the http://docs.ggplot2.org/0.9.3.1/geom_errorbar.html plot defaults. stat The statistical transformation to use on the data for this layer. position The position adjustment to use for overlappling points on this layer ... other arguments passed on to layer. This can include aesthetics whose values you want to set, not map. See layer for more details. Description Error bars. Aesthetics geom_errorbar understands the following error bars aesthetics (required aesthetics are in bold): x ymax ymin alpha colour linetype size width Examples # Create a simple example dataset df # Because the bars and errorbars have different widths # we need to specify how wide the objects we are dodging are dodge Mapping a variable to y and also using stat="bin". With stat="bin", it will attempt to set plot with error the y value to the count of cases in each group. This can result in unexpected behavior and will not be allowed in a future version of ggplot2. If you want y to represent counts of cases, use stat="bin" and don't map a variable to y. If you want y to represent values in the data, use stat="identity". See ?geom_bar for examples. (Deprecated; last used in version 0.9.2) p Mapping a variable to y and also using stat="bin". With stat="bin", it will attempt to set the y value to the count of cases in each group. This can result in unexpected behavior and will not be allowed in a future version of ggplot2. If you want y to represent counts of cases, use stat="bin" and don't map a variable to y. If you want y to represent values in the data, use stat="identity". See ?geom_bar for examples. (Deprecated; last used in version 0.9.2) p + geom_bar(position=dodge) + geom_errorbar(limits, position=dodge, width=0.25) Mapping a variable to y and also using stat="bin". With stat="bin", it will attempt to set the y value to the