tilenklinc / APPR_projektna

Vzorčni repozitorij za projekt pri predmetu Analiza podatkov s programom R v študijskem letu 2020/21
Other
0 stars 0 forks source link

Dodajanje grafa z logaritemsko skalo #7

Closed tilenklinc closed 3 years ago

tilenklinc commented 3 years ago

Želel bi si dodati graf na katerem bi bile predstavjlene vse pridobljene delnice. Težava je pri tem, da če samo izrišem graf, zaradi večjih razlik v ceni delnic izgubim nekatere "detajle". Želel bi si da bi se vse cene začele pri 1. Tako sem razmišljal da bi z mutate ustvaril nov stolpec procentualnh vrednosti, pri čemer bi vse pripadajoče delnice Tipa OPEN delil z vrednostjo na prvi dan. Nato pa bi združil in vse dodal, vendar mi na ta način ni uspelo narediti, zato prosim za nasvet/pomoč s kodo.

procentAMD <- zdruzena2 %>% filter(Ime == "AMD") procentAMD <- zdruzena2 %>% mutate(Procent = Vrednost / procentAMD$Vrednost[1]) Poskusil sem tako, vendar brez uspeha.

... graf1 <- ggplot(zdruzena %>% filter(Tip == "Open", Ime %in% c("AAPL","NVDA","AMZN","MSFT","AMD", "INTC","ADBE", "SNE")), aes(x=Datum, y=Vrednost, color=Ime)) + geom_line() + ggtitle("Cena delnic skozi čas") + ylab("Cena na delnico [$]") + xlab("Leto") Ta koda je le za graf brez procentualnih vrednosti.

katarinabrilej commented 3 years ago

Logaritemsko skalo lahko dodaš tako, da na koncu podaš scale_y_continuous(trans = 'log10') ali pa scale_y_continuous(trans = 'log2'). Torej

graf1 <- ggplot(zdruzena %>% filter(Tip == "Open",
                           Ime %in% c("AAPL","NVDA","AMZN","MSFT","AMD", "INTC","ADBE", "SNE")),
       aes(x=Datum, y=Vrednost, color=Ime)) + geom_line() + ggtitle("Cena delnic skozi čas") + 
  ylab("Cena na delnico [$]") + xlab("Leto") + scale_y_continuous(trans = 'log10')
tilenklinc commented 3 years ago

Najlepša hvala, ta rešitev mi ustrezno deluje. Samo še informativno ... kako bi lahko podatke oblikoval tako, da bi se vsi začeli pri y = 1 nato pa se skozi čas spreminjali glede na spremembo cen delnic?

jaanos commented 3 years ago

Če bi želel podatke oblikovati na tak način, bi lahko najprej pridobil začetne vrednosti, nato pa podatke delil z ustreznimi začetnimi vrednostmi, da dobiš normirane podatke, npr.

zacetne <- zdruzena %>% group_by(Ime, Tip) %>%
  slice_min(Datum, n=1, with_ties=FALSE) %>%
  transmute(Ime, Tip, ZacetnaVrednost=Vrednost)
normirana <- inner_join(zdruzena, zacetne) %>%
  mutate(NormiranaVrednost=Vrednost/ZacetnaVrednost) %>%
  select(-ZacetnaVrednost)
tilenklinc commented 3 years ago

Hvala, z navedeno kodo sem dopolnil datoteko vizualizacija.r, sedaj mi deluje.