Как добавить надстрочный индекс к текстам на графике на R?

Мне нужно, чтобы это выглядело так:

R ^ 2 = некоторые значения

Я пробовал приведенный ниже код, но он не сработал, вместо этого он получился как «R (выражение (^ 2)) = некоторые значения»:

text (25, 200, paste ("R (expression (^2)) =", round (rsquarelm2, 2)))

person Meed    schedule 23.09.2013    source источник
comment
Я нашел это с помощью поиска в Google. Возможно, вы сможете его изменить: text(-pi/2, 0, expression(hat(alpha) == (X^t * X)^{-1} * X^t * y))   -  person Mark Miller    schedule 23.09.2013


Ответы (3)


Вам нужен не вектор символов, а выражение, поэтому это

expression(R^2 == 0.85)

это то, что вам нужно. В этом случае вы хотите заменить результат другой операции R. Для этого вам нужно substitute() или bquote(). Я считаю, что с последними легче работать:

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

С bquote() все, что находится в .( ), оценивается, и результат включается в возвращаемое выражение.

person Gavin Simpson    schedule 23.09.2013
comment
В моем случае мне нужно начинать строку с ^1 - надстрочного числа, что, похоже, не нравится bquote. Заинтересованы в любых предложениях (expression(""^1") is not a solution, since I want to put the content of text_in_var` и кажется, что последнее нелегко сделать с expression - и легко с bquote(.(text_in_var)). Есть предложения? - person JelenaČuklina; 10.11.2020

Функция paste возвращает строку, а не выражение. Я предпочитаю использовать bquote для таких случаев:

text(25, 200, bquote( R^2 == .(rs), list(rs=round(rsquarelm2,2))))
person Greg Snow    schedule 23.09.2013

Как включить форматирование и математические значения в графики: FAQ 7.13.

Например, если ahat является оценкой интересующего вас параметра a, используйте

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

(обратите внимание, что это ‘==’, а не ‘=’). Иногда bquote() дает более компактную форму, например, title(bquote(hat(a) = .(ahat)))

где подвыражения, заключенные в ‘.()’, заменяются своими значениями.

demo(plotmath) тоже полезно.


В этом случае вы можете использовать либо

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

or

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

(format здесь более уместен, чем round, поскольку вы хотите контролировать способ отображения значения, а не создавать приближение самого значения.)

person Richie Cotton    schedule 24.09.2013