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.

  • 📊 Keskeinen ero: Pylväsdiagrammi tiivistää kategorisen muuttujan, kun taas histogrammi ryhmittelee yhden jatkuvan muuttujan väleihin.
  • 🧱 Grafiikan kielioppi: Jokainen kuvaaja yhdistää tietojoukon ja aes()-kartanpingja geometrinen objekti, joka on yhdistetty plusmerkillä.
  • 🎨 Värinhallinta: Lisää täyttö geom_bar()-funktion sisään yhtä tasaista väriä varten ja aes()-funktion sisään värittääksesi palkit ryhmittäin.
  • 📐 Sijainnin säädöt: position = “fill” muuntaa luvut prosentteiksi ja position_dodge() sijoittaa ryhmitellyt palkit vierekkäin.
  • 🔢 Arvojen piirtäminen: Hyväksy tilastollinen muuttuja = ”identiteetti”, kun y-akselilla on jo laskettu tilastollinen muuttuja, kuten ryhmän keskiarvo.
  • 📏 Histogrammin ryhmittely: Aseta lokerot tai lokeron leveys geom_histogram():ssa, koska oletusarvo 30 lokeroa harvoin sopii datalle.

Pylväsdiagrammi histogrammissa R:ssä

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.

  1. Ensimmäinen laskee esiintymien lukumäärän kussakin ryhmässä.
  2. 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ö:

Pylväskaavio: laske

Huomautuksia: varmista, että muunnat muuttujat kertoimeksi, muuten R käsittelee muuttujia numeerisina. Katso alla oleva esimerkki.

Pylväskaavio: laske

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

Muuta palkkien väriä

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

Muuta intensiteettiä

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

Väri ryhmittäin

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

Lisää ryhmä palkkeihin

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

Pylväskaavio prosentteina

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

Vierekkäiset palkit

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

histogrammi

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

histogrammi

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

histogrammi

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

histogrammi

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

histogrammi

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)

UKK

Käytä histogrammia, kun x-akselin muuttuja on jatkuva ja haluat nähdä sen jakauman. Käytä pylväsdiagrammia, kun x-akselilla on erilliset kategoriat ja haluat verrata niitä.

aes()-funktion sisällä fill-muuttuja yhdistetään väriin, joten jokainen ryhmä saa oman sävynsä. aes()-funktion ulkopuolella, geom_bar()-funktion sisällä, fill on kiinteä arvo, jota sovelletaan jokaiseen palkkiin.

Yleispätevää vastausta ei ole. Aloita havaintomäärän neliöjuuresta ja säädä sitten. Liian harvat lokerot peittävät rakenteen, kuten toisen piikin, ja liian monet tuottavat kohinaisen, piikikkäät kaaviot.

Histogrammit ovat tekoälyprojektien exploratiivisen data-analyysin ensimmäinen vakiovaihe. Ne paljastavat vinoumat, poikkeamat ja luokkaepätasapainon ennen minkään mallin kouluttamista. Pylväsdiagrammit tiivistävät sitten ominaisuuksien tärkeyden ja luokkien esiintymistiheydet.

Kyllä. Tekoälyavustajat voivat luonnostella ggplot2-tasoja kaavion pelkästä kuvauksesta ja selittää virheitä, kuten puuttuvan tilastoargumentin. Suorita aina luotu koodi omille tiedoillesi vahvistaaksesi kartan.ping on oikeassa.

Tiivistä tämä viesti seuraavasti: