Open Duzo12 opened 5 years ago
Tukaj je ena rešitev. Malo sem spremenil tvojo kodo za barplot, saj mi ni čisto delovala. Upam, da si si zamislil nekako tako - v primeru, da ne, pa napiši pa bova spremenila.
Barplot sem uredil po padajočem redu glede na višino plače. To lahko narediš tako, da spremeniš stolpec Drzava
v factor
, mu določiš ustrezen vrstni red in podaš v faktor parameter ordered=TRUE
.
SkupnaTabela$Drzava = factor(SkupnaTabela$Drzava,levels=SkupnaTabela %>% arrange(Visina.place) %>% .$Drzava,
ordered = TRUE)
Nato sem definiral vektor imen, v katerega lahko dodajaš države, za katere želiš da se pobarvajo drugače. V naslednjih vrsticah sem definiral vektor barv, ki ima skoraj vse vnose NA
, tam bodo stolpci ostali sivi. Za države, katere želiš obarvane, se bo na ustreznem indeksu NA
spremenil v "red"
(spremeni po želji)
pobarvane_drzave = c("Switzerland","Spain", "Japan")
indeksi_barv=which(rev(levels(SkupnaTabela$Drzava))%in%pobarvane_drzave)
barve = c(rep(NA,nrow(SkupnaTabela)))
barve[indeksi_barv] = "red"
Končni ggplot objekt zgleda tako:
ggplot(data=SkupnaTabela) +
geom_bar(aes(x=Drzava, y=Visina.place,fill=barve),stat = "Identity")+
coord_flip() +
theme(axis.text.x = element_text(angle = 90, hjust = 1),text = element_text(size=7))
V ggplot bi rad pobarval posamezne stolpce z različnimi barvami. Želel sem pobarvati stolpec ki pripada državi switzerland, vendar mi javlja napako.
ggplot(data=SkupnaTabela, aes(x=Visina.place, y=reorder(Drzava, -Visina.place), fill=factor(ifelse(area="Switzerland", "Highlighted","Normal" )))) + geom_bar(stat = "Identity") + scale_fill_manual(name = "area", values = c("red", "grey50")) + theme(axis.text.x = element_text(angle = 90, hjust = 1),text = element_text(size=5)) + coord_flip()