[R] Automatically placing a legend in an area with the most white space...

Jim Lemon jim at bitwrit.com.au
Sun Jun 28 11:04:35 CEST 2009


Jason Rupert wrote:
> At one point I believe I heard of an R package that would automatically find the most empty space in a plot, and then that answer could then be used to intelligently place a legend.  
>
> I would like to try to apply that R package to the contrived example shown below, so thank you for any hints or tips that can be provided.   
>
> x = seq(0, 1000, by = 1)
> y1_vals<-rnorm(1000, mean = 0, sd = 50)
> y2_vals<-rnorm(1000, mean = 25, sd = 40)
> y3_vals<-rnorm(1000, mean = 115, sd = 40)
>
> plot(x_vals, y1_vals, pch=22, col="dark red", bg = "dark red", cex =0.3)
> points(x_vals, y2_vals, pch=22, col="dark blue", bg = "dark blue", cex =0.3)
> points(x_vals, y3_vals, pch=22, col="dark green", bg = "dark green", cex =0.3)
>
> abline(h=0, col="dark red", lwd=1.5, lty=6)
> abline(h=25, col="dark blue", lwd=1.5, lty=6)
> abline(h=115, col="dark green", lwd=1.5, lty=6)
>
> legend("topright", c("Best Guess 1" , "Best Guess 2", "Best Guess 3"), bg="white", lwd = 2, title = "Randomness:")
>
>   
Hi Jason,
The good news is that the emptyspace function found the largest empty 
space in the plot. The bad news is that there was not nearly enough 
space to fit the legend:

legend(emptyspace(rep(x_vals,3),c(y1_vals,y2_vals,y3_vals)),
  c("Best Guess 1" , "Best Guess 2", "Best Guess 3"),xjust=0.5,yjust=0.5,
 lty=1,col=c(2,4,3))

Note that I had to change the name of the first vector to "x_vals" to 
get the plot to work.

Jim




More information about the R-help mailing list