Closed Geckaa closed 9 years ago
Najprej naj opozorim, da ne uporabljaj absolutnih poti do datotek, saj bo sicer program deloval samo na tvojem računalniku. Risanje v PDF torej začni z
pdf("slike/drzave_zda.pdf")
(parametrov width
in height
najbrž ne boš potreboval, oziroma jih lahko kasneje spet dodaš po potrebi), podobno bo tudi pri uvozu datoteke CSV (seveda poskrbi, da jo naložiš v repozitorij).
Drugo, za uvoz zemljevida prosim uporabi funkcijo uvozi.zemljevid
iz lib/uvozi.zemljevid.r
- zemljevida namreč ne boš nalagal v repozitorij. Zemljevid (gre za drugačen zemljevid, kot smo ga uporabili na vajah - ne spomnim se več, kje sem tistega dobil) torej uvoziš z
source("lib/uvozi.zemljevid.r")
USA <- uvozi.zemljevid("http://biogeo.ucdavis.edu/data/gadm2/shp/USA_adm.zip",
"USA", "USA_adm1.shp", mapa = "zemljevidi")
Imena zveznih držav so sedaj v stolpcu NAME_1
, tako da se neželenih držav znebiš z
states <- USA[!(USA$NAME_1 %in% nocemo),]
Preden narišeš zemljevid, bo potrebno še popraviti uvoz. Imaš namreč napisan delujoč uvoz iz XML, a ga ne uporabiš. Edino, kar bo potrebno v xml.r
popraviti, je to, da se znebiš presledkov pred imeni držav:
rownames(matrika) <- gsub("[^A-Za-z ]", "",
unlist(lapply(vrstice[2:length(vrstice)], stripByPath, "./th")))
V uvoz.r
potem raje kot iz CSV (kjer imaš napake v podatkih) uporabi uvoz iz XML:
source("lib/xml.r")
ZDA <- uvozi.drzave()
Sedaj imaš nekoliko drugačne stolpce (populacija je na 5. mestu), tako da bo potrebno popraviti tudi risanje grafov. Če hočeš imeti spremenljivko Size
, ki si jo sam dodal v CSV, jo raje poračunaj iz obstoječih podatkov (in naredi dejansko urejenostno spremenljivko).
Glede na to, da želiš razdeliti države na nekaj skupin po populaciji, se jih morda izplača razdeliti na enako velike dele (druga največja država, Teksas, ima namreč manj kot 3/4 populacije največje, Kalifornije, tako da bi ti sorazmerna razdelitev na 4 kategorije pustila eno kategorijo prazno). Ker se ti imena v zemljevidu in podatkih popolnoma ujemajo, lahko najdeš pravi vrstni red s funkcijo match
:
m <- match(states$NAME_1, rownames(ZDA))
pop <- ZDA[m,5] # populacija je v 5. stolpcu
n <- 4 # 4 kategorije
q <- quantile(pop, (1:n)/n, na.rm = TRUE)
barve <- topo.colors(n)
plot(states, col = barve[sapply(pop, function(x) which(x <= q)[1])])
Mene zanima kako bi pobarval svoj zemljevid. Rad bi naredil, da bi imel 3 (mogoče 4) kategorije, glede na število prebivalstva v državi, in več kot je prebivalcev, temnejša barva je (recimo). Ne vem kako naj se lotim, ker mi nikakor ne uspe.