2013-08-14 17 views
32

Mam następujący histogram w R:Podział linii w wyrażeniu()?

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

titlle jest zbyt długa, więc chcę podział wiersza. Zgodnie z tym thread Próbowałem

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

lub

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

Ale oba nie działają, w jaki sposób mogę się przełamać linii w paście()?

Odpowiedz

26

można łatwo używać podziałów wierszy w regularnych paste, ale to plotmath paste (faktycznie inna funkcja również bez „SEP” argumentu) i (długie) ?plotmath strona specjalnie mówi ci, że nie można zrobić. Więc jak wygląda obejście? Korzystanie z funkcji plotmath atop jest jedna prosta opcja:

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

To złamie się przecinkiem i centrum wyrażenia plotmath. Dostępne są bardziej skomplikowane opcje.

To ilustruje drukowanie pliku graficznego. Jak na ironię, pierwszy wysiłek dał mi pokaz, który miał twój problem z odcięciem "czapki" (czy to są okręgi?), A to pokazuje jak zwiększyć marginesy. Górny margines to prawdopodobnie trzecia liczba, więc c (3,3,8,0) może ci lepiej odpowiadać:

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

dzięki za odpowiedź, jest tylko jeden problem lewej: Delta i beta są duże w pionie, więc kapelusz jest poza zasięgiem. To znaczy. powyższa granica trochę przecina kapelusz. Jak mogę to zmienić? Więc przesunąć nieco tytuł? –

+1

Istnieje argument oma dla 'par' :::' opar <- par (oma = c (3,3,3,3)) '.... czy twoje wykreślanie ...' par (opar) 'Tworzy dodatkowy pokój wokół działki. –

+0

kiedy robię opar <- par (oma = c (3,3,3,3)), a następnie par (opar), a następnie hist (...) nic nie zmienia? –

17

Będziesz musiał użyć czegoś innego. Zostałem skierowany do użycia mtext i bquote, kiedy utknąłem na 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) 

W powyższym przykładzie, title (dzięki @hadley) można uprościć do

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

enter image description here

+0

+1 za to rozwiązanie, dzięki! –

+1

@JenBohold dziękuję, niestety, nie mogę wziąć kredytu, nauczyłem się tego od agstudy! –

+1

Jak już powiedziałem ... są bardziej skomplikowane rozwiązania. –