2013-08-14 20 views
32

Ho il seguente istogramma in R:Interruzione di riga in expression()?

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

Il titlle è troppo lungo, quindi voglio un'interruzione di linea. Secondo questo thread ho provato

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

o

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

Ma entrambi non lavoro, come posso ottenere un'interruzione di linea in pasta()?

risposta

26

Si può facilmente utilizzare interruzioni di riga in una regolare paste, ma questo è plotmath paste (in realtà una diversa funzione anche senza argomenti 'settembre') e la (lunga) ?plotmath pagina specificamente ti dice che non può essere fatto. Allora, qual è il modo di aggirare? Utilizzando la funzione plotmath atop è un'opzione semplice:

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

Questo si romperà alla virgola e centrare le espressioni plotmath. Sono disponibili opzioni più complicate.

Questo illustra il tracciamento su un file di grafica. Ironia della sorte, il primo sforzo mi ha dato un display che ha avuto il tuo problema con il 'cappello' (sono quei circonflittenti?) Tagliato fuori e questo mostra come aumentare i margini. Il margine superiore è probabilmente il terzo numero in modo c (3,3,8,0) potrebbe soddisfare meglio:

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

grazie per la risposta, c'è solo un problema rimasto: Il delta e la beta è grande in modo verticale, quindi il cappello è fuori portata. Cioè il bordo sopra è come tagliare il cappello. Come posso cambiare questo? Quindi sposta leggermente il titolo verso il basso? –

+1

C'è un argomento oma per 'par' :::' opar <- par (oma = c (3,3,3,3)) '.... fai il tuo plottaggio ...' par (opar) 'Crea stanza in più attorno alla trama. –

+0

quando eseguo opar <- par (oma = c (3,3,3,3)) e poi par (opar) e poi hist (...) non cambia nulla? –

17

Si sta andando ad avere bisogno di utilizzare qualcos'altro. Sono stato indirizzato a utilizzare mtext e bquote quando ero bloccato su un 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) 

Nell'esempio precedente, title (grazie a @hadley) possono essere semplificate per

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

enter image description here

+0

+1 per questa soluzione, grazie! –

+1

@JenBohold grazie, ahimè, non posso prendere il merito, l'ho imparato da agstudy! –

+1

Come ho detto ... ci sono soluzioni più complicate. –

Problemi correlati