357 lines
8.9 KiB
R
357 lines
8.9 KiB
R
|
# author: Cezary Pukownik
|
||
|
# indeks: s444337
|
||
|
|
||
|
library(tidyverse)
|
||
|
|
||
|
#' # 2.3.1
|
||
|
#' ## Zadanie 1
|
||
|
|
||
|
airquality %>%
|
||
|
select(Ozone, Solar.R, Wind, Temp) %>%
|
||
|
filter(Ozone>80)
|
||
|
|
||
|
#' ## Zadanie 2
|
||
|
#install.packages('weathermetrics')
|
||
|
library(weathermetrics)
|
||
|
|
||
|
airquality %>%
|
||
|
mutate(TempC=fahrenheit.to.celsius(Temp))
|
||
|
|
||
|
#' # 2.4.1
|
||
|
#' ## Zadanie 1
|
||
|
as_tibble(airquality)
|
||
|
|
||
|
#' ## Zadanie 2
|
||
|
tibble(litery=letters[6:11],
|
||
|
miesiace=month.name[1:6])
|
||
|
|
||
|
#' # 3.2.4
|
||
|
#' ## Zadanie 1
|
||
|
ggplot(data=mpg)
|
||
|
|
||
|
#' Co widzisz?
|
||
|
#' Szare. puste pole
|
||
|
|
||
|
#' ## Zadanie 2
|
||
|
as_tibble(mtcars)
|
||
|
|
||
|
#' liczba wierszy: 32
|
||
|
|
||
|
#' ## Zadanie 3
|
||
|
?mpg
|
||
|
|
||
|
#' drv
|
||
|
#' f = front-wheel drive, r = rear wheel drive, 4 = 4wd
|
||
|
|
||
|
#' ## Zadanie 4
|
||
|
ggplot(aes(x=hwy, y=cyl), data=as_tibble(mpg)) + geom_point()
|
||
|
|
||
|
#' ## Zadanie 5
|
||
|
ggplot(aes(x=class, y=drv), data=as_tibble(mpg)) + geom_point()
|
||
|
|
||
|
#' Dlaczego wykres jest bezuzyteczny?
|
||
|
#' Wykres nie pokazuje żadnych liczbowych informacji na temat danych
|
||
|
#' Zostały wykorzystane dwie cechy typu categorical
|
||
|
#' Jedyną informacją jest to, czy dana kombinacja drv i class istanieje.
|
||
|
|
||
|
#' # 3.3.1
|
||
|
#' ## Zadanie 1
|
||
|
|
||
|
#' ustalenie parametru color wewnątrz funckcji aes
|
||
|
#' powinno być nazwą kolumny z categoriami, po których
|
||
|
#' punkty zostaną pogrupowane, a nie istanieje kolumna "blue"
|
||
|
#' w zbriorze danych
|
||
|
#'
|
||
|
#' parametr color powinien zostać ustalony wewnątrz
|
||
|
#' funkcji geom_point. Poprawiony kod poniżej.
|
||
|
|
||
|
ggplot(data = mpg) +
|
||
|
geom_point(mapping = aes(x = displ, y = hwy), color = "blue")
|
||
|
|
||
|
#' ## Zadanie 2
|
||
|
mpg
|
||
|
#' kolumny z danymi kategorialnymi to:
|
||
|
#' manufacturer, model, trans, frv, fl, class
|
||
|
#' można zwrócić uwagę na typ danych w kolumnie
|
||
|
#' jeśli typ to <chr>, to najprawdopodobniej jest to dana kategorialna
|
||
|
|
||
|
#' ## Zadanie 3
|
||
|
|
||
|
ggplot(data = mpg) +
|
||
|
geom_point(mapping = aes(x=displ, y=hwy, color=displ, size=displ))
|
||
|
|
||
|
#' zmienna ciągła jest interpolowania między dwoma kolorami tworząc gradient
|
||
|
#' tak jak samo z rozmiarem, rozmiar jest skalowany
|
||
|
#' w przypadku shape powoduje to błąd. Gdyby podać dane kategorialne
|
||
|
#' podział byłby dyskretny, na różne kolory, wielkości, kształty
|
||
|
|
||
|
|
||
|
#' ## Zadanie 4
|
||
|
#' Przykład w punkcie wyżej
|
||
|
#' Ta sama zmienna bedzie przedstawiona różnymi metodami
|
||
|
|
||
|
#' ## Zadanie 5
|
||
|
#' stroke wpływa na grubuść konturu, obrysu, mozna stosować z punktami i liniami
|
||
|
?geom_point
|
||
|
|
||
|
#' ## Zadanie 6
|
||
|
|
||
|
ggplot(data = mpg) +
|
||
|
geom_point(mapping = aes(x=displ, y=hwy, color=displ < 5))
|
||
|
|
||
|
|
||
|
mpg %>%
|
||
|
filter(displ < 5) %>%
|
||
|
mutate(is_less_than_5=displ < 5)
|
||
|
|
||
|
#' Przypisanie displ < 5 podzieliło data set na dwie grupy
|
||
|
#' TRUE oraz FALSE, w zalezności od tego czy warunek był spełniony
|
||
|
#' czy nie.
|
||
|
|
||
|
#' # 3.5.1
|
||
|
#' ## Zadanie 1
|
||
|
|
||
|
ggplot(data = mpg) +
|
||
|
geom_point(mapping = aes(x = displ, y = hwy)) +
|
||
|
facet_grid(drv ~ displ)
|
||
|
|
||
|
#' ggplot potraktuje ją jako zmienną kategorialną,
|
||
|
#' tworząc siatkę dla kazdej unikatowej wartości zmiennej ciagłęj
|
||
|
|
||
|
#' ## Zadanie 2
|
||
|
ggplot(data = mpg) +
|
||
|
geom_point(mapping = aes(x = drv, y = cyl))
|
||
|
|
||
|
ggplot(data = mpg) +
|
||
|
geom_point(mapping = aes(x = drv, y = cyl)) +
|
||
|
facet_grid(cyl~drv)
|
||
|
|
||
|
#' puste komórki oznacznaczają brak danych
|
||
|
|
||
|
#' ## Zadanie 3
|
||
|
|
||
|
|
||
|
ggplot(data = mpg) +
|
||
|
geom_point(mapping = aes(x = displ, y = hwy)) +
|
||
|
facet_grid(drv ~ .)
|
||
|
|
||
|
ggplot(data = mpg) +
|
||
|
geom_point(mapping = aes(x = displ, y = hwy)) +
|
||
|
facet_grid(. ~ cyl)
|
||
|
|
||
|
#' kropka traktowana jest jako puste pole,
|
||
|
#' wtedy jedna z osi, nie bedzie kategoryzowana
|
||
|
|
||
|
|
||
|
#' ## Zadanie 4
|
||
|
ggplot(data = mpg) +
|
||
|
geom_point(mapping = aes(x = displ, y = hwy)) +
|
||
|
facet_wrap(~ class, nrow = 2)
|
||
|
|
||
|
|
||
|
#' # 3.6.1
|
||
|
|
||
|
#' ## Zadanie 1
|
||
|
#' liniowy - geom_line()
|
||
|
#' pudełkowy - geom_boxplot()
|
||
|
#' histogram - geom_histogram()
|
||
|
#' warstwowy - geom_area()
|
||
|
|
||
|
#' ## Zadanie 2
|
||
|
ggplot(data = mpg, mapping = aes(x = displ, y = hwy, color = drv)) +
|
||
|
geom_point() +
|
||
|
geom_smooth(se = FALSE)
|
||
|
|
||
|
#' ## Zadanie 3
|
||
|
#' show.legend = FALSE, sluży do ukrycia legendy
|
||
|
|
||
|
#' ## Zadanie 4
|
||
|
#' parametr se w funcji geom_smooth() służy do pokazania, lub ukrycia przedziałów ufnośći na wykresie.
|
||
|
|
||
|
#' ## Zadanie 5
|
||
|
#' dwa poniższe wyresy są takie same, różnią się tylko sposobem denifincji mapowania.
|
||
|
#' mapowanie wewnątrz aes w ggplot, przenosi mapowania na wszystkie geometrie, gdy nie sa zdefiniowane inne.
|
||
|
|
||
|
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
|
||
|
geom_point() +
|
||
|
geom_smooth()
|
||
|
|
||
|
ggplot() +
|
||
|
geom_point(data = mpg, mapping = aes(x = displ, y = hwy)) +
|
||
|
geom_smooth(data = mpg, mapping = aes(x = displ, y = hwy))
|
||
|
|
||
|
#' ## Zadanie 6
|
||
|
|
||
|
#' Wykres 1
|
||
|
|
||
|
mpg %>%
|
||
|
ggplot(aes(x=displ, y=hwy)) +
|
||
|
geom_point() +
|
||
|
geom_smooth(se=FALSE)
|
||
|
|
||
|
#' Wykres 2
|
||
|
mpg %>%
|
||
|
ggplot(aes(x=displ, y=hwy, group=drv)) +
|
||
|
geom_point() +
|
||
|
geom_smooth(se=FALSE)
|
||
|
|
||
|
#' Wykres 3
|
||
|
mpg %>%
|
||
|
ggplot(aes(x=displ, y=hwy, color=drv)) +
|
||
|
geom_point() +
|
||
|
geom_smooth(se=FALSE)
|
||
|
|
||
|
#' Wykres 4
|
||
|
mpg %>%
|
||
|
ggplot(aes(x=displ, y=hwy)) +
|
||
|
geom_point(aes(color=drv)) +
|
||
|
geom_smooth(se=FALSE)
|
||
|
|
||
|
#' Wykres 5
|
||
|
mpg %>%
|
||
|
ggplot(aes(x=displ, y=hwy)) +
|
||
|
geom_point(aes(color=drv)) +
|
||
|
geom_smooth(aes(linetype=drv), se=FALSE)
|
||
|
|
||
|
#' Wykres 6
|
||
|
mpg %>%
|
||
|
ggplot(aes(x=displ, y=hwy)) +
|
||
|
geom_point(aes(fill=drv), shape=21, stroke=2, color='white', size=2)
|
||
|
|
||
|
#' # 3.7.1
|
||
|
|
||
|
# Zadanie 1
|
||
|
?stat_summary
|
||
|
|
||
|
#' Funcja stat_summary jest związana w funcją geom_pointrange()
|
||
|
diamonds %>%
|
||
|
ggplot() +
|
||
|
geom_pointrange(aes(x = cut, y = depth), stat='summary')
|
||
|
|
||
|
#' ## Zadanie 2
|
||
|
#' funkcja geom_bar służy do wykresów słupkowych/kolumnowych i jej domyslna statystyka do 'count',
|
||
|
#' funcja geom_col, ma domyślną statystykę 'identity'
|
||
|
|
||
|
#' ## Zadanie 3
|
||
|
#'
|
||
|
#' geom_bar : stat_count
|
||
|
#' geom_col : identity
|
||
|
#' geom_histogram: stat_bin
|
||
|
#' geom_line : identity
|
||
|
#' geom_path : identity
|
||
|
#' geom_step : identity
|
||
|
#' geom_segment : identity
|
||
|
#' geom_curve : identity
|
||
|
#' geom_spoke : identity
|
||
|
#' geom_polygon : identity
|
||
|
#' geom_ribbot : identity
|
||
|
#' geom_area : identity
|
||
|
#' geom_freqpoly : stat_bin
|
||
|
#'
|
||
|
|
||
|
#' ## Zadanie 4
|
||
|
#' ?geom_smmoth : stat_smooth
|
||
|
#' y - predicted value
|
||
|
#' ymin - lower pointwise confidence interval around the mean
|
||
|
#' yman - upper pointwise confidence interval around the mean
|
||
|
#' se = standard error
|
||
|
#'
|
||
|
#' ## Zadanie 5
|
||
|
|
||
|
#' każdy "słupek" jest taki sam
|
||
|
ggplot(data = diamonds) +
|
||
|
geom_bar(mapping = aes(x = cut, y = ..prop..))
|
||
|
ggplot(data = diamonds) +
|
||
|
geom_bar(mapping = aes(x = cut, fill = color, y = ..prop..))
|
||
|
|
||
|
# uzyliśmy group=1, aby nadpisać domysle grupowanie funcji geom_bar, które grupuje po x, czyli po cut,
|
||
|
# dlatego każdy słupek wyglądał identycznie, ponieważ powinniśmy w tym przypadku zgrupować po całym zbiorze, usunąć grupy.
|
||
|
# równie dobrze będzie działać group=2, albo group='abc'
|
||
|
|
||
|
ggplot(data = diamonds) +
|
||
|
geom_bar(mapping = aes(x = cut, fill = color, y = ..prop.., group=1))
|
||
|
|
||
|
|
||
|
|
||
|
#' # 3.8.1
|
||
|
#'
|
||
|
#' ## Zadanie 1
|
||
|
ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
|
||
|
geom_point()
|
||
|
|
||
|
#' ## Zadanie 2
|
||
|
#' nakładają się na siebie punkty i nie widać dobrze zagęszczenia
|
||
|
#' mozna poprawić przez dodanie posiiton='jitter'
|
||
|
|
||
|
ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
|
||
|
geom_point(position='jitter')
|
||
|
|
||
|
#' ## Zadanie 3
|
||
|
?geom_jitter
|
||
|
#' paremtry width i height
|
||
|
#'
|
||
|
ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
|
||
|
geom_jitter(position='jitter')
|
||
|
|
||
|
ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
|
||
|
geom_count(position='jitter')
|
||
|
|
||
|
#' obie funcje pokazują zagęszczenie, geom jitter, rozsuwa je aby było widać kazdy punkt.
|
||
|
#' geom count pokazuje zagęszczenie przez parametr size.
|
||
|
|
||
|
#' Zadanie 4
|
||
|
?geom_boxplot
|
||
|
|
||
|
#' domyślne dopasowanie dla geom_boxplot to 'dodge2
|
||
|
|
||
|
mpg %>%
|
||
|
ggplot(aes(x=cty, y=factor(cyl))) +
|
||
|
geom_boxplot()
|
||
|
|
||
|
#' # 3.9.1
|
||
|
#' ## Zadanie 1
|
||
|
|
||
|
mpg %>%
|
||
|
ggplot(aes(x=1, fill=class))+
|
||
|
geom_bar() +
|
||
|
coord_polar()
|
||
|
|
||
|
|
||
|
#' ## Zadanie 2
|
||
|
#' Funcjka labs, służy do dodania etykiet tetułu, opisy osi, i innnych tektów na wykresie
|
||
|
|
||
|
mpg %>%
|
||
|
ggplot(aes(x=1, fill=class))+
|
||
|
geom_bar() +
|
||
|
coord_polar() +
|
||
|
labs(title='Słupkotwy wykres skumulowany',
|
||
|
subtitle='O kordynatach polarnych',
|
||
|
y='Liczba',
|
||
|
x='Wartość dummy')
|
||
|
|
||
|
#' ## Zadanie 3
|
||
|
#' coord_map posiada więcej parametrów, np projectiom, parameters i orientation
|
||
|
#' coord_quickmap, nie posiada tych parametrów.
|
||
|
#' coord_map nada się do większych powirzchni świata, to jest pojekcją powierzchni sfery
|
||
|
#' na plaski 2D. coord_quickmap, nadaje się do map o małym rozmiarze i zachowuje proste linie.
|
||
|
|
||
|
#' ## Zadanie 4
|
||
|
#'
|
||
|
#'
|
||
|
|
||
|
ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
|
||
|
geom_point() +
|
||
|
geom_abline() +
|
||
|
coord_fixed()
|
||
|
|
||
|
#' Z wykresu wnioskujemy, że spalanie w mieście i na autostradzie są skorelowane.
|
||
|
#' Jeśli samochód pali dużo w mieście, to pali duzo na autostradzie i odwotnie.
|
||
|
#'
|
||
|
#' Linia ab, pokazuje tam prostą y=x, dzięki temu mamy odniesienie i dodatkowo możemy wywnioskować,
|
||
|
#' że na galonie paliwa, na autostradzie zawsze przejedziemy wiecej niż w mieście.
|
||
|
#'
|
||
|
#' Coord fixed, sprawia że wartości obu osi są w tej samej skali. Obie wartości to liczba przejechanych kilometrów, więc
|
||
|
#' ważne jest zachowanie jednolitej skali.
|
||
|
#'
|
||
|
#' Funckja abline() tworzy linię prostą y=Ax+B stąd nazawa AB Line. Domyslnie A=1, B=0 dlatego abline() to y=x
|