Pylväsdiagrammi ja histogrammi R:ssä esimerkin kanssa
⚡ Älykäs yhteenveto
R:n pylväsdiagrammi ja histogrammi on rakennettu ggplot2:lla käyttäen geom_bar()-funktiota kategorisille määrille ja geom_histogram()-funktiota jatkuville jakaumille. Tämä ohje mukauttaa väriä, ryhmittelyä japing, pinoaminen, suunta, ryhmittely ja palkin sisäiset otsikot mtcars-tietojoukossa.

Mikä on pylväsdiagrammi R:ssä?
Pylväskaavio on loistava tapa näyttää kategorialliset muuttujat x-akselilla. Tämän tyyppinen kaavio kuvaa kahta aspektia y-akselilla.
- Ensimmäinen laskee esiintymien lukumäärän kussakin ryhmässä.
- Toinen näyttää y-akselilla olevan muuttujan yhteenvetotilaston (minimi, maksimi, keskiarvo jne.).
Käytät mtcars-tietojoukkoa, jossa on seuraavat muuttujat:
- cyl: Auton sylinterin numero. Numeerinen muuttuja
- am: Lähetyksen tyyppi. 0 automaattiselle ja 1 manuaaliselle. Numeerinen muuttuja
- mpg: mailia gallonaa kohden. Numeerinen muuttuja
Koska histogrammi näyttää niin samankaltaiselta, ero kannattaa selvittää ennen koodin kirjoittamista.
Pylväsdiagrammi vs. histogrammi R:ssä: Keskeiset erot
Nämä kaksi kaaviota näyttävät samanlaisilta ja ne ovat jatkuvasti sekaisin. Ne vastaavat eri kysymyksiin ja käyttävät eri geometrisia objekteja.
| Kriteeri | Pylväsdiagrammi | histogrammi |
|---|---|---|
| X-akselin muuttuja | Kategorinen tai tekijä | Jatkuva ja numeerinen |
| Mitä palkki edustaa | Yksi luokka | Yksi arvoväli eli lokero |
| Tankojen väliset raot | Kyllä, kategoriat ovat erillisiä | Ei, roska-astiat ovat vierekkäin |
| Baarijärjestys | Voidaan järjestellä vapaasti uudelleen | Kiinteä numeerisella asteikolla |
| Kysymykseen vastattu | Miten ryhmät vertautuvat? | Miten yksi muuttuja jakautuu? |
| ggplot2-objekti | geom_bar() | geom_histogrammi() |
Nyrkkisääntö: jos pylväiden järjestäminen uudelleen olisi edelleen järkevää, kyseessä on pylväsdiagrammi. Jos järjestyksen muuttaminen tuhoaisi merkityksen, kyseessä on histogrammi. Saman jatkuvan muuttujan kvartiilipohjaisiin yhteenvetoihin käytetään laatikko juoni.
Kuinka luoda pylväsdiagrammi R:ssä
Luodaksesi kaavion sisään R, voit käyttää kirjastoa ggplot, joka luo julkaisuvalmiita kaavioita. Tämän kirjaston perussyntaksi on:
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()`
Tämä tutoriaali keskittyy geometriseen objektiin geom_bar()-funktioon, joka piirtää pylväsdiagrammin, ja geom_histogram()-funktioon jatkuvaa dataa varten.
Pylväskaavio: laske
Ensimmäinen kaaviosi näyttää sylinterin taajuuden geom_bar(). Alla oleva koodi on yksinkertaisin syntaksi.
library(ggplot2) # Most basic bar chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
Code Selitys
- Välität tietojoukon mtcars ggplotille.
- aes()-argumentin sisällä asetat x-akselin tekijämuuttujalle cyl
- +-merkki tarkoittaa, että haluat R:n jatkavan koodin lukemista. Se tekee koodista luettavamman rikkomalla sen.
- Käytä geom_bar() geometriselle objektille.
lähtö:
Huomautuksia: varmista, että muunnat muuttujat kertoimeksi, muuten R käsittelee muuttujia numeerisina. Katso alla oleva esimerkki.
Mukauta kaaviota
Kaavion mukauttamiseen voidaan antaa neljä argumenttia:
- `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
Muuta palkkien väriä
Voit muuttaa palkkien väriä. Huomaa, että palkkien värit ovat kaikki samanlaisia.
# Change the color of the bars ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(fill = "coral") + theme_classic()
Code Selitys
- Palkkien värejä ohjaa aes()-karttaping geometrisen objektin sisällä (eli ei ggplot()-funktiossa). Voit muuttaa väriä täyttöargumenteilla. Tässä valitset korallin värin.
lähtö:
Voit käyttää tätä koodia:
grDevices::colors()
nähdäksesi kaikki saatavilla olevat värit R:ssä. Väriä on noin 650.
Muuta intensiteettiä
Voit lisätä tai vähentää palkkien värin voimakkuutta
# Change intensity ggplot(mtcars, aes(factor(cyl))) + geom_bar(fill = "coral", alpha = 0.5) + theme_classic()
Code Selitys
- Voit lisätä/vähentää palkin intensiteettiä muuttamalla alfan arvoa. Suuri alfa lisää intensiteettiä ja pieni alfa vähentää sitä. Alfa vaihtelee välillä 0–1. Arvolla 1 väri vastaa tarkasti palettia; arvolla 0 palkki on näkymätön. Tässä valitset alfaksi 0.5.
lähtö:
Väri ryhmittäin
Voit muuttaa palkkien värejä, mikä tarkoittaa yhtä eri väriä jokaiselle ryhmälle. Esimerkiksi cyl-muuttujalla on kolme tasoa, jolloin voit piirtää pylväskaavion kolmella värillä.
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
Code Selitys
- aes()-funktion sisällä oleva fill-argumentti muuttaa palkin väriä. Voit muuttaa väriä asettamalla fill = x-akselimuuttuja. Esimerkissäsi x-akselimuuttuja on cyl; fill = factor(cyl)
lähtö:
Lisää ryhmä palkkeihin
Voit jakaa y-akselin edelleen toisen tekijätason perusteella. Voit esimerkiksi laskea automaatti- ja manuaalivaihteiston lukumäärän sylinterityypin perusteella.
Toimit seuraavasti:
- Vaihe 1: Luo tietokehys mtcars-tietojoukolla
- Vaihe 2: Merkitse am-muuttuja merkinnällä auto automaattivaihteistolle ja man manuaalivaihteistolle. Muunna am ja cyl tekijöiksi, jotta sinun ei tarvitse käyttää factor()-funktiota ggplot()-funktiossa.
- Vaihe 3: Piirrä pylväskaavio laskeaksesi vaihteiston lukumäärä sylintereissä
library(dplyr) # Step 1 data <- mtcars %>% #Step 2 mutate(am = factor(am, labels = c("auto", "man")), cyl = factor(cyl))
Kun tietojoukko on valmis, voit piirtää graafin:
# Vaihe 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Code Selitys
- ggplot()-kutsu vastaanottaa tietojoukon tiedot ja aes()-kartanping.
- Aes()-kenttään sisällytät muuttujan x-akseli ja sen, mikä muuttuja vaaditaan palkin täyttämiseen (eli am)
- geom_bar(): Luo pylväskaavio
lähtö:
Karttaping täyttää palkin kahdella värillä, yhdellä kutakin tasoa kohden. Ryhmää on vaivatonta muuttaa valitsemalla muita tekijämuuttujia aineistosta.
Pylväskaavio prosentteina
Voit visualisoida palkin prosentteina raakaluvun sijaan.
# Pylväskaavio prosentteina
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
Code Selitys
- Käytä sijainti = "fill" geom_bar()-argumentissa luodaksesi grafiikan y-akselilla prosentteina.
lähtö:
Vierekkäiset palkit
Pylväskaavio on helppo piirtää ryhmämuuttujan vierekkäin.
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
Code Selitys
- position=position_dodge(): Kertoo selkeästi, kuinka palkit järjestetään
lähtö:
Pylväsdiagrammi yhteenvetotiedolla
Tutoriaalin toisessa osassa y-akselilla on laskettu arvo eikä lukumäärä. Huomaa, että tämä on edelleen pylväsdiagrammi: varsinaista histogrammia käsitellään myöhemmin, ja siinä käytetään erilaista geometrista objektia.
Tavoitteenasi on luoda kaavio, jossa on kunkin sylinterityypin keskimääräinen mailia gallonaa kohden. Voit piirtää informatiivisen kaavion seuraavasti:
- Vaihe 1: Luo uusi muuttuja keskimääräisellä maililla gallonaa kohden sylinterikohtaisesti
- Vaihe 2: Luo perushistogrammi
- Vaihe 3: Muuta suuntaa
- Vaihe 4: Vaihda väriä
- Vaihe 5: Muuta kokoa
- Vaihe 6: Lisää kaavioon tunnisteita
Vaihe 1) Luo uusi muuttuja
Luot datakehyksen nimeltä data_histogram, joka yksinkertaisesti palauttaa keskimääräiset mailit gallonaa kohti auton sylinterien lukumäärän perusteella. Kutsut tätä uutta muuttujaa mean_mpg ja pyöristät keskiarvon kahdella desimaalilla.
# Vaihe 1
data_histogram <- mtcars %>% mutate(cyl = factor(cyl)) %>% group_by(cyl) %>% summarize(mean_mpg = round(mean(mpg), 2))
Vaihe 2) Luo perushistogrammi
Voit piirtää histogrammin. Se ei ole vielä tarpeeksi viimeistelty annettavaksi asiakkaalle, mutta se näyttää jo trendin.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Code Selitys
- Aes() sisältää nyt kaksi muuttujaa. Cyl-muuttuja viittaa x-akseliin ja mean_mpg on y-akseli.
- Välität stat = “identity”, jotta geom_bar() käyttää y-akselimuuttujaa sellaisenaan rivien laskemisen sijaan. Oletusarvo geom_bar()-funktiolle on stat = “count”.
lähtö:
Vaihe 3) Muuta suuntaa
Voit muuttaa kaavion suunnan pystysuorasta vaakasuoraan.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
Code Selitys
- Voit ohjata graafin suuntaa komennolla coord_flip().
lähtö:
Vaihe 4) Vaihda väriä
Voit erottaa palkkien värit x-akselin muuttujan tekijätason mukaan.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + coord_flip() + theme_classic()
Code Selitys
- Voit piirtää graafin ryhmittäin fill= cyl -mapillapingR huolehtii väreistä automaattisesti cyl-muuttujan tasojen perusteella.
lähtö:
Vaihe 5) Muuta kokoa
Jotta kaavio näyttää kauniimmalta, pienennät palkin leveyttä.
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity", width = 0.5) + coord_flip() + theme_classic()
Code Selitys
- geom_bar()-funktion sisällä oleva width-argumentti ohjaa palkin paksuutta. Suurempi arvo tekee siitä leveämmän.
- Kuvaaja tallennetaan oliograafiin, koska seuraava vaihe käyttää sitä uudelleen muuttumattomana. Välikuvaajien tallentaminen pitää koodin luettavana.
lähtö:
Vaihe 6) Lisää kaavioon tunnisteita
Viimeisessä vaiheessa lisätään mean_mpg-arvo otsikkona jokaisen palkin sisään.
graph +
geom_text(aes(label = mean_mpg),
hjust = 1.5,
color = "white",
size = 3) +
theme_classic()
Code Selitys
- Funktio geom_text() on hyödyllinen ohjaamaan tekstin estetiikkaa.
- label=: Lisää tarra palkkeihin
- mean_mpg: Käytä muuttujaa mean_mpg tunnisteena
- hjust-arvo määrittää, missä kohtaa pylvästä otsikko sijaitsee. Lähellä ykköstä olevat arvot sijoittavat sen lähelle pylvään päätä, ja suuremmat arvot työntävät sitä taaksepäin kohti akselia. Jos kaavion suunta on pystysuora, muuta hjust-arvoksi vjust.
- color=”white”: Muuta tekstin väriä. Tässä käytät valkoista väriä.
- koko=3: Aseta tekstin koko.
lähtö:
Kuinka järjestää ja nimetä pylväitä pylväskaaviossa R:ssä
Kaksi viimeistelyä erottaa luonnoskaavion julkaistavasta kaaviosta: pylväiden lajittelu arvon mukaan ja akselien asianmukainen nimeäminen.
Palkkien uudelleenjärjestely. ggplot2 järjestää tekijätasot oletusarvoisesti aakkosjärjestykseen, mikä on harvoin informatiivisin järjestys. Ripusta x-muuttuja reorder()-funktiossa lajitellaksesi toisen muuttujan mukaan:
# 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()
Lisää lajittelumuuttujaan miinusmerkki reorder(cyl, -mean_mpg) suunnan kääntämiseksi.
Otsikoiden ja akselien nimien lisääminen. labs()-funktio asettaa kaikki tekstielementit yhdellä kutsulla:
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()
Aseta fill = NULL labs()-funktion sisällä poistaaksesi selitteen otsikon kokonaan ja käytä theme(legend.position = “none”) poistaaksesi selitteen, kun x-akseli on jo nimennyt ryhmät.
Omien värien valitseminen. Korvaa oletuspaletti selkeällä paletilla, jotta kaavio vastaa talosi tyyliä:
scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))
Histogrammin luominen R:ssä geom_histogram()-funktiolla
Histogrammi näyttää, miten yksi jatkuva muuttuja on jakautunut. Luokkien laskemisen sijaan ggplot2 jakaa numeerisen alueen lokeroihin ja laskee, kuinka monta havaintoa kuuluu kuhunkin lokeroon.
library(ggplot2) # Most basic histogram ggplot(mtcars, aes(x = mpg)) + geom_histogram()
R tulostaa viestin, joka suosittelee paremman lokeromäärän valitsemista, koska oletusarvo 30 lokeroa on mielivaltainen. Tätä ohjaavat kaksi argumenttia:
- roskakorit: välien lukumäärä, joihin alue jaetaan.
- lokeron leveys: kunkin aikavälin leveys, ilmaistuna muuttujan yksiköinä. Käytä tätä, kun yksiköt ovat merkityksellisiä.
# 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()
Histogrammin tärkein yksittäinen valinta on lokerointi. Liian harvat lokerot peittävät todellisen rakenteen, kuten toisen piikin; liian monet muuttavat kaavion kohinaksi. Kokeile useita arvoja ennen kuin päätät yhteen.
Ryhmien vertailu. Määritä täytettävä tekijä ja aseta sijainti, jotta jakaumat pysyvät luettavina:
ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) + geom_histogram(bins = 10, position = "identity", alpha = 0.5) + theme_classic()
Kun position = ”identity” ja alfa pienenee, histogrammit menevät päällekkäin, joten voit vertailla muotoja suoraan. Käytä position = ”dodge”, jos haluat nähdä lokerot mieluummin vierekkäin.
Tiheys lukumäärien sijaan. Kun ryhmät eroavat toisistaan kooltaan, piirrä tiheys niin, että alueet ovat vertailukelpoisia, ja päällekkäin piirrä tasoitettu käyrä:
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()
Pylväsdiagrammi ja histogrammi R:ssä: Code Viite
Pylväsdiagrammi sopii kategoriseen x-akseliin, jossa y-akseli on joko lukumäärä tai yhteenvetotilasto. Alla olevassa taulukossa luetellaan ggplot2-kutsu jokaiselle yllä käsitellylle variantille:
| Tavoite | Code |
|---|---|
| Laskea |
ggplot(df, aes(x = factor(x1))) + geom_bar() |
| Laske eri värisillä täytteillä |
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar() |
| Laske ryhmien kanssa, pinottu |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar() |
| Laske ryhmien kanssa vierekkäin |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge()) |
| Laske ryhmien kanssa, pinottu % |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill") |
| Arvot (yhteenvetotilasto) |
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity") |
| Jatkuvan muuttujan histogrammi |
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30) |













