[R] Drawing lines in margins
Hi all, Quick question: What function can I use to draw a line in the margin of a plot? segments() and lines() both stop at the margin. In case the answer depends on exactly what I'm trying to do, see below. I'm using R v. 2.8.1 on Windows XP. Cheers, Alan I'm trying to make a horizontal barplot with a column of numbers on the right side. I'd like to put a line between the column header and the numbers. The following reconstructs the idea - just copy and paste it in: aa - 1:10 plot.mtx2-cbind(aa,aa+1) colnames(plot.mtx2)-c(Male,Female) lci2- cbind(aa-1,aa) uci2- cbind(aa+1,aa+2) par(mar=c(5,6,4,5)) cols - c(grey79,grey41) bplot2-barplot(t(plot.mtx2),beside=TRUE,xlab=Malaria death rates per 100,000, names.arg=paste(state,aa,sep=),legend.text=F,las=1,xlim=c(0,13), horiz=T, col=cols, main=Malaria death rates by state and sex) legend(8,6,legend=c(Female,Male),fill=cols[order(2:1)]) segments(y0=bplot2, y1=bplot2, x0=t(lci2), x1=t(uci2)) mtext(10*(aa+1),side=4,line=4,at=seq(3,3*length(aa),by=3)-0.35,padj=0.5,adj=1,las=1,cex=0.85) mtext(10*aa,side=4,line=4,at=seq(2,3*length(aa)-1,by=3)-0.65,padj=0.5,adj=1,las=1,cex=0.85) mtext(Estimated,side=4,line=3,at=3*length(aa)+2.75,padj=0.5,adj=0.5,las=1,cex=0.85) mtext(Deaths,side=4,line=3,at=3*length(aa)+1.25,padj=0.5,adj=0.5,las=1,cex=0.85) __ 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.
Re: [R] Drawing lines in margins
Look at the xpd option in ?par. If you set par(xpd=TRUE) you should be able to add a segment for what you want. But please let me know if someone gives you a better way to do this. -Original Message- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of Alan Cohen Sent: Wednesday, July 29, 2009 10:22 AM To: r-help@r-project.org Subject: [R] Drawing lines in margins Hi all, Quick question: What function can I use to draw a line in the margin of a plot? segments() and lines() both stop at the margin. In case the answer depends on exactly what I'm trying to do, see below. I'm using R v. 2.8.1 on Windows XP. Cheers, Alan I'm trying to make a horizontal barplot with a column of numbers on the right side. I'd like to put a line between the column header and the numbers. The following reconstructs the idea - just copy and paste it in: aa - 1:10 plot.mtx2-cbind(aa,aa+1) colnames(plot.mtx2)-c(Male,Female) lci2- cbind(aa-1,aa) uci2- cbind(aa+1,aa+2) par(mar=c(5,6,4,5)) cols - c(grey79,grey41) bplot2-barplot(t(plot.mtx2),beside=TRUE,xlab=Malaria death rates per 100,000, names.arg=paste(state,aa,sep=),legend.text=F,las=1,xlim=c(0,13), horiz=T, col=cols, main=Malaria death rates by state and sex) legend(8,6,legend=c(Female,Male),fill=cols[order(2:1)]) segments(y0=bplot2, y1=bplot2, x0=t(lci2), x1=t(uci2)) mtext(10*(aa+1),side=4,line=4,at=seq(3,3*length(aa),by=3)-0.35,padj=0.5, adj=1,las=1,cex=0.85) mtext(10*aa,side=4,line=4,at=seq(2,3*length(aa)-1,by=3)-0.65,padj=0.5,ad j=1,las=1,cex=0.85) mtext(Estimated,side=4,line=3,at=3*length(aa)+2.75,padj=0.5,adj=0.5,la s=1,cex=0.85) mtext(Deaths,side=4,line=3,at=3*length(aa)+1.25,padj=0.5,adj=0.5,las=1 ,cex=0.85) __ 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. === P Please consider the environment before printing this e-mail Cleveland Clinic is ranked one of the top hospitals in America by U.S. News World Report (2008). Visit us online at http://www.clevelandclinic.org for a complete listing of our services, staff and locations. Confidentiality Note: This message is intended for use\...{{dropped:13}} __ 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.
Re: [R] Drawing lines in margins
In addition to Benjamin's response (which is the best way that I know of), you may also want to look at the grconvertX and grconvertY functions for ways to find the coordinates in the margins to plot at. -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare greg.s...@imail.org 801.408.8111 -Original Message- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r- project.org] On Behalf Of Nutter, Benjamin Sent: Wednesday, July 29, 2009 8:56 AM To: Alan Cohen Cc: r-help@r-project.org Subject: Re: [R] Drawing lines in margins Look at the xpd option in ?par. If you set par(xpd=TRUE) you should be able to add a segment for what you want. But please let me know if someone gives you a better way to do this. -Original Message- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r- project.org] On Behalf Of Alan Cohen Sent: Wednesday, July 29, 2009 10:22 AM To: r-help@r-project.org Subject: [R] Drawing lines in margins Hi all, Quick question: What function can I use to draw a line in the margin of a plot? segments() and lines() both stop at the margin. In case the answer depends on exactly what I'm trying to do, see below. I'm using R v. 2.8.1 on Windows XP. Cheers, Alan I'm trying to make a horizontal barplot with a column of numbers on the right side. I'd like to put a line between the column header and the numbers. The following reconstructs the idea - just copy and paste it in: aa - 1:10 plot.mtx2-cbind(aa,aa+1) colnames(plot.mtx2)-c(Male,Female) lci2- cbind(aa-1,aa) uci2- cbind(aa+1,aa+2) par(mar=c(5,6,4,5)) cols - c(grey79,grey41) bplot2-barplot(t(plot.mtx2),beside=TRUE,xlab=Malaria death rates per 100,000, names.arg=paste(state,aa,sep=),legend.text=F,las=1,xlim=c(0,13), horiz=T, col=cols, main=Malaria death rates by state and sex) legend(8,6,legend=c(Female,Male),fill=cols[order(2:1)]) segments(y0=bplot2, y1=bplot2, x0=t(lci2), x1=t(uci2)) mtext(10*(aa+1),side=4,line=4,at=seq(3,3*length(aa),by=3)- 0.35,padj=0.5, adj=1,las=1,cex=0.85) mtext(10*aa,side=4,line=4,at=seq(2,3*length(aa)-1,by=3)- 0.65,padj=0.5,ad j=1,las=1,cex=0.85) mtext(Estimated,side=4,line=3,at=3*length(aa)+2.75,padj=0.5,adj=0.5,l a s=1,cex=0.85) mtext(Deaths,side=4,line=3,at=3*length(aa)+1.25,padj=0.5,adj=0.5,las= 1 ,cex=0.85) __ 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. === P Please consider the environment before printing this e-mail Cleveland Clinic is ranked one of the top hospitals in America by U.S. News World Report (2008). Visit us online at http://www.clevelandclinic.org for a complete listing of our services, staff and locations. Confidentiality Note: This message is intended for use\...{{dropped:13}} __ 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. __ 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.