I am having trouble with legends clipping, not sure how to control that. Here is my latest code to demo. I want the legend to show up in the center of the window, in fairly large font. Right now, font is too small, but if I increase it, the legend clips even more. In this simplified example, the plots are dummy (I took them from an example), my actual plots only have two bars, corresponding to the legend. windows(); nf1 <- layout(matrix(1), widths=lcm(6), heights=lcm(6)) nf <- layout(matrix(c(1,2,5,0,3,4),3,2,byrow=TRUE), c(2.2,2.2), c(2.2,1,2.2), TRUE) layout.show(nf); # par(mfrow=c(3,2)); par(font.axis=2); par(font.lab=2); # pmn=t(pmn); tN <- table(Ni <- stats::rpois(100, lambda=5)) barplot(tN, col=rainbow(20)) # par (mfg=c(1,2)); par(font.axis=2); par(font.lab=2); tN <- table(Ni <- stats::rpois(100, lambda=5)) barplot(tN, col=rainbow(20)) # par (mfg=c(2,1)); par(font.axis=2); par(font.lab=2); tN <- table(Ni <- stats::rpois(100, lambda=5)) barplot(tN, col=rainbow(20)) # par (mfg=c(2,2)); par(font.axis=2); par(font.lab=2); tN <- table(Ni <- stats::rpois(100, lambda=5)) barplot(tN, col=rainbow(20)) # par (mfg=c(3,1)); plot(1, type="n", axes=FALSE, xlab="", ylab="",ylim=c(0,2),xlim=c(0,2)); # legend(1,0.8, legend = c("CPX","Home"), bty="n", fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4); # ltest=legend("center", legend = c("CPX","Home"), bty="n", fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4,trace=TRUE,plot=FALSE); legend(0.5,0.5, legend = c("CPX","Home"), bty="n", fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4);
I am having trouble with legends clipping, not sure how to control that. Here is my latest code to demo. I want the legend to show up in the center of the window, in fairly large font. Right now, font is too small, but if I increase it, the legend clips even more. In this simplified example, the plots are dummy (I took them from an example), my actual plots only have two bars, corresponding to the legend. windows(); nf1 <- layout(matrix(1), widths=lcm(6), heights=lcm(6)) nf <- layout(matrix(c(1,2,5,0,3,4),3,2,byrow=TRUE), c(2.2,2.2), c(2.2,1,2.2), TRUE) layout.show(nf); # par(mfrow=c(3,2)); par(font.axis=2); par(font.lab=2); # pmn=t(pmn); tN <- table(Ni <- stats::rpois(100, lambda=5)) barplot(tN, col=rainbow(20)) # par (mfg=c(1,2)); par(font.axis=2); par(font.lab=2); tN <- table(Ni <- stats::rpois(100, lambda=5)) barplot(tN, col=rainbow(20)) # par (mfg=c(2,1)); par(font.axis=2); par(font.lab=2); tN <- table(Ni <- stats::rpois(100, lambda=5)) barplot(tN, col=rainbow(20)) # par (mfg=c(2,2)); par(font.axis=2); par(font.lab=2); tN <- table(Ni <- stats::rpois(100, lambda=5)) barplot(tN, col=rainbow(20)) # par (mfg=c(3,1)); plot(1, type="n", axes=FALSE, xlab="", ylab="",ylim=c(0,2),xlim=c(0,2)); # legend(1,0.8, legend = c("CPX","Home"), bty="n", fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4); # ltest=legend("center", legend = c("CPX","Home"), bty="n", fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4,trace=TRUE,plot=FALSE); legend(0.5,0.5, legend c("CPX","Home"), bty="n", fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4);
Here is a better example. I am also trying to put gaps between the bars on the graphs, and this work-around is the only way I can make it work satisfactorily. Any suggestions about that? windows(); nf <- layout(matrix(c(1,2,5,0,3,4),3,2,byrow=TRUE), c(2.2,2.2), c(2.2,1,2.2), TRUE) layout.show(nf); par(font.axis=2); par(font.lab=2); ylimit=c(0,1.2); pmn <- matrix(c(1:5), nrow=5, ncol=1) pmn[,1]=c(0,0.8,0,0.75,0); barplot(pmn,ylab="Slopes",beside=TRUE,ylim=ylimit,xlim=c(1,6.0), col = c(NA,"blue", NA, "red",NA)); par(font.axis=2); par(font.lab=2); ylimit=c(0,1.2); pmn <- matrix(c(1:5), nrow=5, ncol=1) pstd=pmn; pmn[,1]=c(0,0.8,0,0.75,0); barplot(pmn,ylab="Slopes",beside=TRUE,ylim=ylimit,xlim=c(1,6.0), col = c(NA,"blue", NA, "red",NA)); par(font.axis=2); par(font.lab=2); ylimit=c(0,1.2); pmn <- matrix(c(1:5), nrow=5, ncol=1) pstd=pmn; pmn[,1]=c(0,0.8,0,0.75,0); barplot(pmn,ylab="Slopes",beside=TRUE,ylim=ylimit,xlim=c(1,6.0), col = c(NA,"blue", NA, "red",NA)); par(font.axis=2); par(font.lab=2); ylimit=c(0,1.2); pmn <- matrix(c(1:5), nrow=5, ncol=1) pstd=pmn; pmn[,1]=c(0,0.8,0,0.75,0); barplot(pmn,ylab="Slopes",beside=TRUE,ylim=ylimit,xlim=c(1,6.0), col = c(NA,"blue", NA, "red",NA)); plot(1, type="n", axes=FALSE, xlab="", ylab="",ylim=c(0,2),xlim=c(0,2)); legend(0.5,0.5, legend = c("CPX","Home"), bty="n", fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4); -----Original Message----- To: r-help at r-project.org Subject: [R] Legend Clipping I am having trouble with legends clipping, not sure how to control that. Here is my latest code to demo. I want the legend to show up in the center of the window, in fairly large font. Right now, font is too small, but if I increase it, the legend clips even more. In this simplified example, the plots are dummy (I took them from an example), my actual plots only have two bars, corresponding to the legend. windows(); nf1 <- layout(matrix(1), widths=lcm(6), heights=lcm(6)) nf <- layout(matrix(c(1,2,5,0,3,4),3,2,byrow=TRUE), c(2.2,2.2), c(2.2,1,2.2), TRUE) layout.show(nf); # par(mfrow=c(3,2)); par(font.axis=2); par(font.lab=2); # pmn=t(pmn); tN <- table(Ni <- stats::rpois(100, lambda=5)) barplot(tN, col=rainbow(20)) # par (mfg=c(1,2)); par(font.axis=2); par(font.lab=2); tN <- table(Ni <- stats::rpois(100, lambda=5)) barplot(tN, col=rainbow(20)) # par (mfg=c(2,1)); par(font.axis=2); par(font.lab=2); tN <- table(Ni <- stats::rpois(100, lambda=5)) barplot(tN, col=rainbow(20)) # par (mfg=c(2,2)); par(font.axis=2); par(font.lab=2); tN <- table(Ni <- stats::rpois(100, lambda=5)) barplot(tN, col=rainbow(20)) # par (mfg=c(3,1)); plot(1, type="n", axes=FALSE, xlab="", ylab="",ylim=c(0,2),xlim=c(0,2)); # legend(1,0.8, legend = c("CPX","Home"), bty="n", fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4); # ltest=legend("center", legend = c("CPX","Home"), bty="n", fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4,trace=TRUE,plot=FALSE); legend(0.5,0.5, legend c("CPX","Home"), bty="n", fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4); ______________________________________________ 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.
Beck, Kenneth (STP) wrote: > ...> legend(0.5,0.5, legend = c("CPX","Home"), bty="n", > fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4); >Hi Kenneth, Try this: par(xpd=TRUE) legend(0.5,0.5, legend = c("CPX","Home"), bty="n", fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4); par(xps=FALSE) Jim
Jim, Thanks for the tip, this did the trick. I knew it would be simple, too much documentation, too little time! -----Original Message----- From: Jim Lemon [mailto:jim at bitwrit.com.au] Sent: Sunday, April 20, 2008 5:20 AM To: Beck, Kenneth (STP) Cc: r-help at r-project.org Subject: Re: [R] Legend Clipping Beck, Kenneth (STP) wrote: > ...> legend(0.5,0.5, legend = c("CPX","Home"), bty="n", > fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4); >Hi Kenneth, Try this: par(xpd=TRUE) legend(0.5,0.5, legend = c("CPX","Home"), bty="n", fill=c("blue","red"),lwd=1, cex=1, xjust=0.5, yjust=0.4); par(xps=FALSE) Jim