multiple bquote items in legend of an R plot

后端 未结 2 786

Following works, (copy & paste into R)

a=123
plot(1,1)
legend(\'bottomleft\',legend=bquote(theta == .(a)))

I want to have multiple item

相关标签:
2条回答
  • 2021-01-04 11:29

    In this case, plotmath is not able to coerce the list of calls to expressions.

    > cs <- c(bquote(theta == .(a)),bquote(theta == .(a)))
    > cs
    [[1]]
    theta == 123
    
    [[2]]
    theta == 123
    
    > sapply(cs, class)
    [1] "call" "call"
    

    You can make this work if you coerce to expressions yourself:

    > c(as.expression(bquote(theta == .(a))), as.expression(bquote(theta == .(a))))
    expression(theta == 123, theta == 123)
    > plot(1,1)
    > legend('bottomleft',legend= c(as.expression(bquote(theta == .(a))), 
    +                               as.expression(bquote(theta == .(a)))))
    

    Another way is to coerce the original list of calls to expressions using sapply:

    plot(1,1)
    legend("bottomleft", 
           sapply(c(bquote(theta == .(a)), bquote(theta == .(a))), as.expression))
    
    0 讨论(0)
  • 2021-01-04 11:44

    To coerce the original list of calls to expressions it is not necessary to use sapply(). It suffices to use as.expression() only for one of the components within the c() construct:

    plot(1,1)
    legend("bottomleft", 
           c(as.expression(bquote(theta == .(a))), bquote(theta == .(a))))
    

    c() will then automatically coerce the whole list, to the expression class.

    0 讨论(0)
提交回复
热议问题