Hey Everyone, I'm pretty new at R and wanted to try and make some graphs with dummy data before using it to analyze my own. I successfully made a bar graph and error bars, but I can't figure out how to align them properly (currently they are not centered on the bars and some of them aren't even close). Here's the code that I'm using:> marks <- sample(4:10, size=50, replace=TRUE) > dim(marks) <- c(10,5) > classavg <- colMeans (marks, na.rm=FALSE, dims = 1) > barplot(classavg, main="Class Average for Quizzes", xlab="Quiz", > ylab="Average", names = c("1","2","3","4","5"), ylim=c(0,12), axis.lty=1)box()> max <- apply (marks, 2, max) > min <- apply (marks, 2, min) > arrows(1:5, min, 1:5, max, code=3, angle=90, length=0.125)The error bars are simply ranges for now (I wanted to do that before I tried standard deviation/error). If anyone could help me align them it would be much appreciated! brett -- View this message in context: http://n4.nabble.com/Bar-Plots-Error-Bars-tp947407p947407.html Sent from the R help mailing list archive at Nabble.com.
Brett Hi Searching http://www.Rseek.org will return many similar results. You might find the following useful in terms of your question re aligning the bars: http://users.fmg.uva.nl/rgrasman/rpages/2005/09/error-bars-in-plots.html The discussion on this page also refers to the errbar function in the Hmisc package. There are other options, searching Rseek will provide many! Basically something along the lines of the following will 'fix' your graph: marks <- sample(4:10, size=50, replace=TRUE) dim(marks) <- c(10,5) classavg <- colMeans (marks, na.rm=FALSE, dims = 1) thegraph <- barplot(classavg, main="Class Average for Quizzes", xlab="Quiz", ylab="Average", names = c("1","2","3","4","5"), ylim=c(0,12), axis.lty=1) str(thegraph) max <- apply (marks, 2, max) min <- apply (marks, 2, min) arrows(thegraph, min, thegraph, max, code=3, angle=90, length=0.125) HTH, Jeremy> Hey Everyone, > > I'm pretty new at R and wanted to try and make some graphs with dummy data > before using it to analyze my own. I successfully made a bar graph and > error bars, but I can't figure out how to align them properly (currently > they are not centered on the bars and some of them aren't even close). > Here's the > > code that I'm using: > > marks <- sample(4:10, size=50, replace=TRUE) > > dim(marks) <- c(10,5) > > classavg <- colMeans (marks, na.rm=FALSE, dims = 1) > > barplot(classavg, main="Class Average for Quizzes", xlab="Quiz", > > ylab="Average", names = c("1","2","3","4","5"), ylim=c(0,12), axis.lty=1) > > box() > > > max <- apply (marks, 2, max) > > min <- apply (marks, 2, min) > > arrows(1:5, min, 1:5, max, code=3, angle=90, length=0.125) > > The error bars are simply ranges for now (I wanted to do that before I > tried standard deviation/error). If anyone could help me align them it > would be much appreciated! > > brett--------------- Jeremy Baxter, Statistics Department, Rhodes University, South Africa. Views expressed above, no matter how badly spelt, are my own... I think? [[alternative HTML version deleted]]
Hi Brett, have you tried the function "errbar", within the library "Hmisc"? It works pretty well for barplots. You have to specify the coordinates where error bars start ("x" and "y"), end then the ending points they end ("yminus=y-error" and "yplus=y+error"). The plotting function "barplot2" within the library "gplots" allows you also to add error bars intrinsecally. Hope it helps! Jose 2009/12/3 bshan101 <bshan101@gmail.com>> > Hey Everyone, > > I'm pretty new at R and wanted to try and make some graphs with dummy data > before using it to analyze my own. I successfully made a bar graph and > error > bars, but I can't figure out how to align them properly (currently they are > not centered on the bars and some of them aren't even close). Here's the > code that I'm using: > > > marks <- sample(4:10, size=50, replace=TRUE) > > dim(marks) <- c(10,5) > > classavg <- colMeans (marks, na.rm=FALSE, dims = 1) > > barplot(classavg, main="Class Average for Quizzes", xlab="Quiz", > > ylab="Average", names = c("1","2","3","4","5"), ylim=c(0,12), axis.lty=1) > box() > > max <- apply (marks, 2, max) > > min <- apply (marks, 2, min) > > arrows(1:5, min, 1:5, max, code=3, angle=90, length=0.125) > > The error bars are simply ranges for now (I wanted to do that before I > tried > standard deviation/error). If anyone could help me align them it would be > much appreciated! > > brett > > -- > View this message in context: > http://n4.nabble.com/Bar-Plots-Error-Bars-tp947407p947407.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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]]
Frank E Harrell Jr
2009-Dec-03 13:56 UTC
[R] Can we get rid of bar charts with error bars?
Bar charts with error bars are far inferior to dot charts and other types of displays. One of many problems is demonstrated if you draw a bar chart displaying temperature in F then re-draw it on the degrees C scale. See http://biostat.mc.vanderbilt.edu/DynamitePlots for much more information. The error bars lull us into an assumption that symmetric confidence intervals are OK, among other things. Frank -- Frank E Harrell Jr Professor and Chair School of Medicine Department of Biostatistics Vanderbilt University
Frank, the example on http://biostat.mc.vanderbilt.edu/DynamitePlots is nice, and I agree with you. Just one minor question: would it be possible to mention as "An article with nice dot plots" a paper, which is freely available? Heinz At 14:56 03.12.2009, Frank E Harrell Jr wrote:>Bar charts with error bars are far inferior to dot charts and other >types of displays. One of many problems is demonstrated if you draw >a bar chart displaying temperature in F then re-draw it on the >degrees C scale. See http://biostat.mc.vanderbilt.edu/DynamitePlots >for much more information. The error bars lull us into an >assumption that symmetric confidence intervals are OK, among other things. > >Frank > >-- >Frank E Harrell Jr Professor and Chair School of Medicine > Department of Biostatistics Vanderbilt University > >______________________________________________ >R-help at 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.
On 12/04/2009 12:56 AM, Frank E Harrell Jr wrote:> Bar charts with error bars are far inferior to dot charts and other > types of displays. One of many problems is demonstrated if you draw a > bar chart displaying temperature in F then re-draw it on the degrees C > scale. See http://biostat.mc.vanderbilt.edu/DynamitePlots for much > more information. The error bars lull us into an assumption that > symmetric confidence intervals are OK, among other things. > > Frank >I could promote the "dispersion" function as capable of displaying asymmetric confidence intervals on whatever location indicators you prefer (have a look at the second example for "hierobarp" for example), but the problem is deeper than that. The point of graphic displays is to convey information to someone else, not to tell ourselves what we already know. Do people cheat with pie charts, bar charts, etc? Sure, and we could cheat with dot charts, too. Graphic displays are typically shown to an audience that knows less about the topic than the presenter in the hope that an obscure relationship will be clarified. If I am presenting to colleagues in my field, I will use much more informative and difficult to understand graphics than if I am summarizing the same results to the general public. If both groups leave the respective presentations enlightened, I have done well. Jim