Ściągnij zbiór rossmann.xlsx i umieść w folderze data
Utwórz nowy skrypt i wczytaj biblioteki tidyverse
i readxl
Wczytaj zbiór danych rossmann.xlsx
do pamięci R
Za pomocą funkcji filter
wybierz jeden ze sklepów
10:00
plot()
- wykres punktowy/liniowy
hist()
- histogram
barplot()
- wykres kolumnowy
boxplot()
- wykres pudełkowy
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)
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)
ggplot2
Tworzenie wykresów poprzez dodawanie (+
) kolejnych warstw.
Pierwsza wersja 10.06.2007
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
geom_point
Obowiązkowe argumenty aes
:
x
y
ggplot(sklep11, aes(x=liczba_klientow, y=sprzedaz)) + geom_point()
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
ggplot(sklep11, aes(x=liczba_klientow, y=sprzedaz)) + geom_point() + xlab("Liczba klientów") + ylab("Sprzedaż")
ggplot(sklep11, aes(x=liczba_klientow, y=sprzedaz)) + geom_point() + xlab("Liczba klientów") + ylab("Sprzedaż") + ylim(0,20000)
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")
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.
Przetestuj kilka motywów i wybierz jeden z nich.
02:00
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.
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)
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()
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()
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()
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")
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))
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.
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)
geom_histogram
Obowiązkowe argumenty aes
:
Domyślnie tworzy zawsze 30 słupków.
ggplot(sklep11, aes(x = liczba_klientow)) + geom_histogram()
Domyślnie tworzonych jest 30 słupków.
ggplot(sklep11, aes(x = liczba_klientow)) + geom_histogram(bins = 12)
ggplot(sklep11, aes(x = liczba_klientow)) + geom_histogram(binwidth = 100)
ggplot(sklep11, aes(x = liczba_klientow, fill = czy_promocja)) + geom_histogram(binwidth = 100)
ggplot(sklep11, aes(x = liczba_klientow)) + geom_histogram(binwidth = 100, fill = "blue")
ggplot(sklep11, aes(x = liczba_klientow)) + geom_density(fill = "blue")
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)
geom_bar
ggplot(sklep11, aes(x = czy_promocja)) + geom_bar()
geom_bar
ggplot(sklep11, aes(x = czy_promocja)) + geom_bar(fill = "#99d8c9")
geom_col
sklep_promocja <- sklep11 %>% count(czy_promocja)ggplot(sklep_promocja, aes(x = czy_promocja, y = n)) + geom_col()
facet_wrap
ggplot(sklep11, aes(x=liczba_klientow, y=sprzedaz)) + geom_point() + facet_wrap( ~ czy_promocja)
facet_wrap
ggplot(sklep11, aes(x=liczba_klientow, y=sprzedaz)) + geom_point() + facet_wrap(dzien_tyg ~ czy_promocja)
facet_wrap
ggplot(sklep11, aes(x=liczba_klientow, y=sprzedaz)) + geom_point() + facet_wrap(dzien_tyg ~ czy_promocja, nrow = 2)
facet_grid
ggplot(sklep11, aes(x=liczba_klientow, y=sprzedaz)) + geom_point() + facet_grid(dzien_tyg ~ czy_promocja)
geom_boxplot
Obowiązkowe argumenty aes
:
x - zmienna grupująca (tekstowa/faktor)
y - zmienna analizowana
ggplot(sklep11, aes(x=czy_promocja, y=sprzedaz)) + geom_boxplot()
ggplot(sklep11, aes(x=czy_promocja, y=sprzedaz)) + geom_boxplot() + coord_flip()
Stwórz następujący wykres
10:00
Wykonaj zadania zamieszczone na stronie.
Bootcamp z zadaniami z przetwarzania i wizualizacji: https://r-bootcamp.netlify.app/
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 |