+ - 0:00:00
Notes for current slide
Notes for next slide

Podstawy programowania

Wizualizacja danych

© Łukasz Wawrowski

1 / 45

Wczytanie danych

  1. Ściągnij zbiór rossmann.xlsx i umieść w folderze data

  2. Utwórz nowy skrypt i wczytaj biblioteki tidyverse i readxl

  3. Wczytaj zbiór danych rossmann.xlsx do pamięci R

  4. Za pomocą funkcji filter wybierz jeden ze sklepów

10:00
3 / 45

Proste wykresy

  • plot() - wykres punktowy/liniowy

  • hist() - histogram

  • barplot() - wykres kolumnowy

  • boxplot() - wykres pudełkowy

4 / 45

Problemy z nazwami zmiennych

  • nazwy zmiennych nie powinny zawierać polskich liter i spacji

  • nazwy zmiennych nie powinny zaczynać się od liczby

  • surowe dane zwykle nie posiadają nazw kolumn przystosowanych do przetwarzania przez komputer

  • ten problem rozwiązuje pakiet janitor i funkcja clean_names():

zbior <- janitor::clean_names(zbior)
  • funkcja ta zamienia wielkie litery na małe, spacje na podkreślniki i znaki transliteruje do ASCII.
5 / 45

Wczytanie danych

library(tidyverse)
library(readxl)
rossmann <- read_xlsx("../data/rossmann.xlsx")
sklep11 <- rossmann %>%
filter(sklep_id == 11, czy_otwarty == "Tak")
plot(sklep11$sprzedaz, sklep11$liczba_klientow)

6 / 45

Pakiet ggplot2

Tworzenie wykresów poprzez dodawanie (+) kolejnych warstw.

7 / 45

Pierwsza wersja 10.06.2007

Niezbędny kod

ggplot(data = zbior_danych, aes(x = cecha1, y=cecha2))
  • x - zawartość osi x

  • y - zawartość osi y

  • fill - wypełnienie

  • size - rozmiar

  • color - kolor

  • shape - kształt

8 / 45

Wykres punktowy - geom_point

Obowiązkowe argumenty aes:

  • x

  • y

9 / 45

Wykres punktowy

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz)) +
geom_point()

10 / 45

Dodatkowe elementy

  • xlim(0,10) - minimum i maksimum osi x

  • ylim(-5,5) - minimum i maksimum osi y

  • xlab("tekst") - etykieta osi x

  • ylab("tekst") - etykieta osi y

  • ggtitle("tekst") - tytuł wykresu

  • labs(subtitle = "tekst") - podtytuł

  • labs(caption = "tekst") - podpis

11 / 45

Wykres punktowy

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz)) +
geom_point() +
xlab("Liczba klientów") +
ylab("Sprzedaż")

12 / 45

Wykres punktowy

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz)) +
geom_point() +
xlab("Liczba klientów") +
ylab("Sprzedaż") +
ylim(0,20000)

13 / 45

Wykres punktowy

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz)) +
geom_point() +
xlab("Liczba klientów") +
ylab("Sprzedaż") +
ylim(0,20000) +
ggtitle("Sprzedaż i liczba klientów w sklepie nr 11")

14 / 45

Motywy

  • theme_bw
  • theme_classic
  • theme_dark
  • theme_gray - domyślnie
  • theme_light
  • theme_linedraw
  • theme_minimal
  • theme_void

Powyższe motywy są zaimplementowane w pakiecie ggplot2, ale można także skorzystać z dodatkowych pakietów: ggthemes, bbplot, xkcd.

Istnieje także możliwość stworzenia własnego motywu.

15 / 45

Zadanie

Przetestuj kilka motywów i wybierz jeden z nich.

02:00
16 / 45

Zapisywanie wykresu

  • w zakładce Plots -> Export

  • funkcja ggsave()

    • filename - nazwa pliku z rozszerzeniem (png, pdf)

    • width i height - szerokość i wysokość (domyślnie w calach)

    • scale - skalowanie po zmianie rozdzielczości

    • dpi - liczba punktów na cal

W przypadku generowania plików pdf z polskimi znakami trzeb dodać argument device = cairo_pdf.

Funkcja ggsave() zapisuje ostatnio stworzony wykres. Wątek na temat zachowania tej funkcji.

17 / 45

Wykres punktowy

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz)) +
geom_point() +
xlab("Liczba klientów") +
ylab("Sprzedaż") +
ylim(0,20000) +
ggtitle("Sprzedaż i liczba klientów w sklepie nr 11") +
theme_light()
ggsave("figs/sklep11.png",
width = 12,
height = 10,
scale = 0.5,
dpi = 1200)

18 / 45

Wykres punktowy

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz,
color=czy_promocja)) +
geom_point() +
xlab("Liczba klientów") +
ylab("Sprzedaż") +
ylim(0,20000) +
ggtitle("Sprzedaż i liczba klientów w sklepie nr 11") +
theme_light()

19 / 45

Wykres punktowy

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz,
color=czy_promocja)) +
geom_point() +
xlab("Liczba klientów") +
ylab("Sprzedaż") +
scale_color_discrete(name = "Promocja?") +
ylim(0,20000) +
ggtitle("Sprzedaż i liczba klientów w sklepie nr 11") +
theme_light()

20 / 45

Wykres punktowy

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz,
color=czy_promocja)) +
geom_point() +
xlab("Liczba klientów") +
ylab("Sprzedaż") +
scale_color_discrete(name = "Promocja?") +
ylim(0,20000) +
ggtitle("Sprzedaż i liczba klientów w sklepie nr 11") +
theme_light()

21 / 45

Wykres punktowy

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz,
color=czy_promocja)) +
geom_point() +
xlab("Liczba klientów") +
ylab("Sprzedaż") +
scale_color_discrete(name = "Promocja?") +
ylim(0,20000) +
ggtitle("Sprzedaż i liczba klientów w sklepie nr 11") +
theme_light() +
theme(legend.position = "bottom")

22 / 45

Wykres punktowy

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz,
color=czy_promocja)) +
geom_point() +
xlab("Liczba klientów") +
ylab("Sprzedaż") +
scale_color_discrete(name = "Promocja?") +
ylim(0,20000) +
ggtitle("Sprzedaż i liczba klientów w sklepie nr 11") +
theme_light() +
theme(legend.position = "inside", legend.position.inside = c(0.1,0.8))

23 / 45

Wykresy interaktywne

plotly to biblioteka do wykresów, która posiada swoją własną składnię.

Za pomocą funkcji ggplotly() można zamienić każdy wykres ggplot2 na wykres interaktywny.

24 / 45

Wykres punktowy

p <- ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz,
color=czy_promocja)) +
geom_point() +
xlab("Liczba klientów") +
ylab("Sprzedaż") +
scale_color_discrete(name = "Promocja?") +
ylim(0,20000) +
ggtitle("Sprzedaż i liczba klientów w sklepie nr 11") +
theme_light()
plotly::ggplotly(p)
50010001500200005000100001500020000
Promocja?NieTakSprzedaż i liczba klientów w sklepie nr 11Liczba klientówSprzedaż
25 / 45

Histogram - geom_histogram

Obowiązkowe argumenty aes:

  • x

Domyślnie tworzy zawsze 30 słupków.

26 / 45

Histogram

ggplot(sklep11, aes(x = liczba_klientow)) +
geom_histogram()

Domyślnie tworzonych jest 30 słupków.

27 / 45

Histogram - 12 słupków

ggplot(sklep11, aes(x = liczba_klientow)) +
geom_histogram(bins = 12)

28 / 45

Histogram - słupek = 100 klientów

ggplot(sklep11, aes(x = liczba_klientow)) +
geom_histogram(binwidth = 100)

29 / 45

Histogram - fill jako zmienna

ggplot(sklep11, aes(x = liczba_klientow,
fill = czy_promocja)) +
geom_histogram(binwidth = 100)

30 / 45

Histogram - fill jako kolor

ggplot(sklep11, aes(x = liczba_klientow)) +
geom_histogram(binwidth = 100,
fill = "blue")

31 / 45

Krzywa gęstości

ggplot(sklep11, aes(x = liczba_klientow)) +
geom_density(fill = "blue")

32 / 45

Wykres słupkowy - geom_bar / geom_col

  • geom_bar - funkcja sama oblicza wartości do wyświetlenia na podstawie zbioru danych jednostkowych

  • geom_col - funkcja otrzymuje już obliczone wartości (dane zagregowane)

33 / 45

Wykres słupkowy - geom_bar

ggplot(sklep11, aes(x = czy_promocja)) +
geom_bar()

34 / 45

Wykres słupkowy - geom_bar

ggplot(sklep11, aes(x = czy_promocja)) +
geom_bar(fill = "#99d8c9")

35 / 45

Wykres słupkowy - geom_col

sklep_promocja <- sklep11 %>%
count(czy_promocja)
ggplot(sklep_promocja, aes(x = czy_promocja,
y = n)) +
geom_col()

36 / 45

facet_wrap

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz)) +
geom_point() +
facet_wrap( ~ czy_promocja)

37 / 45

facet_wrap

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz)) +
geom_point() +
facet_wrap(dzien_tyg ~ czy_promocja)

38 / 45

facet_wrap

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz)) +
geom_point() +
facet_wrap(dzien_tyg ~ czy_promocja,
nrow = 2)

39 / 45

facet_grid

ggplot(sklep11, aes(x=liczba_klientow,
y=sprzedaz)) +
geom_point() +
facet_grid(dzien_tyg ~ czy_promocja)

40 / 45

Wykres pudełkowy - geom_boxplot

Obowiązkowe argumenty aes:

  • x - zmienna grupująca (tekstowa/faktor)

  • y - zmienna analizowana

41 / 45

Wykres pudełkowy

ggplot(sklep11, aes(x=czy_promocja, y=sprzedaz)) +
geom_boxplot()

42 / 45

Wykres pudełkowy

ggplot(sklep11, aes(x=czy_promocja, y=sprzedaz)) +
geom_boxplot() +
coord_flip()

43 / 45

Zadanie

Stwórz następujący wykres

10:00
44 / 45

Zadania

Wykonaj zadania zamieszczone na stronie.

Bootcamp z zadaniami z przetwarzania i wizualizacji: https://r-bootcamp.netlify.app/

45 / 45
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow