Domanda

Ho una bella trama di densità facet_wrap che ho creato con ggplot2. Desidero per ogni pannello di avere assi x ed y etichette invece di avere solo le etichette dell'asse y lungo il lato sinistro e le etichette x lungo la parte inferiore. Quello che ho in questo momento si presenta così:

library(ggplot2)
myGroups <- sample(c("Mo", "Larry", "Curly"), 100, replace=T)
myValues <- rnorm(300)
df <- data.frame(myGroups, myValues)


p <- ggplot(df)  + 
  geom_density(aes(myValues), fill = alpha("#335785", .6)) + 
  facet_wrap(~ myGroups)
p

che restituisce:

alt text
(fonte: cerebralmastication.com )

Sembra che questo deve essere semplice, ma la mia Google Fu è stato troppo povero per trovare una risposta.

È stato utile?

Soluzione

È possibile farlo inserendo la bilancia = opzione "libera" nella chiamata facet_wrap:

myGroups <- sample(c("Mo", "Larry", "Curly"), 100, replace=T)
myValues <- rnorm(300)
df <- data.frame(myGroups, myValues)


p <- ggplot(df)  + 
  geom_density(aes(myValues), fill = alpha("#335785", .6)) + 
  facet_wrap(~ myGroups, scales="free")
p

entrare descrizione dell'immagine qui

Altri suggerimenti

Risposta breve: non è possibile farlo. Potrebbe avere senso con 3 grafici, ma cosa succede se si ha avuto un grande reticolo di 32 grafici? Che starebbe rumoroso e cattivo. La filosofia di GGplot tratta di fare la cosa giusta con un minimo di personalizzazione, il che significa, naturalmente, che non è possibile personalizzare le cose tanto quanto altri pacchetti.

Risposta lunga: Si potrebbe fingere con la costruzione di tre oggetti ggplot separati e la loro combinazione. Ma non è una soluzione molto generale. Ecco qualche codice dal libro di Hadley che presuppone che si sia creato ggplot oggetti a, b, c. Mette un nella riga superiore, con b e c nella fila inferiore.

grid.newpage()
pushViewport(viewport(layout=grid.layout(2,2)))
vplayout<-function(x,y)
    viewport(layout.pos.row=x,layout.pos.col=y)
print(a,vp=vplayout(1,1:2))
print(b,vp=vplayout(2,1))
print(c,vp=vplayout(2,2))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top