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.

  • 📊 Osnovna razlika: Stupčasti grafikon sažima kategoričku varijablu, dok histogram razvrstava jednu kontinuiranu varijablu u intervale.
  • 🧱 Gramatika grafike: Svaki grafikon kombinira skup podataka, aes() mapupingi geometrijski objekt spojen znakom plus.
  • 🎨 Kontrola boja: Za jednu ujednačenu boju, ispunite unutar geom_bar(), a za bojanje traka po grupama unutar aes().
  • 📐 Prilagođavanja položaja: position = “fill” pretvara brojeve u postotke, a position_dodge() postavlja grupirane stupce jedan pored drugog.
  • 🔢 Vrijednosti crtanja: Prolazna statistika = „identitet“ kada y-os već sadrži izračunatu statistiku kao što je grupna srednja vrijednost.
  • 📏 Razvrstavanje histograma: Postavite intervale ili širinu intervala u geom_histogram(), jer zadana vrijednost od 30 intervala rijetko odgovara podacima.

Histogram stupčastog grafikona u R-u

Š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.

  1. Prvi broji broj pojavljivanja u svakoj skupini.
  2. 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:

Stupčasti dijagram: broj

bilješke: provjerite jeste li pretvorili varijable u faktor inače R tretira varijable kao numeričke. Pogledajte primjer u nastavku.

Stupčasti dijagram: broj

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:

Promijenite boju traka

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:

Promijenite intenzitet

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:

Boja po grupama

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:

Dodajte grupu u trake

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:

Trakasti grafikon u postocima

Š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:

Side by Side Bars

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:

Histogram

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:

Histogram

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:

Histogram

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:

Histogram

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:

Histogram

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)

Pitanja i odgovori

Koristite histogram kada je varijabla na x-osi kontinuirana i želite vidjeti njezinu distribuciju. Koristite stupčasti grafikon kada x-os sadrži različite kategorije i želite ih usporediti.

Unutar aes() funkcije fill preslikava varijablu u boju, tako da svaka grupa dobiva svoju nijansu. Izvan aes(), unutar geom_bar(), fill je fiksna vrijednost primijenjena na svaki stupac.

Ne postoji univerzalni odgovor. Počnite s kvadratnim korijenom broja opažanja, a zatim prilagodite. Premalo intervala skriva strukturu poput drugog vrha, a previše ih stvara bučan i šiljast grafikon.

Histogrami su standardni prvi korak u istraživačkoj analizi podataka za AI projekte, otkrivajući asimetriju, outliere i neravnotežu klasa prije nego što se bilo koji model obuči. Stupčasti grafikoni zatim sažimaju važnost značajki i učestalost kategorija.

Da. AI asistenti mogu izraditi slojeve ggplot2 iz jednostavnog opisa grafikona i objasniti pogreške poput nedostajućeg argumenta statistike. Uvijek pokrenite generirani kod na vlastitim podacima kako biste potvrdili kartu.ping ispravno je.

Sažmite ovu objavu uz: