Search code examples
rplot

Box and line in R plot Legend


I've done a plot, and have one small problem which drive me crazy with the legend part

I can't find a way to center the box in the legend.

x = seq(-4,4,length=200)
y = dnorm(x,mean=0.816783035,sd=0.862916258)
plot(x,y,type="l",lwd=2,col="red" , xlim=c(-4, 4) ,  ylab="probabilitiy", xlab="")

 
# Shaded Area TBR!
c = -0.211653725

 
x = seq(-4,4,length=200)
y = dnorm(x,mean=-0.393475584,sd=0.895660247)
lines(x,y,type="l",lwd=2,col="blue")

 
legend("topright", legend = c('TBR', 'TBF', 'Criterion', 'Hit'), 
               bty = "n",
               col = c("green", "blue", "red",NA),
               lty = c(1,1,1,NA),
               density=c(0,0,0,10),
               fill = c("green", "blue", "red","red"),
               border = c(NA,NA,NA,"red"),
               )
abline(v= c)
 
x1 = seq(c,4, length = 200)
y1 = dnorm(x1,mean=0.816783035,sd=0.862916258)
 
polygon(c(c,x1) ,c(0, y1),density= 3, col="red")

enter image description here


Solution

  • It's the "x.intersp" parameter you will need to play with I think. Try:

    x=seq(-4,4,length=200)
    y=dnorm(x,mean=0.816783035,sd=0.862916258)
    plot(x,y,type="l",lwd=2,col="red" , xlim=c(-4, 4) ,  ylab="probabilitiy", xlab="")
    
    
    # Shaded Area TBR!
    c = -0.211653725
    
    
    x = seq(-4,4,length=200)
    y = dnorm(x,mean=-0.393475584,sd=0.895660247)
    lines(x,y,type="l",lwd=2,col="blue")
    
    
    legend("topright", legend = c('TBR', 'TBF', 'Criterion', 'Hit'), 
                   bty = "n",
                   col = c("green", "blue", "red",NA),
                   lty = c(1,1,1,NA),
                   density=c(0,0,0,10),
                   fill = c("green", "blue", "red","red"),
                   border = c(NA,NA,NA,"red"), 
                   x.intersp=c(2,2,2,0.5)
                   )
    abline(v= c)
    
    x1 = seq(c,4, length = 200)
    y1 = dnorm(x1,mean=0.816783035,sd=0.862916258)
    
    polygon(c(c,x1) ,c(0, y1),density= 3, col="red")
    

    enter image description here

    Does that do what you want?