Sto provando a creare una versione migliore di un grafico di base R con ggplot2. Non solo per avere una leggenda comune, ma anche perché mi piacciono gli stili e la personalizzazione di ggplot2. I miei dati sono composti da 3 dataset separati che contengono gli stessi due gruppi di osservazioni per diversi (ma diversi) trattamenti. Quindi voglio generare 3 grafici separati in 1 grafico con una legenda comune, tuttavia con livelli di fattore diversi. Per illustrare il mio punto la prima immagine qui è quello che ho generato con base R finora: Rimuovi i fattori vuoti dal grafico a barre in cluster in ggplot2 con più facce
Ho provato a generare una trama ggplot2 con dati fittizi che ha esattamente la stessa struttura miei dati:
foo<-data.frame(c(letters,letters),c(rep('T1',26),rep('T2',26)),
runif(52),rep(c(rep('Ori1',12),rep('Ori2',8),rep('ori3',6)),2))
names(foo)<-c('Treatment','Type','Count','Origin')
a<-ggplot(foo,aes(x = factor(Treatment),y = Count))
a+ facet_grid(Origin~., scales="free_y", space="free") +
geom_bar(stat="identity",aes(fill=factor(foo$Type)),position="dodge")
+theme_bw()+theme(axis.text.x=element_text(angle=60,hjust=1))+coord_flip()
Che mi dà il seguente risultato indesiderato.
sono consapevole dei temi di overflow dello stack Removing Unused Factors from a Facet in ggplot2 e How can I remove empty factors from ggplot2 facets? tuttavia, non trattano con i grafici a barre in cluster cerco di realizzare qui e sento che sono il problema, ma non ora come risolverlo. Tutti i suggerimenti sono benvenuti
Credo che finché non viene risolto (è complicato), si è bloccati ad omettere 'coord_flip' e usando' facet_wrap (~ Origin, scale = "free_x") 'invece. – joran
@joran Grazie per il commento ma non risolve il problema ... il 'coord_flip' non contribuisce realmente al problema qui, e l'ho appena incluso perché mi piace che la trama sia formattata in questo modo. Il problema principale è come preservare il 'position =" dodge "' in tutte le sfaccettature. Forse dovrei chiarire che non voglio veramente _reprodurre_ il grafico base in quanto tale, voglio solo che l'essenza delle trame sia utilizzabile in uno stile ggplot2. –
Non penso che tu abbia effettivamente provato ciò che ho proposto. Il punto è che al momento 'coord_flip' non gioca sempre bene con' scale = "libero" '. Questo è un problema noto. – joran