melamalej / APPR-2018-19

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

Končan projekt. #4

Open melamalej opened 5 years ago

melamalej commented 5 years ago

Mislim, da je moj projekt pripravljen za oddajo.

MarvinHerzog commented 5 years ago

Par stvari:

Razen tega zgleda poročilo v redu. Ko boš zaključila, komentiraj pod tale issue, da dodamo projekt v repozitorij za predstavitve.

melamalej commented 5 years ago

Popravila sem kar sem znala - decimalni zapis leta na grafu ne znam popraviti. Pojavita se mi dve težavi:

MarvinHerzog commented 5 years ago
melamalej commented 5 years ago

Zdaj sem vse popravila razen točke :

Mislim da se nekaj ne ujema. Sem probala popraviti ampak mi ne uspe. Prosim za kakšen namig.

MarvinHerzog commented 5 years ago

V primeru, da imaš težave z barvno skalo na legendi, je težava v logaritemski transformaciji. Imaš dva načina, kako se tega lotiti. Lažji je ta, da odstraniš del s scale_fill_gradientn. Potem boš dobila tak klasičen modro obarvan zemljevid s sicer pravilnimi oznakami. image Po drugi strani morda je morda smiselno uvesti logaritemsko skalo, glede na to da osrednjeslovenska regija tako izstopa po vrednosti. Potem lahko prilagodiš tvoj originalen zemljevid nekako tako:

logmin=log(min(prihodek_2016$Skupni_prihodek),10)
logmax=log(max(prihodek_2016$Skupni_prihodek),10)
mybreaks=round(10^seq(logmin,logmax,(logmax-logmin)/4)/1000000,1)

zemljevid2 <- ggplot(left_join(zemljevid, prihodek_2016, by = c("NAME_1"='Regija'))) +
  geom_polygon(aes(x = long, y = lat, group = group, fill = Skupni_prihodek/1000000)) +
  scale_fill_gradientn(colours = terrain.colors(10), trans = "log10",breaks=mybreaks,limits=c(mybreaks[1]-0.2,mybreaks[5]+0.2))+
  labs(fill="Skupni prihodek v mil. Eur")
zemljevid2

Tukaj posebej definiram zaporedje oznak, ki jih želim imeti na legendi. Najprej ustvarim zaporedje v logaritemski skali od minimuma do maksimuma podatkov, nato jih z inverzom spravim spet v prvotne enote. Tako dobljeno zaporedje nato podam kot parametra breaks (vrednosti oznak) in limits (min in max vrednost barvne skale). Mimogrede sem še pretvoril osnovno enoto v milijon evrov. Rezultat zgleda nekako tako:

image

Kar se tiče barv je pa stvar okusa, ampak precej možnosti se ti odpre z nastavljanjem low in high parametrov. Ob tem moraš spremeniti scale_fill_gradientn v scale_fill_gradient

zemljevid2 <- ggplot(left_join(zemljevid, prihodek_2016, by = c("NAME_1"='Regija'))) +
  geom_polygon(aes(x = long, y = lat, group = group, fill = Skupni_prihodek/1000000)) +
  scale_fill_gradient(low="red",high="green", trans = "log10",breaks=mybreaks,limits=c(mybreaks[1]-0.2,mybreaks[5]+0.2))+
  labs(fill="Skupni prihodek v mil. Eur")
zemljevid2

image

Opaziš lahko, da v mojem primeru ne izriše Notranjsko-kraške regije. Težava je v encodingu. Če pogledaš tole:

> prihodek_2016$Regija[!(prihodek_2016$Regija %in% zemljevid$NAME_1)]
[1] Notranjsko-kraška
13 Levels: Gorenjska Goriška Jugovzhodna Slovenija Koroška Notranjsko-kraška Notranjsko-kraška ... Zasavska

V tretji vrstici sta dva nivoja za Notrajnsko-kraško, ki zgledata identična. V obeh join objektih se prav tako nahaja Notrajsko-kraška, zato bi jih moralo združiti, vendar jih ne združi zaradi neujemanja v encodingu. Pri meni je delovalo, da sem v tej vrstici

Regije$Regija[Regije$Regija=="Primorsko-notranjska"] <- "Notranjsko-kraška"

kar uporabil vrednost, ki je že v tabeli zemljevid.

Regije$Regija[Regije$Regija=="Primorsko-notranjska"]  <- unique(grep("Notranj",zemljevid$NAME_1,value = T))

image Tako mi izriše cel zemljevid. Je pa encoding ena stvar, ki pogosto na različnih sistemih povzroča različne težave. Dela mi lokalno in na Binderju, v primeru, da pa kaj ne bo delovalo, priloži sliko pa bomo pogledali.

melamalej commented 5 years ago

Sedaj pa mislm, da sem kočnala. Glede zemljevida mi je že takoj izrisalo vse regije tako da zadnje vrstice iz zadnjega komentarja nisem uporabila. Tudi na binderju je vse delalo.

Najlepša hvala za vso pomoč.

jaanos commented 5 years ago

Sem dodal povezavo, tako da se lahko z @alenFMF domeniš za termin zagovora, če se seveda že nisi. Če boš do takrat še kaj spreminjala, prosim javi, da posodobim povezavo.