Trakasti grafikon i histogram u R-u s primjerom
โก Pametni saลพetak
Stupฤasti grafikon i histogram u R-u izgraฤeni su pomoฤu ggplot2, koristeฤi geom_bar() za kategoriฤke brojeve i geom_histogram() za kontinuirane distribucije. Ovaj vodiฤ prilagoฤava boju, grupuping, slaganje, orijentacija, grupiranje i oznake unutar stupaca na skupu podataka mtcars.

ล to je stupฤasti grafikon u R-u?
Trakasti dijagram izvrstan je naฤin za prikaz kategoriฤkih varijabli na x-osi. Ova vrsta grafikona oznaฤava dva aspekta na y-osi.
- Prvi broji broj pojavljivanja u svakoj skupini.
- Drugi prikazuje saลพetak statistike (minimum, maksimum, prosjek i tako dalje) varijable na y-osi.
Koristit ฤete skup podataka mtcars koji ima sljedeฤe varijable:
- cyl: Broj cilindra u automobilu. Numeriฤka varijabla
- am: Vrsta prijenosa. 0 za automatski i 1 za ruฤni. Numeriฤka varijabla
- mpg: milja po galonu. Numeriฤka varijabla
Buduฤi da histogram izgleda tako sliฤno, vrijedi rijeลกiti razliku prije pisanja bilo kakvog koda.
Trakasti grafikon u odnosu na histogram u R-u: Kljuฤne razlike
Dva grafikona izgledaju sliฤno i stalno se brkaju. Odgovaraju na razliฤita pitanja i koriste razliฤite geometrijske objekte.
| Kriteriji | Grafikon | Histogram |
|---|---|---|
| Varijabla na X-osi | Kategoriฤki ili faktorski | Kontinuirano i numeriฤko |
| ล to predstavlja traka | Jedna kategorija | Jedan interval ili koลก vrijednosti |
| Praznine izmeฤu ลกipki | Da, kategorije su odvojene | Ne, kante su pored |
| Narudลพba u baru | Moลพe se slobodno preurediti | Fiksirano numeriฤkom skalom |
| Odgovoreno na pitanje | Kako se grupe usporeฤuju? | Kako je jedna varijabla rasporeฤena? |
| objekt ggplot2 | geom_bar() | geom_histogram() |
Pravilo: ako bi promjena redoslijeda stupaca i dalje imala smisla, imate stupฤasti grafikon. Ako bi promjena redoslijeda uniลกtila znaฤenje, imate histogram. Za saลพetke iste kontinuirane varijable temeljene na kvartilima, koristite dijagram kutije.
Kako stvoriti stupฤasti grafikon u R-u
Za izradu grafikona u R, moลพete koristiti biblioteku ggplot koja stvara grafikone spremne za objavljivanje. Osnovna sintaksa ove biblioteke je:
ggplot(data, mapping = aes()) + geometric object arguments: data: dataset used to plot the graph mapping: Control the x and y-axis geometric object: The type of plot you want to show. The most common objects are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
Ovaj tutorial se fokusira na geometrijski objekt geom_bar(), koji crta stupฤasti grafikon, i na geom_histogram() za kontinuirane podatke.
Stupฤasti dijagram: broj
Vaลก prvi grafikon prikazuje frekvenciju cilindra s geom_bar(). Kod u nastavku je najosnovnija sintaksa.
library(ggplot2) # Most basic bar chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
Code Objaลกnjenje
- Prosljeฤujete skup podataka mtcars u ggplot.
- Unutar argumenta aes(), postavljate x-os na varijablu faktora cyl
- Znak + znaฤi da ลพelite da R nastavi ฤitati kod. ฤini kรดd ฤitljivijim razbijanjem.
- Koristite geom_bar() za geometrijski objekt.
Izlaz:
biljeลกke: provjerite jeste li pretvorili varijable u faktor inaฤe R tretira varijable kao numeriฤke. Pogledajte primjer u nastavku.
Prilagodite grafikon
Za prilagodbu grafikona mogu se proslijediti ฤetiri argumenta:
- `stat`: Controls what is plotted on the y-axis. By default `count`, which tallies rows. To plot a value you already computed, pass `stat = "identity"`
- `alpha`: Control density of the color
- `fill`: Change the color of the bar
- `size`: Control the size the bar
Promijenite boju traka
Moลพete promijeniti boju traka. Imajte na umu da su sve boje traka sliฤne.
# Change the color of the bars ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(fill = "coral") + theme_classic()
Code Objaลกnjenje
- Boje stupaca kontrolira aes() mapaping unutar geometrijskog objekta (tj. ne u ggplot()). Boju moลพete promijeniti argumentima za ispunu. Ovdje odabirete boju koralja.
Izlaz:
Moลพete koristiti ovaj kod:
grDevices::colors()
da vidite sve boje dostupne u R. Postoji oko 650 boja.
Promijenite intenzitet
Moลพete poveฤati ili smanjiti intenzitet boje traka
# Change intensity ggplot(mtcars, aes(factor(cyl))) + geom_bar(fill = "coral", alpha = 0.5) + theme_classic()
Code Objaลกnjenje
- Za poveฤanje/smanjivanje intenziteta trake moลพete promijeniti vrijednost alfe. Velika alfa poveฤava intenzitet, a niska alfa smanjuje intenzitet. Alfa se kreฤe od 0 do 1. Pri 1 boja toฤno odgovara paleti; pri 0 traka je nevidljiva. Ovdje odabirete alfu = 0.5.
Izlaz:
Boja po skupinama
Moลพete promijeniti boje traka, ลกto znaฤi jednu razliฤitu boju za svaku grupu. Na primjer, cyl varijabla ima tri razine, a zatim moลพete iscrtati trakasti grafikon s tri boje.
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
Code Objaลกnjenje
- Argument fill unutar aes() mijenja boju trake. Boju mijenjate postavljanjem fill = varijabla x-osi. U vaลกem primjeru, varijabla x-osi je cyl; fill = factor(cyl)
Izlaz:
Dodajte grupu u trake
Moลพete dodatno podijeliti y-os na temelju druge razine faktora. Na primjer, moลพete raฤunati broj automatskih i ruฤnih mjenjaฤa na temelju vrste cilindra.
Postupit ฤete na sljedeฤi naฤin:
- Korak 1: Stvorite podatkovni okvir s mtcars skupom podataka
- Korak 2: Oznaฤite am varijablu s auto za automatski mjenjaฤ i man za ruฤni mjenjaฤ. Pretvorite am i cyl kao faktor tako da ne morate koristiti factor() u funkciji ggplot().
- Korak 3: Nacrtajte trakasti dijagram za brojanje prijenosa po cilindru
library(dplyr) # Step 1 data <- mtcars %>% #Step 2 mutate(am = factor(am, labels = c("auto", "man")), cyl = factor(cyl))
S pripremljenim skupom podataka, moลพete nacrtati graf:
# Korak 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Code Objaลกnjenje
- Poziv ggplot() prima podatke skupa podataka i aes() mapuping.
- U aes() ukljuฤujete varijablu x-os i koja je varijabla potrebna za popunjavanje trake (tj. am)
- geom_bar(): Kreirajte trakasti grafikon
Izlaz:
Kartaping ispunit ฤe traku s dvije boje, jednom za svaku razinu. Grupu je lako promijeniti odabirom drugih faktorskih varijabli u skupu podataka.
Trakasti dijagram u postocima
Traku moลพete vizualizirati u postocima umjesto u sirovom broju.
# Trakasti grafikon u postocima
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
Code Objaลกnjenje
- Upotrijebite position = โfillโ u argumentu geom_bar() za stvaranje grafike s postotkom na y-osi.
Izlaz:
ล ipke jedna uz drugu
Lako je iscrtati trakasti grafikon s grupnom varijablom jednu pored druge.
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
Code Objaลกnjenje
- position=position_dodge(): Eksplicitno govori kako rasporediti trake
Izlaz:
Trakasti grafikon sa saลพetkom statistike
U drugom dijelu tutorijala, y-os nosi izraฤunatu vrijednost, a ne broj. Imajte na umu da je ovo joลก uvijek stupฤasti grafikon: pravi histogram obraฤen je dalje u tekstu i koristi drugaฤiji geometrijski objekt.
Vaลก cilj je izraditi grafikon s prosjeฤnom miljom po galonu za svaku vrstu cilindra. Da biste nacrtali informativni grafikon, slijedite ove korake:
- Korak 1: Stvorite novu varijablu s prosjeฤnom kilometraลพom po galonu po cilindru
- Korak 2: Napravite osnovni histogram
- Korak 3: Promijenite orijentaciju
- Korak 4: Promijenite boju
- Korak 5: Promijenite veliฤinu
- Korak 6: Dodajte oznake na grafikon
Korak 1) Napravite novu varijablu
Stvorite podatkovni okvir pod nazivom data_histogram koji jednostavno vraฤa prosjeฤne milje po galonu prema broju cilindara u automobilu. Ovu novu varijablu zovete mean_mpg i zaokruลพujete srednju vrijednost s dvije decimale.
# Korak 1
data_histogram <- mtcars %>% mutate(cyl = factor(cyl)) %>% group_by(cyl) %>% summarize(mean_mpg = round(mean(mpg), 2))
Korak 2) Napravite osnovni histogram
Moลพete nacrtati histogram. Joลก nije dovoljno uglaฤen da bi se predao klijentu, ali veฤ pokazuje trend.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Code Objaลกnjenje
- Aes() sada ima dvije varijable. Cyl varijabla odnosi se na x-os, a mean_mpg je y-os.
- Prosljeฤujete stat = โidentityโ tako da geom_bar() koristi varijablu y-osi kakva jest umjesto brojanja redaka. Zadana vrijednost za geom_bar() je stat = โcountโ.
Izlaz:
Korak 3) Promijenite orijentaciju
Mijenjate orijentaciju grafikona iz okomite u vodoravnu.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
Code Objaลกnjenje
- Moลพete kontrolirati orijentaciju grafikona pomoฤu coord_flip().
Izlaz:
Korak 4) Promijenite boju
Moลพete razlikovati boje traka prema razini faktora varijable osi x.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + coord_flip() + theme_classic()
Code Objaลกnjenje
- Graf moลพete nacrtati po grupama pomoฤu mape fill=cylpingR automatski brine o bojama na temelju razina varijable cyl.
Izlaz:
Korak 5) Promijenite veliฤinu
Da bi grafikon izgledao ljepลกe, smanjite ลกirinu trake.
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity", width = 0.5) + coord_flip() + theme_classic()
Code Objaลกnjenje
- Argument ลกirine unutar geom_bar() kontrolira debljinu trake. Veฤa vrijednost je ฤini ลกirom.
- Grafikon se pohranjuje u grafu objekta jer ga sljedeฤi korak ponovno koristi nepromijenjenog. Pohranjivanje meฤugrafika odrลพava kod ฤitljivim.
Izlaz:
Korak 6) Dodajte oznake na grafikon
Posljednji korak dodaje vrijednost mean_mpg kao oznaku unutar svake trake.
graph +
geom_text(aes(label = mean_mpg),
hjust = 1.5,
color = "white",
size = 3) +
theme_classic()
Code Objaลกnjenje
- Funkcija geom_text() korisna je za kontrolu estetike teksta.
- label=: Dodajte oznaku unutar traka
- mean_mpg: Koristite varijablu mean_mpg za oznaku
- hjust kontrolira gdje se oznaka nalazi duลพ trake. Vrijednosti blizu 1 postavljaju je blizu kraja trake, a veฤe vrijednosti je pomiฤu prema osi. Ako je orijentacija grafa okomita, promijenite hjust u vjust.
- color=โwhiteโ: Promjena boje teksta. Ovdje koristite bijelu boju.
- veliฤina=3: Postavite veliฤinu teksta.
Izlaz:
Kako poredati i oznaฤiti stupce u stupฤastom grafikonu u R-u
Dva zavrลกna detalja razlikuju nacrt grafikona od onog za objavu: sortiranje stupaca prema vrijednosti i pravilno oznaฤavanje osi.
Preureฤivanje stupaca. ggplot2 prema zadanim postavkama sortira razine faktora abecednim redoslijedom, ลกto rijetko je najinformativniji redoslijed. Omotajte varijablu x u reorder() za sortiranje po drugoj varijabli:
# Sort the bars from lowest to highest mean_mpg ggplot(data_histogram, aes(x = reorder(cyl, mean_mpg), y = mean_mpg)) + geom_bar(stat = "identity", fill = "coral") + theme_classic()
Ispred varijable sortiranja stavite znak minus, reorder(cyl, -mean_mpg), za obrnuti smjer.
Dodavanje naslova i oznaka osi. Funkcija labs() postavlja svaki tekstualni element u jednom pozivu:
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + labs(title = "Average fuel economy by cylinder count", subtitle = "mtcars dataset", x = "Number of cylinders", y = "Mean miles per gallon", fill = "Cylinders", caption = "Source: mtcars") + theme_classic()
Postavite fill = NULL unutar labs() za potpuno uklanjanje naslova legende i upotrijebite theme(legend.position = โnoneโ) za uklanjanje legende kada x-os veฤ imenuje grupe.
Odabir vlastitih boja. Zamijenite zadanu paletu eksplicitnom kako bi grafikon odgovarao stilu vaลกe kuฤe:
scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))
Kako stvoriti histogram u R-u pomoฤu geom_histogram()
Histogram prikazuje kako je jedna kontinuirana varijabla rasporeฤena. Umjesto brojanja kategorija, ggplot2 dijeli numeriฤki raspon na dijelove i broji koliko opaลพanja spada u svaki od njih.
library(ggplot2) # Most basic histogram ggplot(mtcars, aes(x = mpg)) + geom_histogram()
R ispisuje poruku s preporukom da odaberete bolji broj spremnika, jer je zadana vrijednost od 30 spremnika proizvoljna. To kontroliraju dva argumenta:
- smeฤe: broj intervala na koje treba podijeliti raspon.
- ลกirina spremnika: ลกirina svakog intervala, izraลพena u jedinicama varijable. Koristite ovu vrijednost kada su jedinice znaฤajne.
# Set the number of bins ggplot(mtcars, aes(x = mpg)) + geom_histogram(bins = 10, fill = "coral", color = "white") + theme_classic() # Or set the width of each bin instead ggplot(mtcars, aes(x = mpg)) + geom_histogram(binwidth = 4, fill = "coral", color = "white") + theme_classic()
Binning je najvaลพniji izbor u histogramu. Premalo binova skriva stvarnu strukturu poput drugog vrha; previลกe ih pretvara grafikon u ลกum. Isprobajte nekoliko vrijednosti prije nego ลกto se odluฤite za jednu.
Usporeฤivanje grupa. Mapirajte faktor za popunjavanje i postavite poziciju tako da distribucije ostanu ฤitljive:
ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) + geom_histogram(bins = 10, position = "identity", alpha = 0.5) + theme_classic()
S poloลพajem = โidentityโ i smanjenom alfom, histogrami se preklapaju tako da moลพete izravno usporeฤivati โโoblike. Koristite poloลพaj = โdodgeโ ako biste radije vidjeli spremnike jedan pored drugog.
Gustoฤa umjesto brojanja. Kada se grupe razlikuju po veliฤini, prikaลพite gustoฤu tako da povrลกine budu usporedive i prekrijte ih zaglaฤenom krivuljom:
ggplot(mtcars, aes(x = mpg)) + geom_histogram(aes(y = after_stat(density)), bins = 10, fill = "coral", alpha = 0.6) + geom_density(color = "steelblue", linewidth = 1) + theme_classic()
Trakasti grafikon i histogram u R-u: Code Upuฤivanje
Trakasti grafikon odgovara kategoriฤkoj x-osi, gdje je y-os ili broj ili saลพetak statistike. Tablica u nastavku navodi poziv ggplot2 za svaku gore opisanu varijantu:
| Cilj | Code |
|---|---|
| Raฤunati |
ggplot(df, aes(x = factor(x1))) + geom_bar() |
| Brojite s razliฤitim bojama ispune |
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar() |
| Brojite s grupama, naslagano |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar() |
| Brojite s grupama, rame uz rame |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge()) |
| Raฤunaj s grupama, naslagano u % |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill") |
| Vrijednosti (saลพetak statistike) |
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity") |
| Histogram kontinuirane varijable |
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30) |













