2012-06-12 13 views
6

mam P3 dataframe poniżej:ggplot2 pozycja geom_bar = "unik" nie unik

  test  result 
    1  1 26.87778 
    2  1 24.52598 
    3  1 24.02202 
    4  1 20.32632 
    5  1 22.00618 
    6  2 19.84013 
    7  2 19.68983 
    8  2 19.84013 
    9  2 19.23892 
    10  2 19.23892 
    11  3 34.36430 
    12  3 33.28196 
    13  3 33.82313 
    14  3 33.82313 
    15  3 32.47020 
    16  4 25.55169 
    17  4 26.90442 
    18  4 25.40138 
    19  4 24.19895 
    20  4 25.85230 
    21  4 25.70199 
    22  4 24.95047 
    23  5 18.64646 
    24  5 18.64646 
    25  5 17.80653 
    26  5 18.64646 
    27  5 18.31049 

Próbuję dokonać BarChart z uniknął wyników przy użyciu kodu:

ggplot(p3, aes(x = test, y = result))+ geom_bar(position="dodge", stat="identity") 

ale w ogóle nie działa. Nie rozumiem, dlaczego nie działa, ponieważ użyłem tego samego kodu wcześniej i zadziałało.

Odpowiedz

0

Ten odpowiedział Dennis Murphy:

p3$test <- factor(p3$test) 
p3$fac <- factor(unlist(sapply(as.vector(table(p3$test)), seq_len))) 
ggplot(p3, aes(x = test, y = result, fill = fac)) + 
     geom_bar(position = 'dodge', stat = 'identity') 

Regulacja zmienne:

ggplot(p3, aes(x = test, y = result, color = fac, fill = test)) + 
    geom_bar(position = 'dodge', stat = 'identity', linetype = 0) 

Prawie dostałem to, co chciałem, poza tym, że kolor (kontur) powinien być taki sam. ale było wystarczająco blisko.

9
ggplot(p3, aes(x = test, y = result, group = result)) + 
    geom_bar(position="dodge", stat="identity") 

można zobaczyć, co się dzieje w przypadku zmiany group argument color.

ggplot(p3, aes(x = test, y = result, color = result)) + 
    geom_bar(position="dodge", stat="identity") 

Edited komentarze:

Wygląda są nieparzyste numery grup, ponieważ istnieją. Grupa 4 zawiera 7 elementów w dostarczonych danych. grupa 3 ma 5, ale 2 z nich są identyczne. Wykres prawidłowo pokazuje wysokość i grupuje się razem jak elementy. to tak jakbyś nazywał się unique w każdej grupie.

myślę kreślenia:

ggplot(p3, aes(x=test, y=result, group=result, color=result)) + 
    geom_bar(position='dodge', stat='identity') 

wyświetlacze to całkiem dobrze. Jeśli chodzi o każdą grupę mającą 5 elementów, tak nie jest. Grupa 4 ma 7. Aby zobaczyć, co opisujesz można zrobić coś takiego:

ggplot(p3, aes(x=as.integer(row.names(p3)), y=result, fill=factor(test))) + 
    geom_bar(position='dodge', stat='identity') 
+0

Chciałbym zwrócić uwagę na fakt, że bez naturalnej estetyki grupowej, jak "wypełnienie" lub "kolor", unikanie niewiele da. – joran

+0

@Jan Dobry punkt. Jednak nawet przy "wypełnieniu" lub "kolorze" dodanym do aes, 'position = 'dodge'' nie występuje. Musisz użyć 'group', aby' dodge' wiedział, jakie rzeczy należy unikać. 'stat = 'identity'' nie zapewnia automatycznego grupowania, tak jak robią to inne statystyki. – Justin

+0

Jeszcze raz! :) – joran

Powiązane problemy