2013-03-01 22 views
8

Próbuję uzyskać dość powszechną plamę, ale pomimo przeczytania mnóstwa dokumentacji na temat kreślenia w R, oraz dokumentacji ggplot i wszystkich jej warstw, nie mogę uzyskać tej fabuły na sposób Chcę tego.Barplot z dwiema zmiennymi obok siebie

Moje dane są dość proste.

aov.data 
    Block RTreg RTrnd 
1 Block1 0.0000 862.0707 
2 Block2 667.2081 770.4315 
3 Block3 645.4730 696.0200 
4 Block4 674.5200 659.4765 
5 Block5 651.4295 633.7333 

Co chcę dostać to barplot z kolumny w osi x Block, pracując jako zmienna kategorycznego. W osi y chcę mieć wartości do wykreślenia kolumn RTreg i RTrnd. To jest część, której nie mogę naprawić. Chciałbym mieć dwa kreski na znak podziałki na osi X. Jeden pasek reprezentujący wartość RTreg w tym bloku i jeden pasek reprezentujący wartość RTrnd w tym bloku. Coś takiego:

Valid XHTML.

Ale z 5 zestawami dwóch pasków zamiast dwóch.

Dotychczas Użyłem następujący kod:

ggplot(aov.data,aes(x=Block)) + 
      geom_bar(aes(y=RTreg),stat="identity",position="dodge",col="blue") + 
      geom_bar(position="dodge") + 
      geom_bar(aes(y=RTrnd),stat="identity",position="dodge",col="red") 

Co myślałem, że robi to, aby najpierw utworzyć wykres bazowy z kategorycznym osi x zawierającej bloki. Następnie, z geom_bar, pomyślałem, że najpierw dodałem kolumnę RTreg, a następnie drugą geom_bar, że dodałem kolumnę RTrnd. Przy opcji position równej dodge chciałem uzyskać dwa paski obok siebie. Jednak działka, którą otrzymuję to:

Valid XHTML http://s12.postimage.org/k0przrmtp/failed_geom_bar.png.

Każdy pomysł, jak uzyskać dwa paski obok siebie, i mam nadzieję, różne kolory i legendę dla każdego? Byłbym wdzięczny za wskazówki.

Z góry dziękuję.

Odpowiedz

20

Należy przekształcić ramkę danych z szerokiej na długą, a następnie nie trzeba ustawiać prętów dla każdego warunku osobno.

Zakładając, że ramka danych ma nazwę df.

library(reshape2) 
df.long<-melt(df) 
ggplot(df.long,aes(Block,value,fill=variable))+ 
    geom_bar(stat="identity",position="dodge") 

enter image description here

+0

Dzięki bardzo. Nie mogę uwierzyć, że to było takie proste! – HernanLG

+4

Tak, witamy w ggplot ... gdzie trudno odróżnić proste od niemożliwego! –

+0

Gdzie mogę określić, które wartości y należy przyjąć? Na przykład. Mam więcej niż 2 kolumny (RTreg, RTrnd) – barracuda317

Powiązane problemy