PiaM123 / APPR-2015-16

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

Graf #6

Closed PiaM123 closed 8 years ago

PiaM123 commented 8 years ago

Uspela sem narisati graf, vendar imam problem ker mi števila oseb z določeno izobrazbo ne razvrsti pravilno, ne gre od najmanjšega do največjega ali obratno, gre kar mešano tako kot je bilo v tabeli. Poleg tega mi kljub temu, da sem knjižnice premaknila, v poročilu na vrhu izpiše vse.

jaanos commented 8 years ago

Pri uvozu iz HTML ne pretvoriš nizov v števila, zato ti graf prikazuje vrednosti kot nize.

Najlažje bo, če to urediš že v funkciji, kjer uvažaš. Po tem, ko definiraš spremenljivko matrika, lahko končaš funkcijo z

  matrika <- apply(matrika[-nrow(matrika),], 2, as.numeric)
  colnames(matrika) <- gsub("\n", " ", stripByPath(vrstice[[3]], ".//th"))[2:4]
  return(
    data.frame("Stevilo oseb z osnovnosolsko izobrazbo" = matrika[,1], "Stevilo oseb s srednjesolsko izobrazbo" = matrika[,2], "Stevilo oseb z visokosolsko izobrazbo" = matrika[,3], row.names=1:4)
  )

Tukaj je že poskrbljeno za brisanje zadnje vrstice, tako da tega potem ne narediš še enkrat. Potem bi ti moralo pravilno izrisati graf - namesto parametra color lahko uporabiš fill, da ti pobarva stolpce, in ne samo obrobi.

Razlog, da ti na vrhu izriše grafe, je ta, da imaš v uvoz.r ukaze print, s katerimi izrisuješ grafe. Te odstrani, izrisuj samo v poročilu.

PiaM123 commented 8 years ago

Če vstavim to noter mi ponovno javlja napako glede števila vrstic. Ostalo pa sem porihtala, hvala.

jaanos commented 8 years ago

Kot sem napisal, je sedaj odveč vrstica

MoskiSlovenija <- MoskiSlovenija[-nrow(MoskiSlovenija),]

Isto naredi še za ZenskeSlovenija.

V zadnjem commitu grafov v poročilu ne izpisuješ, ker se ti ustrezni bloki kode ne izvedejo. Da se bodo izvedli, mora za ```stati vsaj še{r}, lahko pa je seveda zraven še oznaka bloka (ki se mora pojaviti samo enkrat) in ostali parametri (npr.echo = FALSE`, da ti ne izpisuje samih ukazov).

jaanos commented 8 years ago

Glede na to, da mi prevede poročilo, bom kar dodal povezavo. Če boš kaj spremenila, mi prosim javi, da jo posodobim.

PiaM123 commented 8 years ago

Še vedno imam težave s tem: sedaj sem izbrisala "MoskiSlovenija <- MoskiSlovenija[-nrow(MoskiSlovenija),]" in dodala " matrika <- apply(matrika[-nrow(matrika),], 2, as.numeric) colnames(matrika) <- gsub("\n", " ", stripByPath(vrstice[[3]], ".//th"))[2:4] return( data.frame("Stevilo oseb z osnovnosolsko izobrazbo" = matrika[,1], "Stevilo oseb s srednjesolsko izobrazbo" = matrika[,2], "Stevilo oseb z visokosolsko izobrazbo" = matrika[,3], row.names=1:4) )" vendar mi še vedno ne dela, sedaj mi sploh tabele noče več prikazati.

jaanos commented 8 years ago

Kaj natančno ne deluje - ali ti vrednosti nadomesti z NA? Pri meni uvoz deluje - v funkciji uvozi.IzobrazbaMoskiSlovenija sicer sedaj uvoziš datoteko podatki/IzobrazbaZenskeSlovenija.htm, kar bo seveda treba popraviti.

Program uvoz.r se sicer ustavi pri risanju grafov - funkciji je ime ggplot, ne ggplot2; sicer pa grafe tako ali tako rišeš v poročilu, tako da jih pobriši iz uvoz.r. V poročilu bo sicer treba popraviti še bloke, da se bodo grafi dejansko izrisali.

PiaM123 commented 8 years ago

Sedaj mi tabele delujejo vendar grafi ne. Tudi če spremenim iz ggplot2 v ggplot mi noče narisati grafov. Javi mi: Error in eval(expr, envir, enclos) : could not find function "ggplot" A vse kar je v povezavi z grafi izbrišem iz uvoz.r in zapišem v projekt.rmd? Kako pa se to popravi?

jaanos commented 8 years ago

Vidim, da si iz uvoz.r že pobrisala risanje grafov, kar je seveda v redu. Da ti bo graf izrisalo v poročilu, ustrezno začni blok kode, npr.

```{r graf1, echo=FALSE}
grafMS <- ggplot(MoskiSlovenija, aes(x = starost, y = Stevilo.moskih.z.visokosolsko.izobrazbo,)) +
  geom_bar(stat = "identity") + theme_minimal() + aes(color=starost) +
  labs(title="Število moških z visokošolsko izobrazbo v Sloveniji", y="Število")
print(grafMS)


Oznaka bloka (v tem primeru `graf1`) sicer ni obvezna, koristi pa pri grafih, saj se lahko sklicuješ nanje. Oznake morajo biti različne ter ne smejo vsebovati šumnikov ali presledkov (tudi med koncem oznake in vejico ne sme biti presledka).

Mimogrede, pri risanju grafov namesto `color` raje uporabi `fill`, da ti bo stolpce pobarvalo in ne le obrobilo.
PiaM123 commented 8 years ago

Hvala, sem popravila, vendar mi poročila noče prevesti. Piše, da ne najde spremenljivke "starost".

jaanos commented 8 years ago

Če uporabljaš to, kar si v zadnjem commitu dala v kodaprojekt.txt, potem res nimaš stolpca starost - očitno si uporabila starejšo verzijo svojega programa. Če uporabiš to, kar imaš v uvoz.r (seveda s popravki iz #7), potem bi moralo delovati.

jaanos commented 8 years ago

Trenutno ti še vedno javi napako, ker imaš v razpredelnici ZenskeSlovenija stolpec Starost z veliko začetnico, pri risanju grafa pa navajaš malo začetnico.

PiaM123 commented 8 years ago

To sem popravila, pa mi še vedno noče prevesti poročila in še vedno mi izpiše, da ne najde vrednosti starost

PiaM123 commented 8 years ago

Sem sedaj videla, da sem imela spodaj še enkrat napisano z malo začetnico, sedaj mi poročilo prevede. Zanima me samo še kako naj se znebim opozoril na vrhu poročila, sem že vse premaknila v lib pa mi jih še vedno izpisuje.

jaanos commented 8 years ago

Pri bloku, kjer uvoziš libraries.r, dodaj še parameter warning = FALSE. Po potrebi lahko podobno narediš tudi drugod - čeprav je v tem primeru navadno bolje odkriti in odpraviti vzrok za opozorila (pri uvozu knjižnic gre večinoma le za to, da so bile prevedene z novejšo verzijo R-ja).

PiaM123 commented 8 years ago

Najlepša hvala. Zanima me še kako bi lahko narisala graf, ki bi imel na x osi dve spremenljivki oz da bi imel podatke za moške in podatke za ženske posebaj, na y pa stopnjo izobrazbe.

PiaM123 commented 8 years ago

Sem poskusila dati noter warning = FALSE pa mi javi napako.

PiaM123 commented 8 years ago

Aja pa težavo imam tudi pri oznaka na grafu, saj mi namesto dejanskih števil, ki so v podatkih zapiše števila z "e".

jaanos commented 8 years ago

Kam si pa dala warning = FALSE? Tako bi moralo delovati:

```{r setup, echo=FALSE, results='hide', message=FALSE, warning=FALSE}

Sicer pa meni ne prevede poročila, ker imaš pri obeh grafih pri fill stolpec starost še vedno z malo začetnico.

Graf lahko z uporabo tidy data (glej #8) narišeš nekako takole:

ggplot(izobrazba.slovenija %>% filter(Leto == 2013) %>%
         group_by(Spol, Stopnja.izobrazbe) %>% summarise(Skupaj = sum(Stevilo.oseb)/1000),
       aes(x = Stopnja.izobrazbe, y = Skupaj, fill = Spol)) +
  geom_bar(stat = "identity", position = "dodge")

Tukaj smo risali samo za leto 2013 (filter), ločili po spolu in stopnji izobrazbe group_by, ter skupine sešteli (torej za vse starostne skupine) in delili s 1000 (da se izogneš eksponentni notaciji). S position = "dodge" določiš, naj bodo stolpci en zraven drugega - sicer bi bili en na drugem. Seveda bi bilo koristno nekje povedati (npr. v oznaki osi y), da gre tukaj za tisoče ljudi.

PiaM123 commented 8 years ago

Najlepša hvala, sedaj mi deluje oz mi ne izpisuje več opozoril. Mi pa grafa noče narisati.

jaanos commented 8 years ago

Katerega grafa ti ne nariše? Ko prevedem poročilo, mi namreč izriše oba grafa, ki sta tam.