Wykres słupkowy i histogram w języku R (z przykładem)
Wykres słupkowy to świetny sposób na przedstawienie zmiennych kategorycznych na osi X. Ten typ wykresu przedstawia dwa aspekty na osi Y.
- Pierwsza zlicza liczbę wystąpień pomiędzy grupami.
- Drugi pokazuje statystykę podsumowującą (min., maks., średnia itd.) zmiennej na osi Y.
Użyjesz zestawu danych mtcars zawierającego następujące zmienne:
- cyl: Liczba cylindrów w samochodzie. Zmienna numeryczna
- am: Typ skrzyni biegów. 0 dla automatycznej i 1 dla ręcznej. Zmienna numeryczna
- mpg: mile na galon. Zmienna numeryczna
Jak utworzyć wykres słupkowy
Aby utworzyć wykres w R, możesz skorzystać z biblioteki ggplot, która tworzy wykresy gotowe do publikacji. Podstawowa składnia tej biblioteki jest następująca:
ggplot(data, mapping = aes()) + geometric object arguments: data: dataset used to plot the graph mapping: Control the x and y-axis geometric object: The type of plot you want to show. The most common objects are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
W tym samouczku interesuje Cię obiekt geometryczny geom_bar(), który tworzy wykres słupkowy.
Wykres słupkowy: liczba
Twój pierwszy wykres pokazuje częstotliwość cylindra za pomocą geom_bar(). Poniższy kod jest najbardziej podstawową składnią.
library(ggplot2) # Most basic bar chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
Objaśnienie kodu
- Przekazujesz zbiór danych mtcars do ggplot.
- Wewnątrz argumentu aes() dodajesz oś x jako zmienną czynnikową (cyl)
- Znak + oznacza, że chcesz, aby R nadal czytał kod. Kod staje się bardziej czytelny, ponieważ go łamie.
- Użyj geom_bar() dla obiektu geometrycznego.
Wyjście:
Note: upewnij się, że konwertujesz zmienne na czynnik, w przeciwnym razie R traktuje zmienne jako numeryczne. Zobacz poniższy przykład.
Dostosuj wykres
Aby dostosować wykres, można przekazać cztery argumenty:
- `stat`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, pass `stat = "identity"` - `alpha`: Control density of the color - `fill`: Change the color of the bar - `size`: Control the size the bar
Zmień kolor pasków
Możesz zmienić kolor pasków. Należy pamiętać, że kolory pasków są wszystkie podobne.
# Change the color of the bars ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(fill = "coral") + theme_classic()
Objaśnienie kodu
- Kolory słupków są kontrolowane przez mapowanie aes() wewnątrz obiektu geometrycznego (tzn. nie w ggplot()). Kolor można zmienić za pomocą argumentów wypełnienia. Tutaj wybierasz kolor koralowy.
Wyjście:
Możesz użyć tego kodu:
grDevices::colors()
aby zobaczyć wszystkie kolory dostępne w R. Dostępnych jest około 650 kolorów.
Zmień intensywność
Możesz zwiększyć lub zmniejszyć intensywność koloru pasków
# Change intensity ggplot(mtcars, aes(factor(cyl))) + geom_bar(fill = "coral", alpha = 0.5) + theme_classic()
Objaśnienie kodu
- Aby zwiększyć/zmniejszyć intensywność paska, możesz zmienić wartość alfa. Duża alfa zwiększa intensywność, a niska alfa zmniejsza intensywność. alfa waha się od 0 do 1. Jeśli 1, to kolor jest taki sam jak paleta. Jeśli 0, kolor jest biały. Wybierasz alfa = 0.1.
Wyjście:
Koloruj według grup
Możesz zmieniać kolory pasków, co oznacza inny kolor dla każdej grupy. Na przykład zmienna cyl ma trzy poziomy, wówczas można wykreślić wykres słupkowy za pomocą trzech kolorów.
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
Objaśnienie kodu
- Argument fill wewnątrz aes() umożliwia zmianę koloru paska. Zmieniasz kolor, ustawiając zmienną fill = x-axis. W twoim przykładzie zmienna osi x to cyl; wypełnienie = współczynnik (cyl)
Wyjście:
Dodaj grupę w paskach
Możesz dalej podzielić oś Y na podstawie innego poziomu czynnika. Na przykład możesz policzyć liczbę automatycznych i manualnych skrzyń biegów na podstawie typu cylindra.
Będziesz postępować w następujący sposób:
- Krok 1: Utwórz ramkę danych ze zbiorem danych mtcars
- Krok 2: Oznacz zmienną am jako auto dla automatycznej skrzyni biegów i man dla manualnej skrzyni biegów. Przekształć am i cyl jako czynnik, aby nie trzeba było używać factor() w funkcji ggplot().
- Krok 3: Narysuj wykres słupkowy, aby policzyć liczbę skrzyń biegów według cylindra
library(dplyr) # Step 1 data <- mtcars % > % #Step 2 mutate(am = factor(am, labels = c("auto", "man")), cyl = factor(cyl))
Masz gotowy zbiór danych, możesz wykreślić wykres;
# Krok 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Objaśnienie kodu
- Funkcja ggpplot() zawiera dane zbioru danych, a funkcja aes().
- W aes() dołączasz zmienną osi x i określasz, która zmienna jest wymagana do wypełnienia paska (np. am)
- geom_bar(): Utwórz wykres słupkowy
Wyjście:
Mapowanie wypełni pasek dwoma kolorami, po jednym dla każdego poziomu. Zmiana grupy poprzez wybranie innych zmiennych czynnikowych w zbiorze danych jest łatwa.
Wykres słupkowy w procentach
Możesz wizualizować pasek w procentach zamiast surowej liczby.
# Wykres słupkowy w procentach
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
Objaśnienie kodu
- Użyj pozycji = „wypełnij” w argumencie geom_bar(), aby utworzyć grafikę z procentami na osi Y.
Wyjście:
Paski obok siebie
Wykres słupkowy ze zmienną grupową można łatwo wykreślić obok siebie.
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
Objaśnienie kodu
- position=position_dodge(): Jawnie mówi, jak rozmieścić słupki
Wyjście:
Histogram
W drugiej części tutoriala o wykresie słupkowym możesz przedstawić grupę zmiennych za pomocą wartości na osi Y.
Twoim celem jest utworzenie wykresu przedstawiającego średnią milę na galon dla każdego typu cylindra. Aby narysować wykres informacyjny, wykonaj następujące kroki:
- Krok 1: Utwórz nową zmienną ze średnią milą na galon na cylinder
- Krok 2: Utwórz podstawowy histogram
- Krok 3: Zmień orientację
- Krok 4: Zmień kolor
- Krok 5: Zmień rozmiar
- Krok 6: Dodaj etykiety do wykresu
Krok 1) Utwórz nową zmienną
Tworzysz ramkę danych o nazwie data_histogram, która po prostu zwraca średnią liczbę mil na galon na podstawie liczby cylindrów w samochodzie. Nazywasz tę nową zmienną mean_mpg i zaokrąglasz średnią do dwóch miejsc po przecinku.
# Krok 1
data_histogram <- mtcars % > % mutate(cyl = factor(cyl)) % > % group_by(cyl) % > % summarize(mean_mpg = round(mean(mpg), 2))
Krok 2) Utwórz podstawowy histogram
Możesz narysować histogram. Nie jest gotowy do komunikacji i dostarczenia go klientowi, ale daje nam intuicję dotyczącą trendu.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Objaśnienie kodu
- Funkcja aes() ma teraz dwie zmienne. Zmienna cyl odnosi się do osi x, a średnia_mpg jest osią y.
- Należy przekazać argument stat=”identity”, aby odnieść się do zmiennej na osi Y jako wartości liczbowej. geom_bar używa stat=”bin” jako wartości domyślnej.
Wyjście:
Krok 3) Zmień orientację
Zmieniasz orientację wykresu z pionowej na poziomą.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
Objaśnienie kodu
- Możesz kontrolować orientację wykresu za pomocą coord_flip().
Wyjście:
Krok 4) Zmień kolor
Kolory słupków można różnicować w zależności od poziomu współczynnika zmiennej osi X.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + coord_flip() + theme_classic()
Objaśnienie kodu
- Możesz narysować wykres według grup za pomocą mapowania fill=cyl. R automatycznie dba o kolory w oparciu o poziomy zmiennej cyl
Wyjście:
Krok 5) Zmień rozmiar
Aby wykres wyglądał ładniej, zmniejszasz szerokość słupka.
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity", width = 0.5) + coord_flip() + theme_classic()
Objaśnienie kodu
- Argument szerokości wewnątrz funkcji geom_bar() steruje rozmiarem paska. Większa wartość zwiększa szerokość.
- Uwaga: przechowujesz wykres na wykresie zmiennych. Robisz to, ponieważ następny krok nie zmieni kodu wykresu zmiennych. Poprawia czytelność kodu.
Wyjście:
Krok 6) Dodaj etykiety do wykresu
Ostatni krok polega na dodaniu w etykiecie wartości zmiennej mean_mpg.
graph + geom_text(aes(label = mean_mpg), hjust = 1.5, color = "white", size = 3) + theme_classic()
Objaśnienie kodu
- Funkcja geom_text() jest przydatna do kontrolowania estetyki tekstu.
- label=: Dodaj etykietę wewnątrz pasków
- mean_mpg: Użyj zmiennej mean_mpg jako etykiety
- hjust kontroluje położenie etykiety. Wartości zamknięte do 1 wyświetlają etykietę na górze paska, a wyższe wartości przesuwają etykietę na dół. Jeśli orientacja wykresu jest pionowa, zmień hjust na vjust.
- color=”white”: Zmień kolor tekstu. Tutaj używasz koloru białego.
- size=3: Ustaw rozmiar tekstu.
Wyjście:
Podsumowanie
Wykres słupkowy jest przydatny, gdy oś x jest zmienną kategoryjną. Oś y może być albo liczbą, albo statystyką podsumowującą. Poniższa tabela podsumowuje, jak kontrolować wykres słupkowy za pomocą ggplot2:
Cel | Code |
---|---|
Liczyć |
ggplot(df, eas(x= factor(x1)) + geom_bar() |
Policz z innym kolorem wypełnienia |
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar() |
Policz grupami, ułożonymi w stos |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Licz w grupach, obok siebie |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar() |
Liczenie z grupami, ułożone w% |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Wartości |
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity") |