library(tidyverse)
## ── Attaching packages ───────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.0 ✓ purrr 0.3.3
## ✓ tibble 2.1.3 ✓ dplyr 0.8.5
## ✓ tidyr 1.0.2 ✓ stringr 1.4.0
## ✓ readr 1.3.1 ✓ forcats 0.5.0
## ── Conflicts ──────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
airquality %>%
select(Ozone, Solar.R, Wind, Temp) %>%
filter(Ozone>80)
## Ozone Solar.R Wind Temp
## 1 115 223 5.7 79
## 2 135 269 4.1 84
## 3 97 267 6.3 92
## 4 97 272 5.7 92
## 5 85 175 7.4 89
## 6 108 223 8.0 85
## 7 82 213 7.4 88
## 8 122 255 4.0 89
## 9 89 229 10.3 90
## 10 110 207 8.0 90
## 11 168 238 3.4 81
## 12 118 225 2.3 94
## 13 84 237 6.3 96
## 14 85 188 6.3 94
## 15 96 167 6.9 91
## 16 91 189 4.6 93
#install.packages('weathermetrics')
library(weathermetrics)
airquality %>%
mutate(TempC=fahrenheit.to.celsius(Temp))
## Ozone Solar.R Wind Temp Month Day TempC
## 1 41 190 7.4 67 5 1 19.44
## 2 36 118 8.0 72 5 2 22.22
## 3 12 149 12.6 74 5 3 23.33
## 4 18 313 11.5 62 5 4 16.67
## 5 NA NA 14.3 56 5 5 13.33
## 6 28 NA 14.9 66 5 6 18.89
## 7 23 299 8.6 65 5 7 18.33
## 8 19 99 13.8 59 5 8 15.00
## 9 8 19 20.1 61 5 9 16.11
## 10 NA 194 8.6 69 5 10 20.56
## 11 7 NA 6.9 74 5 11 23.33
## 12 16 256 9.7 69 5 12 20.56
## 13 11 290 9.2 66 5 13 18.89
## 14 14 274 10.9 68 5 14 20.00
## 15 18 65 13.2 58 5 15 14.44
## 16 14 334 11.5 64 5 16 17.78
## 17 34 307 12.0 66 5 17 18.89
## 18 6 78 18.4 57 5 18 13.89
## 19 30 322 11.5 68 5 19 20.00
## 20 11 44 9.7 62 5 20 16.67
## 21 1 8 9.7 59 5 21 15.00
## 22 11 320 16.6 73 5 22 22.78
## 23 4 25 9.7 61 5 23 16.11
## 24 32 92 12.0 61 5 24 16.11
## 25 NA 66 16.6 57 5 25 13.89
## 26 NA 266 14.9 58 5 26 14.44
## 27 NA NA 8.0 57 5 27 13.89
## 28 23 13 12.0 67 5 28 19.44
## 29 45 252 14.9 81 5 29 27.22
## 30 115 223 5.7 79 5 30 26.11
## 31 37 279 7.4 76 5 31 24.44
## 32 NA 286 8.6 78 6 1 25.56
## 33 NA 287 9.7 74 6 2 23.33
## 34 NA 242 16.1 67 6 3 19.44
## 35 NA 186 9.2 84 6 4 28.89
## 36 NA 220 8.6 85 6 5 29.44
## 37 NA 264 14.3 79 6 6 26.11
## 38 29 127 9.7 82 6 7 27.78
## 39 NA 273 6.9 87 6 8 30.56
## 40 71 291 13.8 90 6 9 32.22
## 41 39 323 11.5 87 6 10 30.56
## 42 NA 259 10.9 93 6 11 33.89
## 43 NA 250 9.2 92 6 12 33.33
## 44 23 148 8.0 82 6 13 27.78
## 45 NA 332 13.8 80 6 14 26.67
## 46 NA 322 11.5 79 6 15 26.11
## 47 21 191 14.9 77 6 16 25.00
## 48 37 284 20.7 72 6 17 22.22
## 49 20 37 9.2 65 6 18 18.33
## 50 12 120 11.5 73 6 19 22.78
## 51 13 137 10.3 76 6 20 24.44
## 52 NA 150 6.3 77 6 21 25.00
## 53 NA 59 1.7 76 6 22 24.44
## 54 NA 91 4.6 76 6 23 24.44
## 55 NA 250 6.3 76 6 24 24.44
## 56 NA 135 8.0 75 6 25 23.89
## 57 NA 127 8.0 78 6 26 25.56
## 58 NA 47 10.3 73 6 27 22.78
## 59 NA 98 11.5 80 6 28 26.67
## 60 NA 31 14.9 77 6 29 25.00
## 61 NA 138 8.0 83 6 30 28.33
## 62 135 269 4.1 84 7 1 28.89
## 63 49 248 9.2 85 7 2 29.44
## 64 32 236 9.2 81 7 3 27.22
## 65 NA 101 10.9 84 7 4 28.89
## 66 64 175 4.6 83 7 5 28.33
## 67 40 314 10.9 83 7 6 28.33
## 68 77 276 5.1 88 7 7 31.11
## 69 97 267 6.3 92 7 8 33.33
## 70 97 272 5.7 92 7 9 33.33
## 71 85 175 7.4 89 7 10 31.67
## 72 NA 139 8.6 82 7 11 27.78
## 73 10 264 14.3 73 7 12 22.78
## 74 27 175 14.9 81 7 13 27.22
## 75 NA 291 14.9 91 7 14 32.78
## 76 7 48 14.3 80 7 15 26.67
## 77 48 260 6.9 81 7 16 27.22
## 78 35 274 10.3 82 7 17 27.78
## 79 61 285 6.3 84 7 18 28.89
## 80 79 187 5.1 87 7 19 30.56
## 81 63 220 11.5 85 7 20 29.44
## 82 16 7 6.9 74 7 21 23.33
## 83 NA 258 9.7 81 7 22 27.22
## 84 NA 295 11.5 82 7 23 27.78
## 85 80 294 8.6 86 7 24 30.00
## 86 108 223 8.0 85 7 25 29.44
## 87 20 81 8.6 82 7 26 27.78
## 88 52 82 12.0 86 7 27 30.00
## 89 82 213 7.4 88 7 28 31.11
## 90 50 275 7.4 86 7 29 30.00
## 91 64 253 7.4 83 7 30 28.33
## 92 59 254 9.2 81 7 31 27.22
## 93 39 83 6.9 81 8 1 27.22
## 94 9 24 13.8 81 8 2 27.22
## 95 16 77 7.4 82 8 3 27.78
## 96 78 NA 6.9 86 8 4 30.00
## 97 35 NA 7.4 85 8 5 29.44
## 98 66 NA 4.6 87 8 6 30.56
## 99 122 255 4.0 89 8 7 31.67
## 100 89 229 10.3 90 8 8 32.22
## 101 110 207 8.0 90 8 9 32.22
## 102 NA 222 8.6 92 8 10 33.33
## 103 NA 137 11.5 86 8 11 30.00
## 104 44 192 11.5 86 8 12 30.00
## 105 28 273 11.5 82 8 13 27.78
## 106 65 157 9.7 80 8 14 26.67
## 107 NA 64 11.5 79 8 15 26.11
## 108 22 71 10.3 77 8 16 25.00
## 109 59 51 6.3 79 8 17 26.11
## 110 23 115 7.4 76 8 18 24.44
## 111 31 244 10.9 78 8 19 25.56
## 112 44 190 10.3 78 8 20 25.56
## 113 21 259 15.5 77 8 21 25.00
## 114 9 36 14.3 72 8 22 22.22
## 115 NA 255 12.6 75 8 23 23.89
## 116 45 212 9.7 79 8 24 26.11
## 117 168 238 3.4 81 8 25 27.22
## 118 73 215 8.0 86 8 26 30.00
## 119 NA 153 5.7 88 8 27 31.11
## 120 76 203 9.7 97 8 28 36.11
## 121 118 225 2.3 94 8 29 34.44
## 122 84 237 6.3 96 8 30 35.56
## 123 85 188 6.3 94 8 31 34.44
## 124 96 167 6.9 91 9 1 32.78
## 125 78 197 5.1 92 9 2 33.33
## 126 73 183 2.8 93 9 3 33.89
## 127 91 189 4.6 93 9 4 33.89
## 128 47 95 7.4 87 9 5 30.56
## 129 32 92 15.5 84 9 6 28.89
## 130 20 252 10.9 80 9 7 26.67
## 131 23 220 10.3 78 9 8 25.56
## 132 21 230 10.9 75 9 9 23.89
## 133 24 259 9.7 73 9 10 22.78
## 134 44 236 14.9 81 9 11 27.22
## 135 21 259 15.5 76 9 12 24.44
## 136 28 238 6.3 77 9 13 25.00
## 137 9 24 10.9 71 9 14 21.67
## 138 13 112 11.5 71 9 15 21.67
## 139 46 237 6.9 78 9 16 25.56
## 140 18 224 13.8 67 9 17 19.44
## 141 13 27 10.3 76 9 18 24.44
## 142 24 238 10.3 68 9 19 20.00
## 143 16 201 8.0 82 9 20 27.78
## 144 13 238 12.6 64 9 21 17.78
## 145 23 14 9.2 71 9 22 21.67
## 146 36 139 10.3 81 9 23 27.22
## 147 7 49 10.3 69 9 24 20.56
## 148 14 20 16.6 63 9 25 17.22
## 149 30 193 6.9 70 9 26 21.11
## 150 NA 145 13.2 77 9 27 25.00
## 151 14 191 14.3 75 9 28 23.89
## 152 18 131 8.0 76 9 29 24.44
## 153 20 223 11.5 68 9 30 20.00
as_tibble(airquality)
## # A tibble: 153 x 6
## Ozone Solar.R Wind Temp Month Day
## <int> <int> <dbl> <int> <int> <int>
## 1 41 190 7.4 67 5 1
## 2 36 118 8 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
## 7 23 299 8.6 65 5 7
## 8 19 99 13.8 59 5 8
## 9 8 19 20.1 61 5 9
## 10 NA 194 8.6 69 5 10
## # … with 143 more rows
tibble(litery=letters[6:11],
miesiace=month.name[1:6])
## # A tibble: 6 x 2
## litery miesiace
## <chr> <chr>
## 1 f January
## 2 g February
## 3 h March
## 4 i April
## 5 j May
## 6 k June
ggplot(data=mpg)
Co widzisz? Szare. puste pole ## Zadanie 2
as_tibble(mtcars)
## # A tibble: 32 x 11
## mpg cyl disp hp drat wt qsec vs am gear carb
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
## 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
## 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
## 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
## 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
## 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
## 7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
## 8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
## 9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2
## 10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4
## # … with 22 more rows
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()
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")
mpg
## # A tibble: 234 x 11
## manufacturer model displ year cyl trans drv cty hwy fl class
## <chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
## 1 audi a4 1.8 1999 4 auto(l… f 18 29 p comp…
## 2 audi a4 1.8 1999 4 manual… f 21 29 p comp…
## 3 audi a4 2 2008 4 manual… f 20 31 p comp…
## 4 audi a4 2 2008 4 auto(a… f 21 30 p comp…
## 5 audi a4 2.8 1999 6 auto(l… f 16 26 p comp…
## 6 audi a4 2.8 1999 6 manual… f 18 26 p comp…
## 7 audi a4 3.1 2008 6 auto(a… f 18 27 p comp…
## 8 audi a4 quat… 1.8 1999 4 manual… 4 18 26 p comp…
## 9 audi a4 quat… 1.8 1999 4 auto(l… 4 16 25 p comp…
## 10 audi a4 quat… 2 2008 4 manual… 4 20 28 p comp…
## # … with 224 more rows
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
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
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)
## # A tibble: 196 x 12
## manufacturer model displ year cyl trans drv cty hwy fl class
## <chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
## 1 audi a4 1.8 1999 4 auto… f 18 29 p comp…
## 2 audi a4 1.8 1999 4 manu… f 21 29 p comp…
## 3 audi a4 2 2008 4 manu… f 20 31 p comp…
## 4 audi a4 2 2008 4 auto… f 21 30 p comp…
## 5 audi a4 2.8 1999 6 auto… f 16 26 p comp…
## 6 audi a4 2.8 1999 6 manu… f 18 26 p comp…
## 7 audi a4 3.1 2008 6 auto… f 18 27 p comp…
## 8 audi a4 q… 1.8 1999 4 manu… 4 18 26 p comp…
## 9 audi a4 q… 1.8 1999 4 auto… 4 16 25 p comp…
## 10 audi a4 q… 2 2008 4 manu… 4 20 28 p comp…
## # … with 186 more rows, and 1 more variable: is_less_than_5 <lgl>
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)
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)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
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()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
ggplot() +
geom_point(data = mpg, mapping = aes(x = displ, y = hwy)) +
geom_smooth(data = mpg, mapping = aes(x = displ, y = hwy))
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Wykres 1
mpg %>%
ggplot(aes(x=displ, y=hwy)) +
geom_point() +
geom_smooth(se=FALSE)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Wykres 2
mpg %>%
ggplot(aes(x=displ, y=hwy, group=drv)) +
geom_point() +
geom_smooth(se=FALSE)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Wykres 3
mpg %>%
ggplot(aes(x=displ, y=hwy, color=drv)) +
geom_point() +
geom_smooth(se=FALSE)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Wykres 4
mpg %>%
ggplot(aes(x=displ, y=hwy)) +
geom_point(aes(color=drv)) +
geom_smooth(se=FALSE)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Wykres 5
mpg %>%
ggplot(aes(x=displ, y=hwy)) +
geom_point(aes(color=drv)) +
geom_smooth(aes(linetype=drv), se=FALSE)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Wykres 6
mpg %>%
ggplot(aes(x=displ, y=hwy)) +
geom_point(aes(fill=drv), shape=21, stroke=2, color='white', size=2)
# 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')
## No summary function supplied, defaulting to `mean_se()`
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
?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
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))
ggplot(data = mpg, mapping = aes(x = cty, y = hwy)) +
geom_point()
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')
?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()