All, I have: x <- matrix(c(22,3,6,69,9,4,7,81,23,4,22,50),nrow=3,byrow=TRUE) rownames(x) <- c("Cold or flu","Headache","Backache"); colnames(x) <- c("Went to doctor","No response","Did nothing","Self-medicated") x <- t(x) print(x) barplot(x,beside=TRUE, ylim=c(0,90), xlab="Ailment", ylab="Percent", legend.text=TRUE, args.legend=list("topright",title="Treatment")) abline(h=c(seq(10,90,10))) box() I'd like to get the horizontal lines in the background. Any suggestions? D. -- View this message in context: http://r.789695.n4.nabble.com/Horizontal-grid-in-background-of-barplot-tp4642081.html Sent from the R help mailing list archive at Nabble.com.
On 2012-09-03 12:12, David Arnold wrote:> All, > > I have: > > x <- matrix(c(22,3,6,69,9,4,7,81,23,4,22,50),nrow=3,byrow=TRUE) > rownames(x) <- c("Cold or flu","Headache","Backache"); > colnames(x) <- c("Went to doctor","No response","Did > nothing","Self-medicated") > x <- t(x) > print(x) > barplot(x,beside=TRUE, > ylim=c(0,90), > xlab="Ailment", > ylab="Percent", > legend.text=TRUE, > args.legend=list("topright",title="Treatment")) > abline(h=c(seq(10,90,10))) > box() > > I'd like to get the horizontal lines in the background. > > Any suggestions?Just plot the bars twice and add the background colour of the legend region. barplot(x,beside=TRUE, ylim=c(0,90)) abline(h=c(seq(10,90,10))) box() barplot(x,beside=TRUE, xlab="Ailment", ylab="Percent", legend.text=TRUE, args.legend=list("topright",title="Treatment",bg="white"), add=TRUE) Peter Ehlers
On 09/04/2012 05:12 AM, David Arnold wrote:> All, > > I have: > > x<- matrix(c(22,3,6,69,9,4,7,81,23,4,22,50),nrow=3,byrow=TRUE) > rownames(x)<- c("Cold or flu","Headache","Backache"); > colnames(x)<- c("Went to doctor","No response","Did > nothing","Self-medicated") > x<- t(x) > print(x) > barplot(x,beside=TRUE, > ylim=c(0,90), > xlab="Ailment", > ylab="Percent", > legend.text=TRUE, > args.legend=list("topright",title="Treatment")) > abline(h=c(seq(10,90,10))) > box() > > I'd like to get the horizontal lines in the background. > > Any suggestions?Hi David, Try this: library(plotrix) barp(x,col=gray(c(0.2,0.4,0.6,0.8)),names.arg=colnames(x), xlab="Ailment",ylab="Percent",ylim=c(0,90), do.first=expression(abline(h=seq(10,80,10)))) legend(2.5,85,rownames(x),fill=gray(c(0.2,0.4,0.6,0.8)), bg="white") Jim
Cable, Sam B Civ USAF AFMC AFRL/RVBXI
2012-Sep-05 15:38 UTC
[R] Horizontal grid in background of barplot
A horribly pedestrian alternative to plotrix: barplot(x,beside=TRUE, ylim=c(0,90), etc.) par('usr') # just getting plot limits [1] 0.44 15.56 0.00 90.00 par(new=T) lines(c(0.44,15.56),c(20,20)) lines(c(0.44,15.56),c(40,40)) etc. [[alternative HTML version deleted]]