2013-11-22 5 views
6

Sto provando a creare un grafico utilizzando facet_wrap con uno facet_grid all'interno di ciascuna delle faccette avvolte ma non riesco a. Eventuali suggerimenti?Utilizzo di facet_grid e facet_wrap Together

Per esempio, se sto facendo i confronti anno su anno per medie mensili di 2 quantità, vorrei avere -

  • 2 sfaccettature, uno per ogni quantità,
  • Ognuna delle i5 sfaccettature di quantità ha 12 sfaccettature all'interno di esso per ciascuno dei mesi
  • ogni mese aspetto ha due aspetti all'interno di esso per ogni dell'anno

il più vicino che posso venire è questo,

library(ggplot2) 

# create dataset 
df <- data.frame(
    Facet1 = rep(c(1,2,3),24), 
    Facet2 = c(rep(1,24),rep(2,24)), 
    Year = rep(c(rep(2012,12),rep(2013,12)),2), 
    Month = rep(rep(1:12,2),2), 
    ValueX = sample(0:5,144,replace = TRUE), 
    ValueY = sample(0:5,144,replace = TRUE) 
) 

df <- df[!(df$Facet1 == 2 & df$Facet2 == 2),] 

ggplot(df, aes(ValueX, ValueY)) + geom_point() + 
    facet_grid(Facet2 + Year ~ Month) 

enter image description here

Mentre, quello che vorrei idealmente come, è qualcosa sulla falsariga di questo (Nella mia mente, analogo a ggplot() ... + facet_grid(Year ~ Month) + facet_wrap(Facet2~.)) -

enter image description here

PS: Penso che le sfaccettature di quest'ultimo sono molto più distinguibili e più ordinate da attraversare. Commenti? Qualche alternativa?

+1

ggplot2 non supporta questa direttamente ma qualcuno con le fantastiche abilità della griglia potrebbe farlo. È anche possibile esportare il grafico e la stessa cosa in

+0

Quindi, "facet_grid' ti dà la trama che desideri, ma non sei soddisfatto delle distanze tra le faccette e con le strisce delle faccette sulla destra e vuoi cambiarle? – Roland

+0

@Roland - 'facet_grid (Year ~ Month) + facet_wrap (Facet2 ~.)' È quello che sto cercando di ottenere, quindi ci sono 2 facet per 'Facet2', e quindi ognuna di quelle sfaccettature viene suddivisa in 24 sfaccettature di 'AnnoMese'. L'attuale metodologia di "facet_grid" (Facet2 + Year ~ Month) "porta a termine ciò per quanto riguarda le eventuali 48 faccette, ma guardandomi, penso che la seconda immagine sia una faccetta più chiara della prima e consente una migliore leggibilità. – TheComeOnMan

risposta

0

Forse sto fraintendendo quello che stai cercando di fare, ma questo non raggiunge quello che vuoi?

ggplot(df, aes(ValueX, ValueY)) + geom_point() + 
    facet_grid(Facet2 ~ Facet1) 

Se si desidera modificare i titoli collaterali per abbinare il vostro esempio uno sguardo al labeller argomento facet_grid().

+0

Grazie ma no. Sto cercando di implementare più livelli di sfaccettatura, non modificare il livello di sfaccettatura stesso. – TheComeOnMan

+0

Se questo non raggiunge quello che vuoi, devi migliorare la tua domanda. Questo produce esattamente ciò che mostri nel tuo modello. – Roland

+0

Grazie mille per il tuo contributo ragazzi, ho modificato la domanda e mostrato qualcosa che ho hackerato insieme qualcosa che assomiglia a quello che sto cercando di ottenere.Mi dispiace se la domanda non è stata chiarita in precedenza, si spera che ora sia chiara. – TheComeOnMan

0

Non sono sicuro di capire che cosa si vuole fare, ma penso che sia più facile per ottenere ciò che si vuole utilizzare lattice` qui:

library(latticeExtra) 
xyplot(ValueY~ValueX|Facet1+Facet2,data=df, 
      between=list(x=2,y=0), 
    par.settings = ggplot2like(),axis=axis.grid) 

enter image description here

+0

Grazie mille per il tuo input @agstudy, ho modificato la domanda e mostrato qualcosa che ho hackerato insieme qualcosa che assomiglia a quello che sto cercando di ottenere. Non ho usato 'reticolo' prima quindi non ho potuto manipolare troppo il tuo suggerimento, ma ho provato a giocare con la parte' Facet1 + Facet2', che non mi ha permesso di andare da nessuna parte. – TheComeOnMan