On Thu, 2007-08-30 at 20:13 +0300, Lauri Nikkinen wrote: > Hi R-users, > > I inted to make multiple plots using for loop. The question is how can > I adjust the left hand side margin of the plot according to the > names.arg argument in barplot2. In every plot I have different > annotations in the y axis and they vary in length. Now when I have > fixed margins > > opar <- par(mar=c(3,15,0,2)... > > I get the same margins in all of the plots. That leaves lots of white > space in plots where the annotations are short. > > Here is the code I'm using: > > library(gplots) > opar <- par(mar=c(3,15,0,2), bg="white", cex=1, oma = c(0, 0, 2, 0), > mgp=c(3,0.5,0)) > for (i in names(spl)) { > .order <- order(spl[[i]]$x) > barplot2(spl[[i]]$x[.order], > names.arg=as.character(spl[[i]]$os[.order]), > horiz=TRUE, > las=1, > cex.names=0.7, > cex.main=0.9, > cex.axis=0.7, > xlim=c(0, max(spl[[i]]$x)+10), > col=as.character(spl[[i]][1,7]), > plot.grid = TRUE, > ) > box() > mtext(paste(paste(as.character(spl[[i]][1,2]), ":", sep=""), > "texthere", "(texthere)", as.character(spl[[i]][1,3])), outer=T, line > = 0.5, cex=1.1) > mtext("texthere", side=1, line=1.5, adj=0.5) > dev.copy(png, filename=paste(i, ".png", sep=""), height=400, > width=480) > dev.off() > } > > Thanks in advance > Lauri
Lauri, Without your actual data or a sample, it is difficult to give you a specific solution. However, a general approach would be to ascertain the longest label that you would be using for each plot and then adjust par("mar") accordingly WITHIN the loop before calling barplot2(). You can use the following to get the longest value in a vector: Vec <- c("Male", "Female") > Vec[which.max(nchar(Vec))] [1] "Female" Presumably in your case, you would replace 'Vec' with 'as.character(spl[[i]]$os[.order])' Once you know which value is the longest, you could also use strwidth() to get a sense for the amount of space the label would take and further fine tune par("mar"). This step may be optional depending your specific needs. See ?nchar, ?which.max and ?strwidth for more information. HTH, Marc Schwartz ______________________________________________ R-help@stat.math.ethz.ch 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.