trouble positioning legends on barplot written to a file
Hi
It is possible to draw the legend outside the plot, but it is
inconvenient because the location is specified in terms of the scales on
the x- and y-axes. Positioning therefore becomes a matter of trial and
error. In the example below, I create space for the legend using
par(oma) [again the size of the margin is a matter of guess work] and
make sure that the legend is not clipped out of existence by specifying
par(xpd=NA) ...
# generate some dummy data that sums to 100 in each col
data(VADeaths)
temp <- function(x) {
sample(seq(10, 30, 5))
}
dummy <- apply(VADeaths, 2, temp)
# Plotting ...
par(oma=c(0, 0, 5, 0), xpd=NA)
colours <- 1:5
barplot(dummy, col=colours)
legend(par("usr")[1], 110,
row.names(VADeaths), fill=colours,
yjust=0, horiz=TRUE)
You might have other colours you would prefer to use :)
Hope that helps.
Paul
Tom Arnold wrote:
I'm trying to generate some plots for print publication and I'm having trouble getting them the way I want. I get a plot with a legend that overlaps the bars and looks bad. Also, I'm saving this as PDF file (whatever happened to the "png" function to save as PNG format, in r 1.4.1?) I've tried a number of things, which produce a number of questions. 1) it seems that the "legend" for a plot must be within the plot area. Is there a way to put the legend above, below, or to the side of the plot? The particular data I have fill up the plotting area (stacked bar charts, going to 100% in each bar) 2) I've tried using "locator()" to position the legend. This only works, so far, if I am not using trying to divert output to another device -- like creating a PDF via pdf(); barplot(resultmat); dev.off(); so if I take out the pdf() and the dev.off() and just do this: barplot(resultmat); legend(locator(1),legend=l,fill=colors); it works, on the graphics display device window on screen. However, if I do this: pdf(onefile=FALSE); barplot(resultmat); legend(locator(1),legend=l,fill=colors); dev.off(); I get:
Error in legend(locator(1),legend = l : missing y
Also it doesn't let me specify a point. I suppose that's not so surprising, because it is drawing to a non-interactive graphics device (the PDF "device" is non-interactive, right?), but the error message is confusing. So, is there any way to specify the location with locator() AND to save that plot to a file? And if I don't use "locator' then I have to specify the legend location to "legend(x,y, legend) but the documentation doesn't say what coordinate system that's supposed to be in. TIA. Tom Arnold -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
Dr Paul Murrell Department of Statistics The University of Auckland Private Bag 92019 Auckland New Zealand 64 9 3737599 x5392 paul at stat.auckland.ac.nz -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._