2013-08-14 2 views
32

У меня есть следующая гистограмма в R:Разрыв строки в выражении()?

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

titlle слишком долго, так что я хочу разрыв строки. В соответствии с этим thread я попытался

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"))) 

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

ответ

26

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

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

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

Это иллюстрирует построение графика в графическом файле. По иронии судьбы, первое усилие дало мне дисплей, у которого была ваша проблема с «шляпой» (эти обводки?), Которая была отрезана, и это показывает, как увеличить поля. Верхняя граница, вероятно, третье число, так с (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() 
+0

спасибо за ваш ответ, есть только одна проблема: Дельта и бета большие по вертикали, поэтому шляпа выходит за пределы диапазона. То есть граница выше - это своего рода сокращение шляпы. Как я могу это изменить? Так что переместите заголовок немного? –

+1

Существует аргумент oma для 'par' :::' opar <- par (oma = c (3,3,3,3)) '.... делать свой заговор ...' par (opar) 'Создает дополнительная комната вокруг участка. –

+0

, когда я делаю opar <- par (oma = c (3,3,3,3)), а затем par (opar), а затем hist (...) ничего не изменит? –

17

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

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

+0

+1 для этого решения, спасибо! –

+1

@JenBohold спасибо, увы, я не могу взять кредит, я узнал об этом от agstudy! –

+1

Как я уже сказал ... есть более сложные решения. –

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