class: center, middle, inverse, title-slide # PRIMJENJENA STATISTIKA ## Predavanje 3: Vizualizacija podataka ### Luka Sikic, PhD ### Fakultet hrvatskih studija |
Github PS
) --- class: inverse, middle # PREGLED PREDAVANJA --- layout: true # PREGLED PREDAVANJA --- <br> <br> <br> - Podrška za vizualizaciju <br> - Izrada jednostavnog grafikona <br> - Histogram <br> - Box-plot <br> - Prikaz korelacije <br> - Dijagram rasipanja <br> - Stupčasti grafikon --- layout:false class: middle, inverse # PODRŠKA ZA VIZUALIZACIJU --- layout:true # PODRŠKA ZA VIZUALIZACIJU --- <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/snowmap1-1.svg" style="display: block; margin: auto;" /> .footnote[[*]Prilagodba karte izbijanja kolere Johna Snow-a. Male točke označavaju incidenciju kolere, a velike lokaciju bundara. Najveći broj incidencija se dogodio na bunaru Broad St. Prikaz koristi podatke iz paketa `HistData`.] --- <br> <br> .hi[Sustavi za vizualizaciju podataka u R] 1. Tradicionalni pristup (paket `graphics`) 2. Rasterski pristup (paketi: `grid`, `lattice`, `ggplot_2`) <br> <br> <br> .hi[Neki primjeri vizualizacije podataka] 1. [Tableau](https://www.tableau.com/en-gb/learn/articles/best-beautiful-data-visualization-examples) 2. [TopDown2018](https://www.kdnuggets.com/2019/02/best-worst-data-visualization-2018.html) 3. [Vizualizacija u novinarstvu](https://www.coursera.org/learn/visualization-for-data-journalism) 4. [ggplot2](http://r-statistics.co/Top50-Ggplot2-Visualizations-MasterList-R-Code.html) 5. [CroEcon](http://croecon.contentio.biz/post/analiza-investicija-u-rh-u-posljednjih-15-godina/) --- layout:false class: middle, inverse # IZRADA JEDNOSTAVNOG GRAFIKONA --- layout:true # IZRADA JEDNOSTAVNOG GRAFIKONA --- ```r Fibonacci <- c( 1,1,2,3,5,8,13 ) # Stvori fibonacijev niz plot( Fibonacci ) # Prikaži niz grafički ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/unnamed-chunk-2-1.svg" style="display: block; margin: auto;" /> --- ```r # Prilagodi grafikon plot( x = Fibonacci, main = "Naslov grafikona", sub = "", xlab = "Naziv x-osi", ylab = "Naziv y-osi" ) ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/secondplot-1.svg" style="display: block; margin: auto;" /> --- ```r plot( x = Fibonacci, # Podatkovni skup main = "Prvih sedam Fibonacci brojeva", # Naslov xlab = "Pozicija u sekvenci", # x-os ylab = "Fibonacci broj", # y-os font.main = 1, cex.main = 1, font.axis = 2, col.lab = "gray50" ) ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/thirdplot-1.svg" style="display: block; margin: auto;" /> --- .hi[Različite vrste (`type`) grafikona:] ```r # Vektor argumenata ( `type()`) za izradu različitih vrsta grafikona tp <- c("p","o","h","l","b","s") Fibonacci <- c( 1,1,2,3,5,8,13 ) # Stvori Fibonacci niz # Definiraj "platno"za prikaz grafikona par(mfrow=c(2,3), mar=c(1,1,2,1), mai=c(0.2,0.1,0.3,0.1)) # Funkcija za izradu više grafikona for(i in tp){ plot(Fibonacci, # Podatci type = i, # Vrsta col=4, lwd=2, # Estetika main = paste0("type = '",i,"'"), # Naslov axes = FALSE, # Osi frame.plot = TRUE, # Okvir xlab = "", # x-os naziv ylab="") # y-os naziv } ``` --- .hi[Različite vrste (`type`) grafikona:] <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/unnamed-chunk-3-1.svg" style="display: block; margin: auto;" /> --- ```r # Dodatne prilagodbe na grafikonu plot(x = Fibonacci, # Podatci type = "b", # Vrsta grafikona col = "blue", # Boja pch = 19, # Veličina cex = 5, # Estetika lty = 2, # Vrsta linije lwd = 4 ) # Estetika ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/fifthplot-1.svg" style="display: block; margin: auto;" /> --- ```r plot( x = Fibonacci, # Podatci xaxt = "n", # Bez x-osi bty = "]", # Estetika las = 1 ) # Okreni tekst ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/sixthplot-1.svg" style="display: block; margin: auto;" /> --- layout:false class: middle, inverse # HISTOGRAMI --- layout:true # HISTOGRAMI --- ```r # Učitaj podatke load( "../Podatci/aflsmall.Rdata") hist(afl.margins) # Napravi osnovni histogram ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/hist1a-1.svg" style="display: block; margin: auto;" /> --- ```r # Histogram sa dodatnim argumentima; manje binova hist( x = afl.margins, breaks = 3 ) ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/hist1b-1.svg" style="display: block; margin: auto;" /> --- ```r # Histogram sa dodatnim argumentima; više binova hist( x = afl.margins, breaks = 0:116 ) ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/hist1c-1.svg" style="display: block; margin: auto;" /> --- <br> <br> <br> ```r # Uređeni histogram hist( x = afl.margins, main = "2010 AFL bodovi", # Naslov xlab = "Margin", # Naziv x-osi density = 10, # Zatamni angle = 40, # Kut zatamljenja border = "gray20", # Boja okvira col = "gray80", # Boja zatamnjenja labels = TRUE, # Dodaj frekvencije na nazive ylim = c(0,40) # Raspon y-osi ) ``` --- <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/hist2d-1.svg" style="display: block; margin: auto;" /> --- layout:false class: middle, inverse # BOXPLOT --- layout:true # BOXPLOT --- <br> <br> <br> <br> <br> ```r # Deskriptivna statistika za AFL pobjedničke bodove summary( afl.margins ) ``` ``` #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.00 12.75 30.50 35.30 50.50 116.00 ``` --- ```r load( "../Podatci/aflsmall.Rdata") #U čitaj podatke # Napravi boxplot boxplot( x = afl.margins ) ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/unnamed-chunk-5-1.svg" style="display: block; margin: auto;" /> --- <img src="../Foto/boxplot1_annotated.png" width="800" style="display: block; margin: auto;" /> --- <br> <br> <br> ```r load( "../Podatci/aflsmall.Rdata") # Učitaj podatke boxplot( x = afl.margins, # Podatci xlab = "AFL utakmice, 2010", # Naziv x-osi ylab = "Pobjednički bodovi", # Naziv y-osi border = "grey50", # Ublaži granice frame.plot = FALSE, # Bez okvira staplewex = 0, # Estetika whisklty = 1 # Prilagodba za whisker ) ``` --- <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/boxplot3b-1.svg" style="display: block; margin: auto;" /> --- <br> <br> <br> ```r library(lsr) # Učitaj paket rm(list = ls()) # Očisti radni prostor load(file.path("../Podatci/aflsmall2.Rdata")) # Učitaj podatke who( TRUE ) # Prvi pregled učitanih objekata ``` ``` #> -- Name -- -- Class -- -- Size -- #> afl2 data.frame 4296 x 2 #> $margin numeric 4296 #> $year numeric 4296 ``` --- <br> <br> <br> ```r head( afl2 ) # Pogledaj podatke ``` ``` #> margin year #> 1 33 1987 #> 2 59 1987 #> 3 45 1987 #> 4 91 1987 #> 5 39 1987 #> 6 1 1987 ``` --- ```r # Napravi Box Plot za svaku godinu boxplot(formula = margin ~ year, data = afl2) ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/unnamed-chunk-8-1.svg" style="display: block; margin: auto;" /> --- ```r boxplot( formula = margin ~ year, # the formula data = afl2, # the data set xlab = "AFL season", # x axis label ylab = "Winning Margin", # y axis label frame.plot = FALSE, # don't draw a frame staplewex = 0, # don't draw staples staplecol = "white", # (fixes a tiny display issue) boxwex = .75, # narrow the boxes slightly boxfill = "grey80", # lightly shade the boxes whisklty = 1, # solid line for whiskers whiskcol = "grey70", # dim the whiskers boxcol = "grey70", # dim the box borders outcol = "grey70", # dim the outliers outpch = 20, # outliers as solid dots outcex = .5, # shrink the outliers medlty = "blank", # no line for the medians medpch = 20, # instead, draw solid dots medlwd = 1.5 # make them larger ) ``` --- <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/multipleboxplots3-1.svg" style="display: block; margin: auto;" /> --- layout:false class: middle, inverse # DIJAGRAM RASIPANJA --- layout:true # DIJAGRAM RASIPANJA --- ```r load(file.path("../Podatci/parenthood.Rdata")) # Učitaj podatke plot( x = parenthood$dan.sleep, # Podatci za x-os y = parenthood$dan.grump # Podatci za y-os ) ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/scattera-1.svg" style="display: block; margin: auto;" /> --- ```r plot( x = parenthood$dan.sleep, # Podatci za x-os y = parenthood$dan.grump, # Podatci za y-os xlab = "Sati spavanja/roditelj", # Naziv x-osi ylab = "Raspoloženje (0-100)", # Naziv y-osi xlim = c(0,12), # Razmjer x-osi ylim = c(0,100), # Razmjer y-osi pch = 20, # Prilagodi veličinu točki col = "gray50", # Prilagodi boju frame.plot = FALSE # Makni okvir ) # Dodaj liniju lines( x = c(4,9.5), # Horizontalne točke y = c(93,37), # Vertikalne točke lwd = 2 # Širina linije ) ``` --- <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/scatterba-1.svg" style="display: block; margin: auto;" /> --- ```r # Koristi drugu funkciju za izradu dijagrama rasipanja. library(car) # Učitaj paket # Koristi funkciju `scatterplot()` scatterplot( dan.grump ~ dan.sleep, # Definiraj varijable data = parenthood, # Podatci smooth = FALSE # Bez (fitted) linije ) ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/scb-1.svg" style="display: block; margin: auto;" /> --- ```r # Napravi dijagram rasipanja za više od dvije varijable cor( x = parenthood ) # Korelacijska matrica ``` ``` #> dan.sleep baby.sleep dan.grump day #> dan.sleep 1.00000000 0.62794934 -0.90338404 -0.09840768 #> baby.sleep 0.62794934 1.00000000 -0.56596373 -0.01043394 #> dan.grump -0.90338404 -0.56596373 1.00000000 0.07647926 #> day -0.09840768 -0.01043394 0.07647926 1.00000000 ``` --- ```r # Drugi način izrade dijagrama rasipanja # Napravi dijagram rasipanja za više od dvije varijable pairs( formula = ~ dan.sleep + baby.sleep + dan.grump, # Definiraj varijable data = parenthood # Podatci ) ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/unnamed-chunk-10-1.svg" style="display: block; margin: auto;" /> --- layout:false class: middle, inverse # STUPČASTI GRAFIKONI --- layout:true # STUPČASTI GRAFIKONI --- <br> <br> <br> ```r load(file.path("../Podatci/aflsmall.Rdata")) # Učitaj podatke freq <- tabulate( afl.finalists ) # Tabuliraj podatke print( freq ) # Pregled podataka ``` ``` #> [1] 26 25 26 28 32 0 6 39 27 28 28 17 6 24 26 38 24 ``` --- <br> <br> <br> <br> ```r # Dodavanje naziva stupcima teams <- levels( afl.finalists ) # Stvori razine(nazive) print( teams ) # Pregled podataka ``` ``` #> [1] "Adelaide" "Brisbane" "Carlton" "Collingwood" #> [5] "Essendon" "Fitzroy" "Fremantle" "Geelong" #> [9] "Hawthorn" "Melbourne" "North Melbourne" "Port Adelaide" #> [13] "Richmond" "St Kilda" "Sydney" "West Coast" #> [17] "Western Bulldogs" ``` --- ```r barplot( height = freq ) # Alternativno samo `barplot( freq )` ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/unnamed-chunk-13-1.svg" style="display: block; margin: auto;" /> --- ```r # Dodaj nazive barplot( height = freq, names.arg = teams ) # Dodatni argument ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/unnamed-chunk-14-1.svg" style="display: block; margin: auto;" /> --- ```r # Prilagodbe na grafikonu barplot(height = freq, # Izaberi podatke names.arg = teams, # Dodaj nazive las = 2) # Zakreni nazive ``` <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/unnamed-chunk-15-1.svg" style="display: block; margin: auto;" /> --- ```r # Još prilagodbi old <- par( no.readonly=TRUE ) # Prilagodba par( mar = c( 10.1, 4.1, 4.1, 2.1) ) # Prilagodba # Dodatne prilagodbe barplot( height = freq, # Izaberi podatke names.arg = teams, # Dodaj nazive las=2, # Zakreni nazive ylab = "Broj finalnih utakmica", # Naziv y-osi main = "Finlne utakmice, 1987-2010", # Naslov grafikona density = 10, # Gustoća zasjenjenja angle = 20) # Kut ``` --- <img src="04_GRAFIKONI_I_VIZUALIZACIJE_xar_files/figure-html/unnamed-chunk-17-1.svg" style="display: block; margin: auto;" /> --- layout:false class: middle, inverse # HVALA NA PAŽNJI! <html><div style='float:left'></div><hr color='#EB811B' size=1px width=796px></html> (Sljedeće predavanje: Statističke distribucije)