2013-06-25 2 views
8

Я хотел бы знать, как получить 9 групповых диаграмм (3x3) togheter.ggplot несколько групп для группировки

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

В 9 участков должны быть Groupes по «Тип» А к И.

Затем каждый сгруппированных бар участок должен иметь частоту на оси у, ось х сгруппированных по 1 pce до 6 pce и subdiveded к году.

У меня есть следующий пример в Excel (cf. image) и хотел бы создать тот же результат на r с ggplot. Является ли это возможным?

Благодаря

enter image description here

ответ

22

Во-первых, изменить свои данные от широкоугольного до длинного формата.

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

Далее, как при импорте данных письмо X добавляется к именам переменных, начиная с номером, удалить его с substring().

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

Теперь используйте variable как х, value как у, Annee для заполнения и geom_bar() получить barplot. С помощью facet_wrap() вы можете разделить данные на 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

Привет спасибо впечатляет, но на моей стороне, я получаю сообщение об ошибке, говорящее об ошибке в layout_base (data, vars, drop = drop): По крайней мере, один слой должен содержать все переменные, используемые для фасетки – S12000

+0

@ Swiss12000 Вы используете код точно так же, как и мой код? Если нет, добавьте код, который вы используете в своем вопросе. –

+0

действительно мне нужна ошибка, прекрасно работающая благодаря вашей помощи. У меня есть Cookbook R Graphics, чтобы узнать ggplot, но они не упоминают, как сделать более сложный график. Вы изучали ggplot каждый день или читали передовые книги? – S12000

10

Использование @Didzis видоизмененных данных, здесь вариант решетки:

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