Латекс и переменные в метке графика в R?

Как использовать переменные в латексных выражениях в R?

Например:

plot(X, Y, main=expression(R^2))

В качестве основного заголовка поставлю R с красивым надстрочным индексом 2.

Но скажем, я хочу, чтобы он сказал «R ^ 2: 0,5», где 0,5 поступает из переменной R. Как мне это сделать?


person c00kiemonster    schedule 28.07.2011    source источник


Ответы (4)


Хакерство Оуэна - это круто, но это не самый распространенный способ сделать это. Если вы используете bquote, это на самом деле довольно просто. bquote будет делать то же самое, что и quote, за исключением того, что все, что находится между .(), будет оцениваться в указанной среде (или глобальной, если ничего не указано).

Банальный пример:

X <- 1:10
Y <- 1:10
a <- 0.8
plot(X,Y,main=bquote(R^2 : .(a)))

Дает:

введите описание изображения здесь

См. Также ?bquote и ?plotmath для получения дополнительных примеров и возможностей.

person Joris Meys    schedule 28.07.2011
comment
Хороший! Я часто хотел что-то вроде bquote (), но никогда не знал, что это существует. - person Owen; 28.07.2011
comment
Ага, это сработало просто здорово. Как ни странно, смешивать латексные и r-переменные так сложно. - person c00kiemonster; 28.07.2011
comment
@ c00kiemonster R никогда не задумывался как процессор LaTeX. Функциональность plotmath в R должна работать в рамках синтаксиса R и соглашений синтаксического анализатора. Когда вы к этому привыкнете, это будет намного проще, чем кажется. - person Gavin Simpson; 28.07.2011

Что ж, это работает ...

call(':', quote(R^2), a)

хотя мне это кажется немного взломанным, так как он использует оператор R :, тогда как вы просто хотите вставить какой-то текст в конец. Может есть способ получше?

person Owen    schedule 28.07.2011

tikz и psfrag позволяют использовать фактический код и вывод LaTeX вместо plotmath, что приводит к лучшей типографской согласованности.

Подробнее см. В этом вопросе. Включение LaTeX в графики R

person Aaron left Stack Overflow    schedule 28.07.2011

Другой вариант темы @Joris - substitute(). Вы даете substitute() выражение и среду или список, в котором нужно оценить выражение. Передать список обычно проще всего, особенно для таких работ, как та, что изложена здесь.

plot(X,Y, main = substitute(R^2 : a, list(a = a)))

Мы можем понять, почему это работает, просто взглянув на вызов substitute():

> substitute(R^2 : a, list(a = a))
R^2:0.8

a в выражении заменяется значением a в списке.

person Gavin Simpson    schedule 28.07.2011