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) |













