nastja88 / 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

slovar #6

Closed nastja88 closed 7 years ago

nastja88 commented 7 years ago

Pozdravljeni!

Spodnja koda mi pravilno izriše graf:

mala <- filter(bolezni, bolezen == "malarija") %>% filter(drzava == "Ghana" | drzava == "India" | drzava == "Mozambique" | drzava == "Uganda" | drzava == "United Republic of Tanzania") mala$bolezen <- NULL ggplot(mala) + aes(x = leto, y = pojavnost / 1000000, group = drzava, color = drzava) + geom_point() + geom_line() + theme_bw() + labs(y = "število obolelih za malarijo (v milijonih)")

Želim pa nadomestiti angleška imena držav v legendi s slovenskimi, zato sem poskusila uporabiti slovar, vendar mi to ne deluje.

slovar <- c("Ghana" = "Gana", "India" = "Indija", "Mozambique" = "Mozambik", "Uganda" = "Uganda", "United Republic of Tanzania" = "Tanzanija") mala <- filter(bolezni, bolezen == "malarija") %>% filter(drzava == "Ghana" | drzava == "India" | drzava == "Mozambique" | drzava == "Uganda" | drzava == "United Republic of Tanzania") mala$bolezen <- NULL ggplot(mala) + aes(x = leto, y = pojavnost / 1000000, group = drzava, color = slovar[drzava]) + geom_point() + geom_line() + theme_bw() + labs(y = "število obolelih za malarijo (v milijonih)")

jaanos commented 7 years ago

Problem je v tem, da je stolpec drzava faktor, tako da ga bo potrebno pretvoriti v nize. Namesto slovar[drzava] torej uporabi slovar[parse_character(drzava)]. Da spremeniš naslov legende, grafu prištej še guides(color = guide_legend(title = "Država")).

Mimogrede, opažam, da si iz repozitorija pobrisala datoteke .Rproj, kar pomeni, da projekta kot takega več ne bo mogoče odpreti v RStudiu. Prosim te, da vsaj eno od teh datotek vrneš - lahko jo skopiraš kar iz vzorčnega repozitorija, ali pa v RStudiu klikni desno zgoraj, izberi New Project..., nato pa Existing Directory in najdi mapo, kjer imaš svoj projekt. To bo ustvarilo novo datoteko .Rproj, ki jo vključi v commit (pri tem se prepričaj, da imaš pod Tools / Project Options... / Code Editing / Text encoding izbrano UTF-8).

jaanos commented 7 years ago

Še nekaj: opažam, da je stolpec leto v razpredelnici bolezni faktor, zato se na grafu prikažejo vsa leta ne glede na prostor, ki je na voljo. Da se temu izogneš, opravi pretvorbo v števila (parse_number) stolpcev leto v razpredelnicah worldbank in alkohol, potem ko ju pretvoriš z melt.

nastja88 commented 7 years ago

Hvala, sem popravila.

Je to z datoteko .Rproj sedaj vredu?

nastja88 commented 7 years ago

Sedaj pa mi v poročilu izriše prazen prvi graf.

Zanima me še, kaj pomeni tole opozorilo:

Warning messages: 1: In postDraw.grob(x) : reached elapsed time limit

jaanos commented 7 years ago

Datoteka .Rproj je v redu.

Sedaj, ko si pri alkoholu leta pretvorila v števila, dodatna obdelava razpredelnice alko (na koncu vizualizacija.r) ni več potrebna. Lahko torej pobrišeš vrstici, kjer urejaš razpredelnico alko in leta pretvarjaš v števila, pa se bo graf izrisal.

Glede opozorila nisem prepričan, očitno pa je izrisovanje nekega grafa (verjetno zemljevida) trajalo predolgo. Ali ti to vsakič izpiše?

nastja88 commented 7 years ago

Aha hvala.

Ne, samo takrat mi je.

Sedaj imam težavo s shiny-em. Če spremenim leto, mi ne posodobi zemljevida. Dodala sem gumb, s katerim potrdiš izbiro preden ti ponovno posodobi zemljevid, vendar ne vem kako ga naj potem uporabim v datoteki server.R.

jaanos commented 7 years ago

Za leto uporabljaš spremenljivko n, ki pa je nikjer ne definiraš (pravzaprav ima dplyr svojo funkcijo n). Da ti bo filtriralo po letu, jo nadomesti z input$leto. Gumba Potrdi niti ne potrebuješ, saj se bo zemljevid osvežil takoj, ko zamenjaš izbiro, od katere je odvisen.

nastja88 commented 7 years ago

Hvala, sem popravila.

Zanima me, kako dodam povezavo v shiny-ju. Pri vsaki bolezni imam namreč še kratek opis in bi rada dodala vir. Poskusila sem dodati besedilo in nato uporabiti a(href=link, "Povzeto po"), vendar ne deluje.

Poleg tega še ne vem, zakaj mi v nizu pri opisih bolezni ne upošteva znakov za novo vrstico oz. kako naj to popravim.

jaanos commented 7 years ago

Ker je a že Shinyjev gradnik, ga ne moreš uporabiti v textOutput. Namesto tega v server.R pri output$povezava nadomesto renderText z renderUI, v ui.R pa potem uporabi uiOutput, da prikažeš povezavo. Seveda bo bolj smiselno, če prikažeš sam URL (ali pa ime vira), kot če je besedilo Povzeto po povezava (to je lahko pred samo povezavo).

Da upoštevaš prelome vrstic, bo najbolje, da tudi za opis uporabiš renderUI in uiOutput. Potem lahko opise podajaš tako:

besedilo <- c("Prva vrstica",
              "Druga vrstica",
              "Tretja vrstica")

Končno obliko lahko potem dobiš z

besedilo %>% lapply(. %>% list(br())) %>% p()

- za vsko vrstico torej dodaš prelom vrstice (br()), vse skupaj pa spraviš v odstavek (p()).

nastja88 commented 7 years ago

Hvala. Zanima me še, zakaj mi v shiny-ju ne prikaže naslovov legend.

Kaj moram še narediti, da bo projekt pripravljen na oddajo?

jaanos commented 7 years ago

Pri prikazu obeh zemljevidov na koncu prišteješ

guides(fill=guide_legend(title=NULL), color="none")

Ker je title nastavljen na NULL, se ti naslov ne prikaže. Da ne bo potrebno skrivati legende za color, premakni color = "black" ven iz aes kot parameter k geom_polygon (tako bodo meje dejansko črne) - potem lahko zgornjo vrstico kar izpustiš. Kjer podajaš naslov, lahko namesto guide_legend uporabiš guide_colorbar, da ti prikaže barvno lestvico.

Svetoval bi še, da imaš v Shiny aplikaciji zavihka enega zraven drugega - v ui.R naj bosta oba tabPanel znotraj istega tabsetPanel. Aplikacijo tudi nekoliko povišaj, da ne bo viden drsnik - pri shinyAppDir povečaj vrednost height npr. na 1500 (lahko pa prvi zavihek razbiješ na dva, da aplikacije ne bo tako visoka - pri tem pazi, da imajo vnosni elementi različna imena, če jih boš podvojila).

nastja88 commented 7 years ago

Prvi zavihek sem razbila na dva dela, zato sem tudi zmanjšala višino, da sem odstranila prazen prostor. Kako pa dodam besedilo Povzeto po pred povezavo (v shiny-ju)? Sicer pa mislim, da je projekt sedaj končan.

jaanos commented 7 years ago

Najlažje bo, če narediš odstavek z besedilom in povezavo:

p("Povzeto po:", a(href=link, link))

Dodal bom povezavo na repozitorij za zagovore, tako da se lahko s profesorjem domeniš za termin zagovora. Če boš še kaj spreminjala, mi javi, da posodobim povezavo.

nastja88 commented 7 years ago

Dodala sem še nekaj zadnjih popravkov, zato vas prosim, da posodobite povezavo.

Najlepša hvala za vso pomoč pri projektu.

jaanos commented 7 years ago

V redu, sem posodobil.