2013-01-03 23 views
14

Jaka jest różnica (jeśli występuje) między geom_bar a geom_histogram w ggplot? Wydają się wytwarzać tę samą fabułę i przyjmują te same parametry.ggplot geom_bar vs geom_histogram

+4

Jeśli spojrzeć na? Geom_histogram można zauważyć, że „geom_histogram jest aliasem for geom_bar plus stat_bin " –

+0

Mówiąc jako matematyk :-), histogram różni się od wykresu słupkowego, nawet jeśli nazwy wydają się mieszać. Cytując z Wikipedii: "Histogram składa się z częstotliwości tabelarycznych, pokazanych jako sąsiednie prostokąty, wznoszonych w dyskretnych odstępach czasu (przedziałach), z obszarem równym częstotliwości obserwacji w przedziale. Wysokość prostokąta jest również równa częstotliwości gęstość interwału, tj. częstotliwość podzielona przez szerokość interwału Całkowita powierzchnia histogramu jest równa liczbie danych."Wykres słupkowy nie ma takich ograniczeń obszarowych –

+0

dzięki. Chociaż wydaje się, że geom_bar() ma również zastosowany do niego parametr stat_bin(), ponieważ można uzyskać dostęp do zmiennych stat_bin, takich jak ..count .. i ..density .. – jamborta

Odpowiedz

11
  • Wykresy słupkowe zapewniają wizualną prezentację danych jakościowych. Przykłady:
    • Liczba osób czerwone, czarne i brązowe włosy
    • spojrzeć na geom_barhelp file. Wszystkie przykłady są liczone.
    • Wikipedia page
  • Histogramy stosuje się do wykreślenia gęstość interval numerycznymi (zazwyczaj) danych. Przykłady,
    • Rozkłady wieku i wzrostu
    • geom_histhelp file. Przykładami są rozkład ocen filmów.

ggplot2

Po nieco więcej śledztwo, myślę, że w ggplot2 nie ma różnicy między geom_bar i geom_histogram. Od docs:

geom_histogram(mapping = NULL, data = NULL, stat = "bin", 
    position = "stack", ...) 
geom_bar(mapping = NULL, data = NULL, stat = "bin", 
    position = "stack", ...) 

Zdaję sobie sprawę, że w geom_histogram docs stwierdza:

geom_histogram jest aliasem dla geom_bar powiększonej stat_bin

ale szczerze mówiąc, nie jestem naprawdę jestem pewien, co to oznacza, ponieważ moje zrozumienie ggplot2 jest takie, że zarówno stat_bin, jak i geom_bar są warstwami (z nieco innym naciskiem).

+0

Myślę, że to nie jest reprezentowane w ggplot dokładnie jako ggplot (diamenty, aes (głębokość)) + geom_histogram (aes (y = .. gęstość ..)) i ggplot (diamenty, aes (głębokość)) + geom_bar (aes (y = .. gęstość ..)) powoduje, że ta sama działka (która jest histogramem) – jamborta

+0

Wykresy gęstości nie są histogramami, wykresy gęstości nie są wartościami procentowymi, wykresy gęstości są wykresami gęstości. cf http://stackoverflow.com/questions/17655648/how-can-i-plot-the-relative-proporcje-dwóch-grup-using-a-fill-aesthetic-in dla więcej cytowań. – russellpierce

3

Domyślne zachowanie jest takie samo zarówno dla geom_bar, jak i geom_histogramu. Dzieje się tak, ponieważ (i jak wspomniano o @csgillespie), istnieje domniemany stat_bin, gdy wywołujesz geom_histogarm (zrozumiałe), a także jest to domyślna transformacja statystyk zastosowana do geom_bar (arguable behaviour IMO). Dlatego musisz określić stat='identity', kiedy chcesz wykreślić dane bez zmian.

The stat='bin' lub stat_bin() jest transformacją statystyczną, którą ggplot robi dla ciebie. To oferuje jako wyjście zmienne otoczone z dwóch kropek (The ..count.. i ..density... Jeśli nie podasz stat='bin' nie dostaniesz tych zmiennych.