2013-06-25 6 views
8

Chciałbym wiedzieć, jak uzyskać 9 grupowania wykres słupkowy (3x3) togheter.ggplot wielokrotny pasek grupowania

plików CSV: data <- read.csv("http://pastebin.com/raw.php?i=6pArn8GL", sep = ";")

W 9 poletka być Groupes według „Typ” A do I.

Następnie każdy pasek zgrupowane wykres powinien częstotliwości na osi y, oś x jest pogrupowane 1 szt. Do 6 szt. I subdivedowane przez rok.

Mam następujący przykład w programie Excel (patrz zdjęcie) i chciałbym utworzyć ten sam wynik na r z ggplot. Czy to możliwe?

Dzięki

enter image description here

Odpowiedz

22

pierwsze, przekształcenia danych z szerokim i długim formacie.

library(reshape2) 
df.long<-melt(df,id.vars=c("ID","Type","Annee")) 

Następnie, jak podczas importowania list danych X jest dodawany do nazw zmiennych zaczynające się od numeru, należy go usunąć z substring().

df.long$variable<-substring(df.long$variable,2) 

Teraz użyj variable jako X, Y, value jako Annee do wypełnienia i geom_bar() dostać barplot. Dzięki facet_wrap() możesz podzielić dane według Type.

ggplot(df.long,aes(variable,value,fill=as.factor(Annee)))+ 
    geom_bar(position="dodge",stat="identity")+ 
    facet_wrap(~Type,nrow=3) 

enter image description here

+1

Witam dzięki jest imponująca, ale na mojej stronie pojawia się komunikat o błędzie Błąd w layout_base (dane, vars, drop = drop): Przynajmniej jedna warstwa musi zawierać wszystkie zmienne używane do fasetowania – S12000

+0

@ Swiss12000 Czy używasz kodu dokładnie tak samo jak mój kod? Jeśli nie, dodaj kod, którego używasz w pytaniu. –

+0

Naprawdę potrzebuję pomyłki, która doskonale działa dzięki za pomoc. Mam książkę kucharską R Graphics, aby nauczyć się ggplot, ale nie wspominają, jak zrobić bardziej złożony wykres. Czy nauczyłeś się codziennie czegoś w stylu ggplot czy czytasz zaawansowane książki? – S12000

10

Korzystanie @Didzis przekształcone dane, tu wersja kraty:

barchart(value~variable|Type, 
     groups=Annee,data=df.long,layout=c(3,3), 
     between=list(3,3), 
     axis=axis.grid, 
     auto.key=TRUE) 

enter image description here