Open NoseF17 opened 4 years ago
Problem je v tem, da ima stolpec SteviloDelovnihUr
tip character
. Če ga spremeniš v double
bo delovalo:
A2$SteviloDelovnihUr <- parse_double(A2$SteviloDelovnihUr)
g1 <- ggplot(data = A2, aes(x=Leto, y=SteviloDelovnihUr)) +
geom_line() + ggtitle("Število delovnih ur po letih") +
theme(panel.background=element_rect(fill="grey"))
Hvala. Zakaj mi potem identično:
A1$SteviloDelovnihUr <- parse_double(A1$SteviloDelovnihUr)
ne pripomore pri:
g3drzave <- ggplot(data = A1, aes(x=Leto, y=SteviloDelovnihUr)) +
geom_point() + ggtitle("Število delovnih ur po letih") +
theme(panel.background=element_rect(fill="grey"))
Svetujem, da že pri uvozu poskrbiš, da se ti števila preberejo kot taka. V podatkih se namreč pojavlja znak :
za manjkajoče podatke, tako da bo potrebno pri klicih funkcije read_csv
nastaviti parameter na=':'
(namesto trenutnega presledka). Potem tudi ne bo potrebna naknadna pretvorba s parse_double
.
Sicer pa pri g3drzave
prikažeš podatke za vse države in spole - za posamezno leto se tako prikaže točka za vsako državo in spol, z geom_line
pa še črte med njimi, kar znotraj istega leta naredi navpično črto. Če želiš dobiti ločeno črto za vsako državo in spol, lahko pri aes
dodaš še parametra, ki bosta poskrbela za ločevanje, npr. color=Drzava
in linetype=Spol
. Seveda pa svetujem, da na grafu ne prikažeš prevelikega števila črt.
Nisem prepričan, da razumem kaj želiš narediti. Če želiš vrednosti predstaviti s točkami, deluje pravilno, vendar jih je preveč in je graf nepregleden. Točk z geom_line()
ne moreš povezati, saj imaš v vsakem letu več vrednosti (več držav in več spolov). Lahko pa predstaviš le nekaj držav, kot sem ti svetoval v NoseF17/APPR-2019-20#3. Če želiš te točke povezati, dodaj še geom_line()
. Če se nisva razumela in si imel v mislih kaj drugega, pa napiši.
Hvala, mi je uspelo dobiti željen graf.
Zanima me, kako lahko v graf združim podatke iz dveh tabel (v mojem primeru A1 in A4). Na osi x bi rad imel leta, na osi y pa hkrati delovne ure in pa GDP per capita, da ugotavljam povezanost med njima za določeno državo, v mojem primeru Slovenijo. Graf bi torej prikazoval dve krivulji, obe za Slovenijo. Je to sploh mogoče narediti?
Mogoče kaj takšnega:
colnames(A4)[3] <- "BDP"
df <- left_join(A1 %>% filter(Drzava == "Slovenia" & Spol == "Total"), A4 %>% filter(Drzava == "Slovenia"))[,-c(2,3)]
df1 <- gather(df, "tip", "vrednost", -Leto)
graf <- df1 %>%
ggplot(aes(x = Leto, y = vrednost, color = tip)) +
geom_line() +
facet_grid(tip ~ ., scales = "free_y")
Hvala za pomoč.
Naredil bi graf s stolpičnim diagramom, ki bi prikazoval delovne ure za 5 najbolj delavnih panog v slo. Zaenkrat imam to, nevem pa zakaj ne deluje:
panoge <- ggplot(SLOTOP5, aes(x=Panoga, y=SteviloDelovnihUr))
geom_bar() + facet_grid(~Panoga) +ggtitle("SLO panoge") +
xlab("") + ylab("SteviloDelovnihUr") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
Za vsako panogo iz SLOTOP5 bi rad poleg njenega stolpičnega diagrama rad dodal še en stolpični diagram, ki bi prikazoval delovne ure od "European Union - 28 countries". Potrebne podatke bi torej filtriral iz tabele A5, ne predstavljam pa si kako bi to naredil.
Samo za Slovenijo:
panoge <- ggplot(SLOTOP5, aes(x=Panoga, y=SteviloDelovnihUr)) +
geom_bar(stat='identity', position='dodge') + ggtitle("SLO panoge") +
xlab("") + ylab("SteviloDelovnihUr")
\ Slovenija + EU:
eu <- (A5 %>% filter(Drzava == "European Union - 28 countries", Leto == "2018"))[,-c(1,2)]
colnames(eu) <- c("Panoga", "EU")
skupna <- left_join(SLOTOP5, eu, by = "Panoga")
colnames(skupna)[2] <- "Slovenija"
skupna <- gather(skupna, key = "drzava", value = "ure", -Panoga)
graf <- ggplot(skupna, aes(x=Panoga, y=ure, fill=drzava)) +
geom_bar(stat='identity', position='dodge')
Če dodaš theme(axis.text.x = element_text(angle = 90, hjust = 1))
, lahko imena stolpcev zarotiraš tako, da bodo vertikalna. Vendar je tudi v tem primeru še vedno precej nepregledno (sam graf je premajhen), zato ti priporočam, da raje skrajšaš imena panog (vsaj tistih z najdaljšimi imeni).
Odlicno, hvala.
Imam tabelo A2, ki za Slovenijo prikazuje število delovnih ur po letih.
g1 <- ggplot(data = A2, aes(x=Leto, y=SteviloDelovnihUr)) + geom_point() + ggtitle("Število delovnih ur po letih") + theme(panel.background=element_rect(fill="grey"))
Graf je trenutno prikazan s pikicami, ko pa geom_point() spremenim v geom_line(), mi teh pikic ne poveže ampak napravi vodoravne črte ki tem pikicam ne ustrazajo.