Нанесение греческих букв и обычного текста на графики ggplot2 через Rpy2

Как я могу сделать метку x или y, например "$\alpha$ + $\beta$ is my label", на графике ggplot2 в Rpy2? Я пытался получить любую греческую букву на графике, используя r.expression:

p = ggplot2.ggplot(mydata) + r.xlab(r.expression("alpha")) 

но это не работает. Как греческие буквы могут отображаться рядом с обычным текстом?


person Community    schedule 25.04.2013    source источник


Ответы (1)


expression() R принимает объекты, вызовы или выражения и возвращает выражение (это способ манипулировать невычисленным кодом). expression("alpha") возвращает строку "alpha" (как это было бы при записи в R expression("alpha").

Один из способов получить выражение — разобрать строку. Используя ваш пример в вопросе, который будет:

from rpy2.rinterface import parse
p = ggplot2.ggplot(mydata) + scale_x_continuous(parse("alpha")) 

Если вы хотите смешать выражения (это синтаксически допустимый код R) с общим текстом (что-то, что не может быть проанализировано как код, скажем, с использованием пробелов и знаков препинания), вам придется использовать R paste() в коде для разбора (это может показаться эзотерическим, но так же нужно делать это и в R):

p = ggplot2.ggplot(mydata) + \
    ggplot2.scale_x_continuous(parse('paste(alpha, " and ", beta)'))
person lgautier    schedule 25.04.2013
comment
спасибо - но как тогда совместить это с не проанализированным текстом? Если я попытаюсь scale_x_continuous(parse("alpha") + " and " + parse("beta")), я получу сообщение об ошибке, что я смешиваю типы: TypeError: unsupported operand type(s) for +: 'rpy2.rinterface.SexpVector' and 'str' - person ; 26.04.2013
comment
@ user248237dfsf - я отредактировал ответ, чтобы охватить эту ситуацию. - person lgautier; 27.04.2013