Hi, I'm newbie with R and don't really know how to add a median line to each of the groups that is not all the plot long. Here is a small working code that i have adapted for my purpose. If somebody could tell me how to draw median lines on each group and not all plot long. ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) group <- gl(2,10,20, labels=c("Ctl","Trt")) weight <- c(ctl, trt) ctlmed <- median(weight[which(group == "Ctl")]) trtmed <- median(weight[which(group == "Trt")]) plot.default(weight ~ group,axes=F) axis(2,col.axis = "blue",las=1,cex.axis=0.7,xpd=TRUE) axis(1, labels=levels(group),at=1:length(unique(group)),las=2,cex.axis=0.7) #horizontal abline(h = ctlmed, col = "blue", lwd = 2) # ?? how to make abline shorter ? abline(h = trtmed, col = "red", lwd = 2) box(bty="c") ps: At this stage the boxplot is not interesting for me. thanks, david
> From: r-help-bounces at r-project.org > [mailto:r-help-bounces at r-project.org] On Behalf Of David martin > Sent: Thursday, August 12, 2010 7:42 AM > To: r-help at stat.math.ethz.ch > Subject: [R] Median abline how-to ? > > Hi, > I'm newbie with R and don't really know how to add a median > line to each > of the groups that is not all the plot long. > > Here is a small working code that i have adapted for my purpose. If > somebody could tell me how to draw median lines on each group and not > all plot long. > > ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) > trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) > group <- gl(2,10,20, labels=c("Ctl","Trt")) > weight <- c(ctl, trt) > > ctlmed <- median(weight[which(group == "Ctl")]) > trtmed <- median(weight[which(group == "Trt")]) > plot.default(weight ~ group,axes=F) > axis(2,col.axis = "blue",las=1,cex.axis=0.7,xpd=TRUE) > axis(1, > labels=levels(group),at=1:length(unique(group)),las=2,cex.axis=0.7)You can use segments(), along with par("cxy"), which gives the size of a typical plotting character in user units. E.g., w <- par("cxy")[1] * 1.5 # width of pch times 1.5, half-width of median line ix <- seq_len(nlevels(group)) mediansByGroup <- tapply(weight, group, median) segments(x0=ix-w, x1=ix+w, y0=mediansByGroup, col=ix) Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com> -----Original Message----- > #horizontal > abline(h = ctlmed, col = "blue", lwd = 2) # ?? how to make > abline shorter ? > abline(h = trtmed, col = "red", lwd = 2) > box(bty="c") > > ps: At this stage the boxplot is not interesting for me. > thanks, > david > > ______________________________________________ > 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. >
thanks !!! On 12/08/10 17:49, William Dunlap wrote:> segments(x0=ix-w, x1=ix+w, y0=mediansByGroup, col=ix) >
On 08/13/2010 12:41 AM, David martin wrote:> Hi, > I'm newbie with R and don't really know how to add a median line to each > of the groups that is not all the plot long. > > Here is a small working code that i have adapted for my purpose. If > somebody could tell me how to draw median lines on each group and not > all plot long. > > ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) > trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) > group <- gl(2,10,20, labels=c("Ctl","Trt")) > weight <- c(ctl, trt) > > ctlmed <- median(weight[which(group == "Ctl")]) > trtmed <- median(weight[which(group == "Trt")]) > plot.default(weight ~ group,axes=F) > axis(2,col.axis = "blue",las=1,cex.axis=0.7,xpd=TRUE) > axis(1, > labels=levels(group),at=1:length(unique(group)),las=2,cex.axis=0.7) > #horizontal > abline(h = ctlmed, col = "blue", lwd = 2) # ?? how to make abline shorter ? > abline(h = trtmed, col = "red", lwd = 2) > box(bty="c") >Hi David, Look at ablineclip in the plotrix package. Jim