Search code examples
rplotmetafile

Change spacing between legend border and legend title


I am attempting to save a plot as a metafile (*.emf) using RStudio. The formatting of the plot looks okay in the *.emf file except that there is no gap between the top border of the legend and the legend title. How can I add such a gap? I am using base R.

Here is the code. I cannot upload an *.emf file to Stack Overflow.

cov       <- 1:20

B0.1      <-  0.2
B1.1      <-  0.2
B0.2      <- -0.2
B1.2      <-  0.1
B0.3      <- -0.6
B1.3      <- -0.02

y.1 <- exp(B0.1 + B1.1 * cov) / (1 + exp(B0.1 + B1.1 * cov))
y.2 <- exp(B0.2 + B1.2 * cov) / (1 + exp(B0.2 + B1.2 * cov))
y.3 <- exp(B0.3 + B1.3 * cov) / (1 + exp(B0.3 + B1.3 * cov))

par(mfrow=c(1,1), pty="s")

plot(cov, y.1, bty = "l", type = 'l', col = 'black', lwd = 2, lty = 1, 
     xlab = 'Cov', ylab = 'Probability', ylim=c(0,1))

     lines(cov, y.2, type = 'l', col = 'black', lwd = 2, lty = 2)
     lines(cov, y.3, type = 'l', col = 'black', lwd = 2, lty = 3)

     abline(v = 10, lwd = 2, lty = 6)

     title('My Plot')

     op <- par(cex = .67)

     legend("bottomright",          c('Prob 1', 'Prob 2', 'Prob 3'), 
                              col = c("black", "black", "black"), 
                              lty = c(1, 2, 3),
                              lwd = c(2, 2, 2),

                              y.intersp = c(1.5, 1.5, 1.5),

                              title = "Legend", cex = 1.00, text.width = 2.50)

Solution

  • Print the border of the legend afterwards with your own positions:

    First a legend without a border (set bty to "n" ), save the positions in "a":

    a <- legend("bottomright",c('Prob 1', 'Prob 2', 'Prob 3'), 
           col = c("black", "black", "black"), 
           lty = c(1, 2, 3),bty="n",
           lwd = c(2, 2, 2),
           y.intersp = c(1.5, 1.5, 1.5),
           title = "Legend", cex = 1.00, text.width = 2.50)
    

    Define your own positions of the rectangle:

    rect(a$rect$left, a$rect$top-a$rect$h[1], a$rect$left+a$rect$w, a$rect$h[1])