Search code examples
rplotmath

r bquote: remove the space before approximately equal plotmath symbol


This is almost what I want as a plot heading:

plot(1:10)
ylabs<-c("All","Native","Exotic")
i=1
mtext(bquote("("*.(letters[i])*")"~.(ylabs[i])~"("%~~%italic("H'")*")"),side=3)

But I don't want the space after "(" and before the approx. equal sign. Adding the * separator before the symbol gives an error

mtext(bquote("("*.(letters[i])*")"~.(ylabs[i])~"("*%~~%italic("H'")*")"),side=3)

Error: unexpected SPECIAL in

even though the * separator works in other parts of bquote. I can get the right spacing by including the approx. equal symbol directly

mtext(bquote("("*.(letters[i])*")"~.(ylabs[i])~"("*"≈"~italic("H'")*")"),side=3)

but I would like to know if there's a way to get * to work before the plotmath symbol?

I tried this with expression instead of bquote, but couldn't get it to combine the characters with the indexed objects.


Solution

  • The trick is to put the entire text into a subscript:

    plot(1:10)
    ylabs<-c("All","Native","Exotic")
    i=1
    b <- bquote(phantom(0)["("*.(letters[i])*")"~.(ylabs[i])~"(" %~~%italic("H'")*")"])
    mtext(b, cex = 2, side=3) 
    

    screenshot