How do I include a superscript to texts on a plot on R?

后端 未结 3 479
再見小時候
再見小時候 2020-12-17 16:33

I need it to look like this:

R^2 = some values

And I\'ve tried the code below but it wouldn\'t work, it came out as \"R (expression (^2)) = some values\" i

相关标签:
3条回答
  • 2020-12-17 16:48

    You don't want a character vector, but an expression, hence this

    expression(R^2 == 0.85)
    

    is what you need. In this case, you want to substitute in the result of another R operation. For that you want substitute() or bquote(). I find the latter easier to work with:

    rsquarelm2 <- 0.855463
    plot(1:10, 1:10, type = "n")
    text(5, 5, bquote(R^2 == .(round(rsquarelm2, 2))))
    

    With bquote(), anything in .( ) is evaluated and the result is included in the expression returned.

    0 讨论(0)
  • 2020-12-17 16:50

    How to include formatting and mathematical values in plots is FAQ 7.13.

    For example, if ahat is an estimator of your parameter a of interest, use

    title(substitute(hat(a) == ahat, list(ahat = ahat)))

    (note that it is ‘==’ and not ‘=’). Sometimes bquote() gives a more compact form, e.g., title(bquote(hat(a) = .(ahat)))

    where subexpressions enclosed in ‘.()’ are replaced by their values.

    demo(plotmath) is also useful.


    In this case, you can use either

    title(substitute(R^2 = rsq, list(rsq = format(rsquarelm2, digits = 2))))
    

    or

    title(bquote(R^2 == .(format(rsquarelm2, digits = 2))))
    

    (format is more appropriate here than round, since you want to control how the value is displayed rather than creating an approximation of the value itself.)

    0 讨论(0)
  • 2020-12-17 16:56

    The paste function returns a string, not an expression. I prefer to use bquote for cases like this:

    text(25, 200, bquote( R^2 == .(rs), list(rs=round(rsquarelm2,2))))
    
    0 讨论(0)
提交回复
热议问题