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

Как да използвам променливи в Latex изрази в 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)


Хакването на Owen е доста готино, но всъщност не е обичайният начин за това. Ако използвате 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's : оператор, докато вие просто искате да залепите малко текст в края. Може би има по-добър начин?

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