7  Typy wykresów

Typ wykresu Typ (ang) ggplot2
Wykres rozrzutu Scatter plot geom_point()
Wykres pudełkowy Box plot geom_boxplot()
Histogram Histogram geom_histogram()
Wykres gęstości Density plot geom_density()
Wykres słupkowy Bar plot geom_bar(), geom_col()
Wykres liniowy Line plot geom_line()
data("gapminder", package = "gapminder")
dane2007 <- subset(gapminder, year==2007)

7.1 Histogram

  • Graficzny sposób przedstawiania rozkładu liczebności dla wybranej zmiennej.

  • Wykres został poraz pierwszy wprowadzony przez Pearsona w 1895 roku.

  • Wykres powstaje w dwóch etapach:

    1. Zakres wartości danych dzielony jest na rozłączne przedziały o równej szerokości,
    2. Dla każdego przedziału rysowane są słupki o wysokości równej liczbie obserwacji w każdym przedziale.
  • Dobór przedziałów jest istotny. Różne przedziały mogą pokazać różną informację.

  • Pakiet ggplot2 domyślnie definiuje przedział jako zakres/30. Ustawienia te można zmienić używając parametru *bins* (liczba przedziałów) lub *binwidth* (szerokość przedziału).

#HISTOGRAM
ggplot(dane2007, aes(x = gdpPercap)) + geom_histogram()
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

#HISTOGRAM
ggplot(dane2007, aes(x = gdpPercap)) + geom_histogram(bins = 15)

#HISTOGRAM
ggplot(dane2007, aes(x = gdpPercap)) + geom_histogram(binwidth=10000)

Wykonać histogram dla zmiennej lifeExp dla 2007 roku. Ustawić szerokość przedziałów co 5 lat.

7.2 Wykres słupkowy

  • stosowany do wizualizacji danych jakościowych - tj. częstość występowania zmiennej jakościowej (np. liczba państw na danym kontynencie).
ggplot(dane2007, aes(x = continent)) + geom_bar()

7.3 Wykres liniowy

#Oblicza średnią oczekiwaną długość życia dla poszczególnych lat
library(dplyr)
by_year <- group_by(gapminder, year)
mean_lifeExp_by_year <- summarize(by_year, 
                                  srednia=mean(lifeExp))

#Wykres liniowy
ggplot(data = mean_lifeExp_by_year, aes(x = year, y = srednia)) + geom_line()

Wykonać wykres liniowy pokazujący jak zmieniała się średnia wartość gpdPercap w poszczególnych latach?

7.4 Wykres rozrzutu

  • stosowany do pokazania zależności między zmiennymi
ggplot(data=dane2007, aes(x=gdpPercap, y=lifeExp)) + geom_point()

Zwizualizować zależnośc między długością trwania życia a liczbą ludności w 2007 roku.

7.5 Wizualizacja statystyk opisowych

7.5.1 Wykres pudełkowy

Obrazuje podstawowe statystyki opisowe oraz wartości odstające :

  • dolny kwartyl - dolna krawędz pudełka
  • mediana - linia środkowa
  • górny kwartyl - górna krawędź pudełka
  • linie pionowe oznaczają najbardziej ekstremalne wartości (1,5IQR ponad krawędź pudełka, dolna to 1,5IQR poniżej wartości dolnej krawędzi pudełka)
  • punkty oznaczają wartości odstające

Statystyki opisowe na wykresie pudełkowym
ggplot(data = dane2007, aes(x = continent, y = lifeExp)) + geom_boxplot()

Wykonaj wykres pudełkowy w podziale na lata dla zmiennej gdpPercap.

Wykonaj wykres pudełkowy w podziale na lata dla zmiennej lifeExp.

7.6 stat_summary

Funkcja stat_summary pozwala na wizualizację dowolnych statystyk opisowych bez konieczności wcześniejszego obliczania ich z wykorzystaniem np. funkcji dplyr::summarize().

  • wizualizacja średnich wartości zmiennej lifeExp w poszczególnych latach
ggplot(data = gapminder, aes(x = year, y = lifeExp)) + 
  stat_summary(fun = "mean", geom = "line")

Wykonaj wykres pokazujący jak zmieniała się wartość średnia PKB na osobę (zmienna gdPercap) w latach 1952-2007.

  • wizualizacja mediany dla zmiennej lifeExp w poszczególnych latach
ggplot(data = gapminder, aes(x = year, y = lifeExp)) + 
  stat_summary(fun = "median", geom = "line")

  • wizualizacja wartości średniej (punkt), oraz minimalnej i maksymalnej

obiekt geometryczny pointrange wymaga zdefiniowania 3 funkcji: określającej położenie punktu (argument fun), oraz “wąsów” (argumenty fun.min oraz fun.max)

ggplot(data = gapminder, aes(x = year, y = lifeExp)) +
  stat_summary(fun = mean,
               geom = "pointrange",
               fun.min = min,
               fun.max = max)

Wykonaj wykres pokazujący jak zmieniała się wartość średnia, minimalna oraz maksymalna PKB na osobę (zmienna gdPercap) w latach 1952-2007.

  • wizualizacja wartości średnich +/- odchylenie standardowe
ggplot(data = gapminder, aes(x = year, y = lifeExp)) +
  stat_summary(fun = mean,
               geom = "pointrange",
               fun.max = function(x) mean(x) + sd(x),
               fun.min = function(x) mean(x) - sd(x))

Wykonaj wykres pokazujący wartości śrendnie \(\pm\) odchylenie standardowe dla zmiennej gdpPercap.

  • przebieg minimalnych i maksymalnych wartości lifeExp w latach 1952 - 2007
ggplot(gapminder, aes(x = year, y = lifeExp)) +
  stat_summary(fun = mean, geom = "ribbon", fill = "blue", 
               fun.max = min, fun.min = max)

7.7 Warstwy - łączenie różnych typów wykresów

Pakiet ggplot2 pozwala także na łączenie ze sobą różnych typów wykresów.

  • wizualizacja średniej zmienności oczekiwanej długości trwania życia w latach 1952-2007
#Oblicza średnią oczekiwaną długość życia dla poszczególnych lat
library(dplyr)
by_year <- group_by(gapminder, year)
mean_lifeExp_by_year <- summarize(by_year, 
                                  srednia=mean(lifeExp))

#Wykres liniowy
ggplot(data = mean_lifeExp_by_year, aes(x = year, y = srednia)) + 
  geom_line() + 
  geom_point()

Zwizualizuj średnią zmienność PKB na osobę w latach 1952-2007

  • dodanie wartości średniej (czerwony punkt) do wykresu pudełkowego
ggplot(data = dane2007, aes(x = continent, y = lifeExp)) + 
  geom_boxplot() + 
  stat_summary(fun.y=mean, geom="point", shape=20, size=5, color="red", fill="red") 
Warning: The `fun.y` argument of `stat_summary()` is deprecated as of ggplot2 3.3.0.
ℹ Please use the `fun` argument instead.

Wykonaj wykres pudełkowy dla zmiennej gdPercap w podziale na lata oraz dodaj do wykresu punkt oznaczający średnią wartość.

  • dodanie wartości obserwacji do wykresu pudełkowego
ggplot(data = dane2007, aes(x = continent, y = lifeExp)) +
  geom_boxplot() +
  geom_point()

ggplot(data = dane2007, aes(x = continent, y = lifeExp)) +
  geom_boxplot() +
  geom_jitter()

Wykonaj wykres pudełkowy dla zmiennej lifeExp w podziale na lata. Dodaj do wykresu punkty oznaczające poszczególne obserwacje.

  • wizualizacja statystyk opisowych długości trwnia życia (zmienna lifeExp) w Europie w latach 1952-2007
gapminder %>% 
  filter(continent == 'Europe') %>% 
  ggplot(aes(x = year, y = lifeExp)) +
  stat_summary(fun = mean, geom = "ribbon", alpha = .3, fill = "#1E90FF", fun.max = min, fun.min = max) +
  stat_summary(fun = mean, geom = "pointrange", fun.max = min, fun.min = max, color = "darkblue") +
  stat_summary(fun = max, geom = "line", color = "black") +
  stat_summary(fun = min, geom = "line", color = "black")

Zwizaulizuj statystyki opisowe (min, max, średnią) PKB na osobę (zmienna gdpPercap) w Azji w latach 1952-2007

7.7.1 Wizualizacja danych w grupach

Wizualizacja danych w podziale na grupy może być wykonana m.in za pomocą wykresu pudełkowego (geom_boxplot()), wykresu skrzypcowego (geom_violin()), lub za pomocą tzw. multiwykresów (facet_grid())

ggplot(data = dane2007, aes(x = continent, y = lifeExp)) +
  geom_boxplot()

ggplot(data = dane2007, aes(x = continent, y = lifeExp)) +
  geom_violin()

Wykonaj wykres skrzypcowy dla zmiennej gdPercap w podziale na kontynenty.

7.8 Multiwykresy

ggplot(data = dane2007, aes(x = gdpPercap, y = lifeExp)) +
  geom_point() +
  facet_wrap(~continent)

ggplot(data = dane2007, aes(x = lifeExp)) +
  geom_histogram() +
  facet_wrap(~continent)
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Wykonaj multiwykres przedstawiający rozkład wartości zmiennej gdpPercap (na histogramie) w podziale na kontynenty.

7.9 Zapisywanie wykresów

p <- ggplot(data = dane2007, aes(x = continent, y = lifeExp)) + 
  geom_boxplot() + 
  labs(x = "Kontynent", y = "Oczekiwana długość trwania życia")
ggsave(filename = "Wykres.pdf", plot = p)
ggsave(filename = "Wykres.png", plot = p, dpi = 300)