2013-12-12 3 views
12

Я хочу добавить некоторые индексы и надписи к моим меткам графа. Я попробовал expression, но он не работает, как я хочу, с новыми строками (\n). Я пытаюсь исправить это, используя paste, но он не работает. Ниже приведены некоторые из моих попыток:Выражение и новая строка в метках графика

par(mfcol=c(1,3)) 
plot(1,1,main=expression("first line \n second line x"^2)) 
plot(1,1,main=expression(paste("first line \n second line", "x"^2))) 
plot(1,1,main=paste("first line \n second line", expression("x"^2))) 

Он производит:

enter image description here

В первых двух картинах вторая линия не очень хорошо сосредоточенными, в третьем верхний индекс не удается. Как получить как центрированную линию, так и индексы/верхние индексы?

+1

Дополнительно: http://stackoverflow.com/questions/15297814/ include-text-control-characters-in-plotmath-expressions? lq = 1 и http://stackoverflow.com/questions/13198170/combining-expression-with-n по одному и тому же вопросу. – plannapus

+1

Upvote: изображение сразу показывает вам, вы нашли правильный вопрос :) – BurninLeo

ответ

18

Вы можете ввести разрыв строки внутри выражения: (. Я использую bquoteexpression, а не здесь - как работа в этом случае)

bquote(atop("first line", 
      "second line" ~ x^2)) 

Execute demo(plotmath) для получения дополнительной информации и посмотреть в документации для atop.

boxplot, по-видимому, имеет некоторые проблемы с интерпретацией выражений в его названии. Простое исправление заключается в том, чтобы нанести заголовок отдельно:

boxplot(data, main = '') 
title(bquote(atop("first line", "second line" ~ x^2))) 
+1

Это странно: это решение хорошо работает с 'plot', но не работает с' boxplot'. У меня есть сообщение о том, что не было функции под названием 'atop'. –

+0

@ MartaCz-C Любопытный, вы правы. Однако исправление довольно простое - см. Обновленный ответ. –

7

Быстрое решение заключается в добавлении некоторых пробелов перед словом «первым».

Поскольку plotmath не поддерживает новые строки, вы можете использовать mtext для создания линии по одному, как это:

plot(1,1) 
exp <- 2 
Lines <- list(bquote("first line"),bquote("second line x"^2)) 
mtext(do.call(expression, Lines),side=3,line=1:0) 

enter image description here

+2

Я думаю, что видел это [где-то] (http://stackoverflow.com/a/15300449/1478381) до ...! (это по-прежнему отличный ответ) –

+0

@ SimonO101 спасибо и хороший улов :) – agstudy

Смежные вопросы