Подтвердить что ты не робот

Разрыв строки в выражении()?

У меня есть следующая гистограмма в R:

hist(alpha,cex.main=2,cex.axis=1.2,cex.lab=1.2,
main=expression(paste("Histogram of ",hat(mu), ", Bootstrap samples, Allianz")))

Титлл слишком длинный, поэтому я хочу разбить строку. В соответствии с этой нитью я пробовал

hist(alpha,cex.main=2,cex.axis=1.2,cex.lab=1.2,
main=expression(paste("Histogram of ",hat(mu), ",cat("\n") Bootstrap samples, Allianz")))

или

hist(alpha,cex.main=2,cex.axis=1.2,cex.lab=1.2,
main=expression(paste("Histogram of ",hat(mu), cat("\n"),", Bootstrap samples, Allianz")))

Но оба не работают, как я могу получить разрыв строки в paste()?

4b9b3361

Ответ 1

Вы можете легко использовать разрывы строк в регулярном paste, но это plotmath paste (фактически другая функция также без аргумента "sep" ), а страница (long) ?plotmath специально сообщает вам, что она не может быть сделанный. Итак, что такое обход? Использование функции plotmath atop является одной простой опцией:

expression(atop("Histogram of "*hat(mu), Bootstrap~samples*','~Allianz))

Это сломается в запятой и центрирует выражения plotmath. Доступны более сложные варианты.

Это иллюстрирует построение графика в графическом файле. По иронии судьбы, первое усилие дало мне дисплей, у которого была ваша проблема с "шляпой" (эти обводки?), Которая была отрезана, и это показывает, как увеличить поля. Верхнее поле, вероятно, является третьим номером, поэтому c (3,3,8,0) может подойти вам лучше:

 pdf("test.pdf") ;  par(mar=c(10,10,10,10))
 hist(1:10,cex.main=2,cex.axis=1.2,cex.lab=1.2,
 main=expression(atop("Histogram of "*hat(mu), 
                       Bootstrap~samples * ',' ~Allianz)))
 dev.off() # don't need to restore;  this 'par' only applies to pdf()

Ответ 2

Вам нужно будет использовать что-то еще. Мне было предложено использовать mtext и bquote, когда я застрял в подобной проблеме.

alpha = rnorm(1e3)
hist(alpha,cex.main=2,cex.axis=1.2,cex.lab=1.2,main=NULL )

title <- list( bquote( paste( "Histogram of " , hat(mu) ) ) ,
               bquote( paste( "Bootstrap samples, Allianz" ) ) )


mtext(do.call(expression, title ),side=3, line = c(1,-1) , cex = 2 )

В приведенном выше примере title (благодаря @hadley) можно упростить до

title <- as.list(expression(paste("Histogram of " , hat(mu)), "Bootstrap samples, Allianz"))

enter image description here