This is a following up question of this question: How to have a new line in a `bquote` expression used with `text`?
But now I have it in a legend and this seems to change the things.
I tried the following:
test<-c(10:1)
dummy1<-0.004323423
dummy2<-0.054
dummy3<-0.032
plot(test,c(1:10))
legend("topright",
legend=c(bquote(Qua_0,99^normal == .(round(dummy1,4))),bquote(Qua_0,95^normal == .(round(dummy2,4))),bquote(Qua_0,99^t == .(round(dummy3,4)))),
bty = "n",lwd=2, cex=1, col=c("red","black","darkgreen"), lty=c(1,3,5))
So, I want to have
The expression correct, so that the index 0,95 is correctly written and also the power ^ correclty
linebreak after the equal sign
colored text, the same as the lign, so the first would be in red
I tried to implement the answers of the already existing posts but I did not figured it out, atop is also not working.
First create a vector of 3 expressions, and use substitute
to create the appropriate dummy values. Note that I am using as.expression
so that they are not immediately evaluated, and the use of atop
for the line break. Then use that vector when calling legend
:
v <- c(
as.expression(substitute(atop(Qua[0.99]^normal == "", dummy), list(dummy=round(dummy1,4)))),
as.expression(substitute(atop(Qua[0.95]^normal == "", dummy), list(dummy=round(dummy2,4)))),
as.expression(substitute(atop(Qua[0.99]^t == "", dummy), list(dummy=round(dummy3,4))))
)
cols <- c("red","black","darkgreen")
legend("topright", legend=v, bty = "n",lwd=2, cex=1, col=cols, text.col=cols, lty=c(1,3,5))
The color of the text is set with text.col
.
If you want to stick to the use of bquote
rather than substitute
:
v <- c(
as.expression(bquote(atop(Qua[0.99]^normal == "", .(round(dummy1,4))))),
as.expression(bquote(atop(Qua[0.95]^normal == "", .(round(dummy2,4))))),
as.expression(bquote(atop(Qua[0.99]^t == "", .(round(dummy3,4)))))
)
To make the normal and 0.99 bold, you can use bold
in the expression:
v <- c(
as.expression(substitute(atop(Qua[bold(0.99)]^bold(normal) == "", dummy), list(dummy=round(dummy1,4)))),
as.expression(substitute(atop(Qua[bold(0.95)]^bold(normal) == "", dummy), list(dummy=round(dummy2,4)))),
as.expression(substitute(atop(Qua[bold(0.99)]^bold(t) == "", dummy), list(dummy=round(dummy3,4))))
)
But the 0.99 will not be very bold actually:
You can try with text in normal size using textstyle
:
v <- c(
as.expression(substitute(atop(Qua[textstyle(0.99)]^textstyle(normal) == "", dummy), list(dummy=round(dummy1,4)))),
as.expression(substitute(atop(Qua[textstyle(0.95)]^textstyle(normal) == "", dummy), list(dummy=round(dummy2,4)))),
as.expression(substitute(atop(Qua[textstyle(0.99)]^textstyle(t) == "", dummy), list(dummy=round(dummy3,4))))
)
and get this: