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: