2013-03-28 9 views
8

Ci scusiamo per la semplice domanda. Sono un programmatore, anche se raramente mi occupo di grafica, e dopo aver strappato i capelli per ore con questo problema, è ora di avere un po 'di aiuto. Sto creando un grafico a più riquadri usando ggplot, ma non riesco a trovare un modo per visualizzare le etichette delle figure, al di fuori della figura, quando si utilizza ggplot.Impossibile etichettare la figura a più riquadri r usando ggplot

Ecco quello che voglio il mio codice da fare:

par(mfrow = c(1, 2), pty = "s", las = 1, mgp = c(2, 0.4, 0), tcl = -0.3) 
qqnorm(rnorm(100), main = "") 
mtext("a", side = 3, line = 1, adj = 0, cex = 1.1) 
qqnorm(rnorm(100), main = "") 
mtext("b", side = 3, line = 1, adj = 0, cex = 1.1) 

Come dovrei ottenere quelle "a" e "b" etichette, nella posizione che sono in per la figura creata dal codice di cui sopra , in questo tipo di codice:

df = data.frame(gp = factor(rep(letters[1:3], each = 10)), y = rnorm(30)) 
p = ggplot(df) + geom_point(aes(x = gp, y = y)) 
p2 = ggplot(df) + geom_point(aes(x = y, y = gp)) 
grid.arrange(p, p2, ncol = 2) 

Grazie in anticipo per il vostro aiuto!

risposta

15

Si potrebbe utilizzare ggtitle e theme:

df = data.frame(gp = factor(rep(letters[1:3], each = 10)), y = rnorm(30)) 
p = ggplot(df) + geom_point(aes(x = gp, y = y)) + ggtitle('a') + theme(plot.title=element_text(hjust=0)) 
p2 = ggplot(df) + geom_point(aes(x = y, y = gp)) + ggtitle('b') + theme(plot.title=element_text(hjust=0)) 
grid.arrange(p, p2, ncol = 2) 

enter image description here

+0

Questo è migliore della mia idea di sfaccettatura. – joran

+0

Funziona perfettamente! Grazie per l'aiuto!! – user2221184

+0

@ user2221184 ottimo, nessun problema. ricorda di accettare la risposta facendo clic sul segno di spunta accanto ad essa. –

3

Due (meno di ideali) opzioni:

#Use faceting, similar to Matthew's ggtitle option 
df = data.frame(gp = factor(rep(letters[1:3], each = 10)), y = rnorm(30)) 
df$lab1 <- 'a' 
df$lab2 <- 'b' 
p = ggplot(df) + geom_point(aes(x = gp, y = y)) + facet_wrap(~lab1) 
p2 = ggplot(df) + geom_point(aes(x = y, y = gp)) + facet_wrap(~lab2) 
j <- theme(strip.text = element_text(hjust = 0.05)) 
grid.arrange(p + j, p2 + j, ncol = 2) 


#Use grid.text 
grid.text(letters[1:2],x = c(0.09,0.59),y = 0.99) 

Per l'opzione grid.text, se approfondire l'oggetto ggplot puoi probabilmente evitare di dover armeggiare per ottenere quei valori manualmente.

Problemi correlati