Объедините строки и выражения в заголовок сюжета

Как комбинировать текст и математические выражения в заголовке сюжета. Если я использую вставку, выражение преобразуется в символ. Например, я хочу что-то вроде этого в качестве заголовка

Кривая $ ARL_1 $ для $ S ^ 2 $

Спасибо


person Brani    schedule 29.11.2010    source источник


Ответы (3)


Вы хотите прочитать ?plotmath, чтобы узнать, как делать подобные вещи. Вот пример:

plot(1:10, main = expression(ARL[1] ~ "curve for" ~ S^2))

[.] - это нижний индекс, а ^ - верхний индекс. ~ разделяет части выражения, как если бы там были буквальные пробелы.

Изменить: обычно я бы сделал:

plot(1:10, main = expression(ARL[1] ~ curve ~ for ~ S^2))

но это вызывает ошибку, потому что for интерпретируется как начало вызова цикла for().

person Gavin Simpson    schedule 29.11.2010
comment
Второй будет работать, если вы используете expression(ARL[1] ~ curve ~ "for" ~ S^2). - person Marek; 29.11.2010
comment
@Marek: Да, согласен. Но если вы собираетесь делать "for", вы также можете сделать "curve for", если только ~ и не занимают другое количество места ...? - person Gavin Simpson; 29.11.2010
comment
Конечно. Это имеет значение в более сложных случаях, когда нужно смешать больше струн. Я добавляю это для полноты;) С другой стороны, вы также можете использовать обратные тики `. - person Marek; 29.11.2010

Вы также можете использовать bquote(paste(...)), что немного более гибко, чем expression: вы можете включать значения переменных (скажем, значение x) в метки с .(x). Например:

x<- 232323
plot(1:10, main = bquote(paste(ARL[1], " curve for ", S^2, "; x=",.(x))))
person fabians    schedule 29.11.2010
comment
Да, хотя я обычно считаю, что использование функции вставки plotmath больше сбивает с толку, чем помогает. Попробуйте ›x‹ - 232323 ›plot (1:10, main = bquote (ARL [1] ~ curve for ~ S ^ 2 ~; ~ x ==. (X))) - person IRTFM; 29.11.2010
comment
+1 Двин - введение paste - это головная боль, но если вы положите свой , или "" не в те места ... - person Gavin Simpson; 29.11.2010
comment
@GavinSimpson Да, ваш ответ лучше. Но я подумал, что было бы хорошо указать на более гибкое решение на случай, если кто-то придет сюда в поисках более общего решения. - person fabians; 29.11.2010
comment
+1 от меня. Этот комментарий не был критикой сути вашего ответа (bquote()), а просто касался добавления пасты, если вы можете этого избежать. bquote() используется недостаточно и очень мощно! - person Gavin Simpson; 29.11.2010
comment
.. еще 1+ от меня. Я подумал, что bquote был отличным предложением, и добавил лишь очень незначительное отклонение, чтобы избежать вставки, когда это возможно, потому что ее часто путают с другой пастой. Люди не понимают, что это другая функция с другой сематикой и без аргумента sep. - person IRTFM; 30.11.2010

Вы также можете использовать latex2exp::TeX для автоматического преобразования TeX в выражения:

plot(cars, main = TeX("$ARL_1$ curve for $S^2$"))
person loki    schedule 02.02.2018