Open katarinabrilej opened 4 years ago
Pozdravljeni, zanima me, če je v poročilu še kaj, kar bi moral popraviti. Zanima me tudi, če je poleg grafov potrebna še analiza (torej da napišem kaj je razvidno iz grafov) in kako bi lahko razširil 2 grafa, ki sta zaradi legende zelo ozka, če je to možno. Hvala in lep pozdrav
Poleg grafov pripiši tudi opažanja. Pri grafih, ki sta zaradi legende ozka, lahko legendo prestaviš pod graf in se bosta razširila. Lahko pa tudi skrajšaš imena v legendi, recimo pri Nemčiji brez oklepaja. Pri teh dveh grafih lahko tudi razdeliš na dva dela, da posebej obravnavaš še države, ki so na dnu grafa in se v tem skupnem grafu ne ločijo med seboj. Prav tako poenoti naslove grafov (šumniki, velika začetnica). Dobro bi bilo dodati tudi napredno analizo (grafe napovedi). Za boljšo oceno pa lahko dodaš še shiny.
Kako bi najlažje spremenil ime Nemčije, saj ne najdem nobene funkcije, ki bi to omogočala?
V uvozu spremeniš ime v tabeli nocitve
:
nocitve$izvor_turistov[nocitve$izvor_turistov == "Germany (until 1990 former territory of the FRG)"] <- "Germany"
Lahko pa spremeniš tudi ime za prebivališče, v recimo hotel in kamp, pa ne bo več problema s preširoko legendo.
Zdaj sem začel delati še shiny, vendar pa mi kljub temu, da imam kodo zelo podobno primeru, ki smo ga gledali v šoli, ne najde datoteke iz uvoza podatkov (poskusil sem tudi s source, vendar mi jo nikakor ne najde). Opazil sem tudi, da na vzorčnem repozitoriju v nobeni datoteki ni na začetku source(), jaz pa imam to v vsaki datoteki, da pokličem funkcije iz prejšnje datoteke in me zanima, če je to narobe.
Poleg tega imam še vprašanje glede Binderja in sicer mi poganja zelo dolgo, potem pa mi sicer dela, vendar mi pri zemljevidu veliko več občin obarva, kot da ni podatka. Ko sem šel gledat tabelo občine sem potem videl, da ima težave s šumniki, zato mi je verjetno vse občine s šumniki pobarval sivo, čeprav je podatek za število nočitev zraven. Zanima me, če je to kakšna moja napaka, ali pa bo to delalo normalno, ko bom oddal nalogo.
Glede Shinyja, en primer kako izrišeš graf bi bil sledeč.
library(shiny)
shinyUI(fluidPage(
titlePanel("Nočitve po slovenskih občinah"),
tabPanel("Število nočitev",
sidebarPanel(
selectInput("drzava1", label = "Izberi drzavo",
choices = colnames(vse_nocitve)[2:3])),
mainPanel(plotOutput("obcine"))),
))
library(shiny)
shinyServer(function(input, output) {
output$obcine <- renderPlot({
graf.obcine <- ggplot(vse_nocitve[,c("leto",input$drzava1)]) + aes(x=leto, y = get(input$drzava1)) + geom_point()
print(graf.obcine)
})
})
Vendar je bolje, če izrišeš kak primer, ko imaš več izbire, ne samo nočitve za Slovenijo in Hrvaško (če imaš takšne podatke).
Gledesource
, tega ne potrebuješ za začetku vsake datoteke, ker potem v poročilu narediš source za vse te datoteke. Je pa uporabno zdaj, ko še delaš, da ti ni treba ročno pognati teh datotek.
Sem naredil za shiny tabelo občin in število nočitev v njih, samo še nekaj me zanima in sicer, kako bi spremenil nekatera imena občin, da bi se ujemala s tistimi na zemljevidu. Nekaj podobnega smo delali pri pouku, ampak mi pri taki funkciji zamenja nekatere kraje oz. jih zamakne (npr. podatke za Ljubljano ima zdaj Ljubno). Zamenjal bi, ker sumim, da mi nekatere kraje na zemljevidu obarva sivo, ker se razlikujejo v imenu (npr. Piran).
`obcine <- uvozi.obcine()
obcine_zem <- uvozi.zemljevid("http://baza.fmf.uni-lj.si/OB.zip", "OB", pot.zemljevida="OB", encoding="Windows-1250"); names(obcine_zem) primerjava <- data.frame(obcina.obcine=sort(unique(obcine$obcina)), obcina.zemljevid=sort(levels(obcine_zem$OB_UIME)), stringsAsFactors=FALSE) razlicne <- primerjava %>% filter(obcina.obcine != obcina.zemljevid)
obcine <- obcine %>% inner_join(primerjava, by=c("obcina"="obcina.obcine")) %>% mutate(obcina=factor(obcina.zemljevid)) %>% select(-obcina.zemljevid)`
Problem s šumniki se pojavi pri uvozu razpredelnice obcine
- glede na to, da jo uvažaš z read.csv
, bo potrebno dodati parameter fileEncoding="Windows-1250"
(sicer pa bi svetoval, da za uvoz raje uporabiš funkcijo read_csv
iz knjižnice readr
). Poleg tega sta v obcine.csv
odvečna znaka 0
pred imenom občine Mežica - svetujem, da ju odstraniš kar v podatkih.
Ko to popraviš, lahko s primerjavo imen občin v podatkih in zemljevidu (po vstavitvi presledkov okoli pomišljajev) opaziš, da se razlikujejo v prisotnosti dvojezičnih imen v podatkih (lahko odstraniš vse od /
naprej) in pa okrajšave Slov. v podatkih pri imenih dveh občin (v zemljevidu se pojavi celotna beseda Slovenskih). Ko to poenotiš, bi se morale prikazati vse občine.
Kar se tiče časa zaganjanja na Binderju, je lahko ta večji pri prvem poganjanju, saj se mora najprej prenesti osnovna slika (kar vzame večino časa) in nato zgraditi slika s projektom. Pri vnovičnem zaganjanju se lahko potem uporabi že prenesena slika (ali pa celo že zgrajena končna slika), zaradi česar je zaganjanje bistveno hitrejše.
Sem popravil uvoz (spregledal sem minimalno razliko v imenu funkcije) in preimenoval občine kar v datoteki uvoz, vendar pa mi zdaj javi napako v poročilu in mi ne izriše oz. obarva zemljevida.
Problem se pojavi, ker funkcija read_csv
(za razliko od read.csv
) znakovnih stolpcev ne spremeni v faktorje, kar pričakuješ pri obdelavi imen občin v zemljevidu. Glede na to, da zemljevid rišeš z ggplot
(in se zaradi tega imena po fortify
velikokrat ponovijo), bo učinkoviteje, če delaš s faktorji. Po preimenovanju občin lahko torej narediš še
obcine$obcina <- factor(obcine$obcina)
Obenem bi opozoril še na vrstico https://github.com/gapipust/APPR-2019-20/blob/06a3c1bb84008ce3682c01474a51aa5331b862ec/uvoz/projekt_uvoz.r#L65 Tukaj imaš pred imenom občine odvečen tabulator, zaradi česar se ti preimenovanje ne izvede.
Seveda pa nekateri podatki manjkajo, tako da bodo nekatere občine vseeno ostale sive.
Sem popravil in zdaj deluje normalno. Mislim, da je zdaj naloga pripravljena na predstavitev. Hvala za pomoč.
V redu, bom dodal povezavo na repozitorij za zagovore. Če se še nisi, se lahko z @alenFMF domeniš za termin zagovora. Če boš do takrat še kaj spreminjal, mi javi, da posodobim povezavo.
Svetoval bi še, da se znebiš eksponentne notacije na oseh nekaterih grafov (glej https://github.com/laravidmar/APPR-2019-20/issues/4#issuecomment-589603210), pri napovedih pa ločiš dejanske podatke od napovednih točk (npr. z drugačno barvo ali obliko točk) ter izrišeš model (uporabi geom_smooth
).
Grafe sem popravil, da sedaj prikazujejo številke v normalnem formatu. Glede prileganja ne vem če bi bilo smiselno uporabiti funkcijo geom_smooth, saj se premica praktično ne bi ločila od napovedi. To sem sicer tudi že tudi poskušal, vendar pa sem imel težave, ker sta na enem grafu "2 spremenljivki y" in zato geom_smooth ne ve, kateri naj se prilega. Glede obarvanja točk pa me zanima, ali je možno pol točk iz tabele obarvati z eno in pol z drugo barvo, saj je v tabeli tudi nekaj dejanskih podatkov. Zaenkrat še ni treba posodabljati povezave, saj bi najprej rad še to razrešil.
Dejanske podatke od napovedi lahko ločiš tako, da v razpredelnici dodaš vrsto, torej ali so podatki ali napoved, in potem v grafu spremeniš obliko točk glede na vrsto.
vse_slo_nocitve_pr$vrsta <- "podatki"
vse_slo_nocitve1$vrsta <- "napoved"
Enako za Hrvaško.
vse_hrv_nocitve_pr$vrsta <- "podatki"
vse_hrv_nocitve1$vrsta <- "napoved"
V geom_point dodaš parameter shape = vrsta
.
geom_point(aes(y=stevilo_slo, colour="Slovenija", shape = vrsta))
geom_point(aes(y=stevilo_hrv, colour="Hrvaška", shape = vrsta))
Pri graf9
je morda smiselno, da vključiš tudi leta pred 2016, saj si iz teh let naredil napoved (to pojasni zakaj je rdeča premica tako naraščajoča). Pri geom_smooth
enako kot pri geom_point
dodaš aes( y = stevilo_slo)
, tako bo vedel čemu se prilegati.
graf9 <- ggplot(vse_nocitve_pr, aes(x=leto)) + geom_point(aes(y=stevilo_slo, colour="Slovenija", shape = vrsta )) +
geom_point(aes(y=stevilo_hrv, colour="Hrvaška", shape = vrsta, group = "podatki")) +
scale_colour_manual("", values = c("Slovenija" = "blue", "Hrvaška" = "red")) +
ylab('predvideno število nocitev v prihodnosti') +
ggtitle('Napoved vseh nočitev za prihodnost') +
scale_x_continuous(breaks = 1*2010:2025) +
scale_y_continuous(labels=comma_format(big.mark="")) +
geom_smooth(method = "lm" ,aes(y = stevilo_slo,colour="Slovenija"))+
geom_smooth(method = "lm" ,aes(y = stevilo_hrv, colour="Hrvaška"))
Sem popravil in zdaj vse deluje (popravil sem tudi graf10 na enak način). Če lahko bi zdaj prosil, da se posodobi povezavo do repozitorija za ustne zagovore. Hvala
V redu, sem posodibil povezavo.
Če želiš v ponedeljek predstavljati projekt, prosim poskrbi, da boš imel delujoče poročilo. Poskrbi, da se poženejo tvoji programi (svojo kodo imaš v uvoz/projekt_uvoz.r torej ni treba uvažati source("uvoz/uvoz.r", encoding="UTF-8") iz vzorčnega repozitorija), preostali del iz vzorca pa pobriši.