class: center, middle, inverse, title-slide .title[ # Statystyka i wizualizacja danych ] .subtitle[ ## Wykresy (2) ] .author[ ### Jakub Nowosad
nowosad@amu.edu.pl
] --- ## Zbiór danych ```r install.packages("gapminder") ``` http://www.gapminder.org/data/ http://github.com/jennybc/gapminder http://www.youtube.com/watch?v=jbkSRLYSojo ```r library(gapminder) gapminder2007 = subset(gapminder, year == 2007) ``` --- # Warstwy ```r library(ggplot2); library(dplyr) gapminder2 = summarise(gapminder, mean_lifeExp = mean(lifeExp, na.rm = TRUE), .by = year) ggplot(data = gapminder2, aes(x = year, y = mean_lifeExp)) + geom_line() + geom_point() ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-3-1.png" style="display: block; margin: auto;" /> --- # Warstwy ```r ggplot(data = gapminder2007, aes(x = continent, y = lifeExp)) + geom_boxplot() + geom_point() ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-4-1.png" style="display: block; margin: auto;" /> --- # Warstwy/Inne typy wykresów ```r ggplot(data = gapminder2007, aes(x = continent, y = lifeExp)) + geom_boxplot() + geom_jitter() ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-5-1.png" style="display: block; margin: auto;" /> --- # Inne typy wykresów https://ggplot2.tidyverse.org/reference/index.html#geoms ```r ggplot(data = gapminder2007, aes(x = continent, y = lifeExp)) + geom_violin() ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-6-1.png" style="display: block; margin: auto;" /> --- # Tekst na wykresach ```r ggplot(data = gapminder2007, aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + geom_text(aes(label = country)) ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-7-1.png" style="display: block; margin: auto;" /> --- # Tekst na wykresach ```r ggplot(data = gapminder2007, aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + geom_text(aes(label = country), check_overlap = TRUE) ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-8-1.png" style="display: block; margin: auto;" /> --- # Tekst na wykresach ```r library(ggrepel) ggplot(data = gapminder2007, aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + geom_text_repel(aes(label = country), max.overlaps = 3) ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-9-1.png" style="display: block; margin: auto;" /> --- # Tekst na wykresach ```r gapminder2007b = filter(gapminder2007, pop > 37500000, pop < 42500000) ggplot(data = gapminder2007, aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + geom_text_repel(data = gapminder2007b, aes(label = country)) ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-10-1.png" style="display: block; margin: auto;" /> --- # Tekst na wykresach ```r ggplot(data = gapminder2007, aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + annotate("text", x = 4029, y = 61.3, label = "Poland (1952)") + annotate("text", x = 15390, y = 75.6, label = "Poland (now)") + annotate("rect", xmin = 0, xmax = 3000, ymin = 41, ymax = 68, alpha = .2) ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-11-1.png" style="display: block; margin: auto;" /> --- # Skale kolorystyczne https://colorspace.r-forge.r-project.org/articles/ggplot2_color_scales.html ```r library(colorspace) ggplot(data = gapminder2007, aes(x = gdpPercap, y = lifeExp, color = continent)) + geom_point() + scale_color_discrete_qualitative(palette = "Dynamic") ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-12-1.png" style="display: block; margin: auto;" /> --- # Odwrócanie osi ```r ggplot(data = gapminder2007, aes(x = continent)) + geom_bar() + coord_flip() ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-13-1.png" style="display: block; margin: auto;" /> --- # Sortowanie ```r library(forcats) ggplot(data = gapminder2007, aes(x = fct_infreq(continent))) + geom_bar() ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-14-1.png" style="display: block; margin: auto;" /> --- # Sortowanie ```r ggplot(data = gapminder2007, aes(x = fct_reorder(continent, lifeExp, median), y = lifeExp)) + geom_boxplot() ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-15-1.png" style="display: block; margin: auto;" /> `fct_rev()` --- # Przekształcenia ```r ggplot(data = gapminder2007, aes(x = pop, y = lifeExp)) + geom_point() ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-16-1.png" style="display: block; margin: auto;" /> --- # Przekształcenia ```r ggplot(data = gapminder2007, aes(x = pop, y = lifeExp)) + geom_point() + scale_x_log10() ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-17-1.png" style="display: block; margin: auto;" /> --- # Przekształcenia ```r ggplot(data = gapminder2007, aes(x = gdpPercap, y = lifeExp, color = pop)) + geom_point() ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-18-1.png" style="display: block; margin: auto;" /> --- # Przekształcenia ```r ggplot(data = gapminder2007, aes(x = gdpPercap, y = lifeExp, color = pop)) + geom_point() + scale_color_continuous_sequential(trans = "log10", labels = scales::label_comma()) ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-19-1.png" style="display: block; margin: auto;" /> --- # Multiwykresy ```r ggplot(data = gapminder2007, aes(x = gdpPercap, y = lifeExp)) + geom_point() + facet_wrap(~continent) ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-20-1.png" style="display: block; margin: auto;" /> --- # Dane przestrzenne ```r library(spData);library(sf) ggplot(data = world, aes(fill = lifeExp)) + geom_sf() + coord_sf(crs = "+proj=moll") + scale_fill_continuous_sequential(palette = "Mako", rev = FALSE) ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-21-1.png" style="display: block; margin: auto;" /> https://paleolimbot.github.io/ggspatial/ --- # Animacje https://gganimate.com/; `anim_save()` ```r library(gganimate); library(gifski) ggplot(data = gapminder, aes(gdpPercap, lifeExp)) + geom_point() + transition_time(year) ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-22-1.gif" style="display: block; margin: auto;" /> --- # Animacje ```r poland = filter(gapminder, country == "Poland") ggplot(data = gapminder, aes(gdpPercap, lifeExp)) + geom_point() + geom_text(data = poland, aes(label = country), size = 4, col = "red") + transition_time(year) + labs(title = "{frame_time}") ``` <img src="05_wykresy2_files/figure-html/unnamed-chunk-23-1.gif" style="display: block; margin: auto;" /> --- # Wykresy interaktywne ```r library(plotly) gg1 = ggplot(data = gapminder2007, aes(x = pop, y = lifeExp, label = country)) + geom_point() ggplotly(gg1) ```
--- # Inne Aes: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html Rozszerzenia **ggplot2**: https://exts.ggplot2.tidyverse.org/gallery/ Zmiana czcionki: https://r-graph-gallery.com/custom-fonts-in-R-and-ggplot2.html --- class: inverse, middle, center # Zadania --- ## Zadania 1. Wczytaj dane `data/pomiary_pol.csv`. Stwórz wykres słupkowy liczbę stacji w każdym województwie. Które z województw ma ich najwięcej? Usuń ze zbioru dane, które nie mają informacji o województwie i posortuj słupki od tego z największą liczbą stacji do tego z najmniejszą liczbą stacji. 2. Wykonaj podobną wizualizację, ale posortuj słupki w odwrotnej kolejności. Dodatkowo odwróć osie x i y miejscami. 3. Ulepsz wykres z zadania 2 poprzez dodanie poprawnych opisów osi, tytułu, itd. 4. Narysuj wykres relacji temperatury minimalnej (`tmin_9`) oraz maksymalnej we wrześniu (`tmax_9`). Pokoloruj punkty na podstawie prowincji, w której analizowane pomiary zostały pozyskane. Zamień wykres na jego wersję interaktywną. 5. Do wykresu z zadania 4 dodaj podpisy (`pomiar_id`) najbardziej nietypowych pomiarów oraz zmień skalę kolorystyczną punktów według własnego uznania. 6. Stwórz multiwykres relacji średniej temperatury rocznej oraz rocznej sumy opadów na podstawie województw. (Bonus: spróbuj użyć argumentu `scales = "free"` wewnątrz `facet_wrap()`.) 7. Ze zbioru danych wybierz tylko kolumny `pomiar_id`, `tmin_4`, `tmax_4` oraz `wojewodztwo`. Zamień dane z postaci szerokiej na postać długą, w taki sposób, żeby informacje o temperaturze były tylko w jednej kolumnie. 7. Stwórz animację pokazującą wykresy pudełkowe wartości temperatur w kwietniu dla kolejnych województw. (Porada: zobacz przykład na stronie pakietu **gganimate**.) Zapisz animację jako plik .gif.