Ввод математических символов и нижних индексов, смешанных с обычными буквами

Я хочу построить метку, которая выглядит так в ggplot2:

Value is $\sigma$, R^{2} = 0.6, где Value is — обычный шрифт, $\sigma$ — греческая строчная буква сигма, а R^{2} = 0.6 отображается как R с надстрочным индексом 2, за которым следует знак равенства (=), за которым следует 0.6. Как это можно использовать в ggplot factors и в аргументах таких вещей, как xlab,ylab of R?


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


Ответы (2)


Что-то вроде этого :

g <- ggplot(data=data.frame(x=0,y=0))+geom_point(aes(x=x,y=y))
g+ xlab( expression(paste("Value is ", sigma,",", R^{2},'=0.6')))

ИЗМЕНИТЬ

Другой вариант — использовать annotate с parse=T:

g+ annotate('text', x = 0, y = 0, 
        label = "Value~is~sigma~R^{2}==0.6 ",parse = TRUE,size=20) 

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

ИЗМЕНИТЬ

Решение paste может быть полезным, если во время построения графика вычисляется константа 0,6.

r2.value <- 0.90
g+ xlab( expression(paste("Value is ", sigma,",", R^{2},'=',r2.value)))
person agstudy    schedule 28.02.2013
comment
Если вам нужна сигма, попробуйте использовать \u03c3 - person IRTFM; 28.02.2013
comment
Плохой Мак? Попробуйте с x=0.25, y=0.25. Удаляю свой ошибочный комментарий о том, что parse=TRUE не нужен. - person IRTFM; 28.02.2013
comment
@DWin хорошо. Я получаю такое же поведение с x=0.25, y=0.25. Но с parse =F я получаю сигму с этим σ, но также и с ~ - person agstudy; 28.02.2013
comment
Я узнал несколько вещей из диалога, и я думаю, что ваш ответ теперь более правильный, чем мой. - person IRTFM; 28.02.2013
comment
paste никогда не кажется мне хорошим вариантом для построения графиков; попробуйте вместо этого xlab( bquote(Value~is~sigma~R^{2}==.(r2.value))). - person baptiste; 01.07.2013
comment
Если кто-то этого не знает, Батист — настоящий заговорщик. Если вы хотите много узнать о системах построения графиков R, просто найдите его многочисленные ответы на SO и учитесь у мастера. - person IRTFM; 05.12.2014
comment
Я не уверен, должен ли я начать другой вопрос, но r2.value; ... у меня не сработало. Вместо 0,9 xlab показал re.value. Я делаю что-то неправильно? Использование bquote работает. Большое спасибо - person Ed Mendes; 20.05.2015
comment
@EdMendes в ответе была опечатка, должно было быть r2.value вместо re.value. - person Ken Williams; 21.01.2016
comment
Что вы имеете в виду под во время заговора? Я сделал это, но получил текст r2.value, но не его значение. - person breezeintopl; 22.04.2018

Несколько проще, чем paste(), может быть:

g <- ggplot(data=data.frame(x=0,y=0))+geom_point(aes(x=x,y=y))
 g + xlab( expression(Value~is~sigma~R^{2}==0.6))
 # ~ for spaces, and * for no-space between (unquoted) expressions

Как правило, paste и все эти парные кавычки не нужны, если вы используете правильные графические связки. Даже если вам нужен текст, который в противном случае создавал бы греческую букву, все, что вам нужно сделать, это заключить его в кавычки с * или ~ с каждой стороны. Одна проблема с предложением paste новичкам в математических выражениях состоит в том, что они думают, что это то же самое, что paste в остальной части языка.

person IRTFM    schedule 28.02.2013
comment
Я думаю, что аргумент «метки» для аннотации принимает символьный режим. Вы можете посмотреть, какое значение Unicode «сигма» может иметь в установленном вами шрифте без засечек. - person IRTFM; 28.02.2013
comment
Дополнительное примечание для пользователей решетки: это решение работает и для решетчатого графика. .т.е. xyplot(y~x,dat=data.frame(x=0,y=0),xlab=expression(Value~is~sigma~R^{2}==0.6)) - person agstudy; 28.02.2013