# 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 , 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