[R] How to plot a legend centered only on the x axis

Duncan Murdoch murdoch.duncan at gmail.com
Fri May 12 02:01:54 CEST 2017


On 11/05/2017 2:36 PM, Antonio Silva wrote:
> Hello r-users
>
> I want to plot some barplots inside a looping with the legend placed
> outside the plotting area.
>
> No matter the number of bars I want the legend to be placed centered on the
> x-axis.
>
> See the example below
>
> for(i in 1:10) {
> var_1 <- sample(1000:100000,sample(3:8,1))
> ymax <- max(var_1)
> b<-barplot(var_1,col="blue")
> var_2 <- sample(1000:ymax,length(var_1))
> lines(rowSums(b),var_2,type="o",col="red",pch=16)
> par(xpd=TRUE)
> legend(*1.1*
> ,ymax*-0.072,c("var_1","var_2"),horiz=T,cex=1.3,bty="n",pch=c(15,16),col=c("blue","red"),lty=c(0,1),lwd=c(0,2),pt.cex=2)
> readline(prompt="Press [enter] to continue")
> }
>
> What I should use as x position in legend(x,y, ...), instead of *1.1*, to
> have the legend centered on the x-axis?
>
> I would love to use something like legend(x="center",y=ymax*-0.072, ... but
> it did not worked.
>
> I appreciate any suggestions. Best regards.

Instead of "center", use "top" or "bottom".  See the 2nd last example in 
examples(legend) for the possibilities.

If you want the legend outside the plotting area, set "inset" and "xpd" 
arguments.  For example,

plot(1,1)
legend("top", pch = 1, legend = "point", inset = -0.1, xpd = TRUE)


Duncan Murdoch



More information about the R-help mailing list