janpristovnik / APPR-2017

Repozitorij z gradivi za predmet Analiza podatkov s programom R v študijskem letu 2016/17
MIT License
0 stars 0 forks source link

Tretji graf #6

Open janpristovnik opened 7 years ago

janpristovnik commented 7 years ago

Ena od idej za nadaljno analizo na mojem projektu je da probam poiskati trende pri različnih državah, ki veliko vlagajo v izobraževanje. Zato sem hotel narediti graf treh držav (Denmark, Iceland, Belgium), za leta 2013,2014,2015 kjer bi za vsako leto in vsako državo prikazovalo število končanih diplomskih, magisterskih in pa doktorskih študijev. Iz večjih tabel sem že potegnil podatke o število končanih nalog za te izbrane države in število prebivalcev teh držav, saj bi rad naredil glede na prebivalca. V prejšnih grafih sem imel na x-osi države, na y - osi nek podatek npr. delež bdp-ja namenjenega šolstvu , grafi pa so bili različno obarvani za različna leta. V tem grafu pa bi potreboval še npr. za Denmark na x -osi bi pisalo Denmark, potem pa bi pri npr. letu 2013 imel 3 stolpce namesto enega kjer bi en stolpec predstavljal število diplomskih, drugi število magisterskih in tretji stolpec število doktorskih študijev. Sem poizkušal vendar mi ni uspelo združiti vsega skupaj.

jaanos commented 7 years ago

Če prav razumem, bi rad za vsako državo imel 3 skupine treh stolpcev? To bi bilo precej nepregledno, pa tudi ne vem, kako bi se to prikazalo na enem grafu. Bolje bo, če se omejiš samo na eno leto, npr.

ggplot(zdruzeno_tretji_graf %>% filter(Leto == 2013),
       aes(x = Drzava, y = Stevilo_koncanih/Stevilo_preb, fill = Stopnja_izobrazbe)) +
  geom_col(position = "dodge")

Če ti ne deluje geom_col, lahko uporabiš geom_bar s parametrom stat = "identity".

Za možnost prikaza podatkov čez več let lahko uporabiš Shiny - potem lahko leto daš kot vhod in zgornji graf prikažeš za izbrano leto.

janpristovnik commented 7 years ago

Sem se lotil shinya na zgornjem grafu. Dodal sem še države z najnižjim deležem BDP-ja namenjenega za šolstvo. Vendar imam problem s shinyem. Hotel sem narediti tako, da bi lahko izbiral države, leto in pa katero od končanih diplomskih, magisterskih oz. doktorskih števil bo pokazalo na grafu. Ali bi moral vse te tri stvari dati kot vhodni podatek?

Kaj pa potem, dam pod radioButtons? Tam sem potem probal dati stopnjo izobrazbe vendar po mojem to ne bo v redu, ...

jaanos commented 7 years ago

radioButtons uporabiš za izbiro samo ene možnosti hkrati. Glede na to, da želiš primerjati različne stopnje, raje uporabi checkboxGroupInput. To je v redu, dokler je možnosti malo - za države raje uporabi selectInput s parametrom multiple = TRUE. V obeh primerih dobiš v strežnik vektor z izbranimi možnostmi.

Sicer bi bilo čisto smiselno, da stopnje izobrazbe ne daš kot vhodni podatek, pač pa enostavno vsakič prikažeš vse tri.

janpristovnik commented 7 years ago

Kako pa se naredi to, da jih ne dam kot vhodni podatek temveč vedno prikažem vse tri? Pri državah pa že imam selectInput s parametrtom multiple = TRUE.

jaanos commented 7 years ago

Če imaš v podatkih že vse stopnje izobrazbe in po tem ne filtriraš (seveda potem tudi v Shinyju ne daš te opcije), se bodo prikazale v grafu (kot zgoraj, uporabi fill = Stopnja_izobrazbe, da ti jih loči po barvah).

janpristovnik commented 7 years ago

Sedaj sem probal narediti kot ste rekli, vendar ko zaženem Source, se nič ne spremeni, noben graf se ne pokaže, vendar tudi nobene napake ne javi.

jaanos commented 7 years ago

Kodo za Shiny vključi v programa server.R in ui.R v mapi shiny - v teh datotekah se bo namesto Source pojavil gumb Run App, s katerim zaženeš aplikacijo. V poročilo vključiš aplikacijo tako, da na želeno mesto dodaš blok kode

    ```{r shiny, echo = FALSE}
    shinyAppDir("shiny", options=list(width="100%", height=600))

(brez začetnega zamika) - seveda lahko po potrebi še prilagodiš višino.
janpristovnik commented 7 years ago

Sem storil kot ste rekli, vendar tudi ko tukaj zaženem Run App ne deluje kot bi moralo, saj ne nariše grafov in dobivam spodnja obvestila: Warning: Error in filter_impl: incorrect length (0), expecting: 54

Warning: Error in +: invalid argument to unary operator Stack trace (innermost first)

jaanos commented 7 years ago

V vrstici, kjer rišeš graf, imaš na koncu dva plusa - enega pobriši. Da ti bo graf izrisalo, na koncu dodaj še vrstico g3, ali pa grafa sploh ne shrani v spremenljivko (začni vrstico z ggplot). Ker lahko izbereš več držav, v filtru uporabi pogoj Drzava %in% input$Drzava.

janpristovnik commented 7 years ago

Sem vse popravil vendar vseeno ne izriše grafa, sedaj dobim napako "Warning: Error in match.arg: object 'Leto' not found". Ne vem kaj je narobe, saj je koda ista kot pri Drzavi, tam pa deluje.

janpristovnik commented 7 years ago

Sem uspel popraviti. Imel sem napako pri filtriranju. Sedaj dela.