Stolpediagram og histogram i R med eksempel

⚡ Smart oppsummering

Stolpediagram og histogram i R er bygget med ggplot2, og bruker geom_bar() for kategoriske tellinger og geom_histogram() for kontinuerlige fordelinger. Denne gjennomgangen tilpasser farge, grupperingping, stabling, orientering, binning og etiketter i stolpen på mtcars-datasettet.

  • 📊 Kjerneforskjell: Et søylediagram oppsummerer en kategorisk variabel, mens et histogram deler en enkelt kontinuerlig variabel inn i intervaller.
  • 🧱 Grammatikk i grafikk: Hvert plott kombinerer et datasett, et aes()-kartping, og et geometrisk objekt som er koblet sammen med plusstegnet.
  • 🎨 Fargekontroll: Plasser fyll inni geom_bar() for én ensartet farge, og inni aes() for å fargelegge søyler etter gruppe.
  • 📐 Posisjonsjusteringer: position = «fill» konverterer antall til prosenter og position_dodge() plasserer grupperte søyler side om side.
  • 🔢 Plotting av verdier: Pass stat = «identitet» når y-aksen allerede inneholder en beregnet statistikk, for eksempel et gruppegjennomsnitt.
  • 📏 Histogram-binning: Angi bins eller binwidth i geom_histogram(), fordi standardverdien på 30 bins sjelden passer til dataene.

Stolpediagramhistogram i R

Hva er et søylediagram i R?

Et stolpediagram er en fin måte å vise kategoriske variabler på x-aksen. Denne typen grafer angir to aspekter i y-aksen.

  1. Den første teller antall forekomster i hver gruppe.
  2. Den andre viser en sammendragsstatistikk (minimum, maksimum, gjennomsnitt og så videre) for en variabel på y-aksen.

Du skal bruke mtcars-datasettet, som har følgende variabler:

  • cyl: Nummer på sylinderen i bilen. Numerisk variabel
  • am: Type overføring. 0 for automatisk og 1 for manuell. Numerisk variabel
  • mpg: Miles per gallon. Numerisk variabel

Fordi et histogram ser så likt ut, er det verdt å avgjøre forskjellen før du skriver kode.

Stolpediagram vs. histogram i R: Viktige forskjeller

De to diagrammene ser like ut, og de blir stadig forvekslet. De svarer på forskjellige spørsmål og bruker forskjellige geometriske objekter.

Kriterier Bar Chart histogram
X-akse variabel Kategorisk eller faktor Kontinuerlig og numerisk
Hva en stolpe representerer Én kategori Ett intervall, eller en beholder, med verdier
Mellomrom mellom stolpene Ja, kategoriene er separate Nei, søppelbøttene står ved siden av hverandre
Barbestilling Kan omorganiseres fritt Fast av den numeriske skalaen
Spørsmål besvart Hvordan er gruppene sammenlignet? Hvordan er én variabel fordelt?
ggplot2-objekt geom_bar() geom_histogram()

Tommelfingerregelen: Hvis det fortsatt gir mening å endre rekkefølgen på søylene, har du et søylediagram. Hvis det å endre rekkefølgen på dem ville ødelegge meningen, har du et histogram. For kvartilbaserte oppsummeringer av den samme kontinuerlige variabelen, bruk et boksplott.

Slik lager du et søylediagram i R

For å lage graf i R, kan du bruke biblioteket ggplot som lager grafer som er klare for publisering. Den grunnleggende syntaksen til dette biblioteket er:

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

Denne veiledningen fokuserer på det geometriske objektet geom_bar(), som tegner søylediagrammet, og på geom_histogram() for kontinuerlige data.

Stolpediagram: telle

Din første graf viser frekvensen til sylinder med geom_bar(). Koden nedenfor er den mest grunnleggende syntaksen.

library(ggplot2)
# Most basic bar chart
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar()

Code Forklaring

  • Du sender datasettet mtcars til ggplot.
  • Inne i aes()-argumentet setter du x-aksen til faktorvariabelen cyl
  • +-tegnet betyr at du vil at R skal fortsette å lese koden. Det gjør koden mer lesbar ved å bryte den.
  • Bruk geom_bar() for det geometriske objektet.

Utgang:

Stolpediagram: telle

Merknader: sørg for at du konverterer variablene til en faktor ellers behandler R variablene som numeriske. Se eksempelet nedenfor.

Stolpediagram: telle

Tilpass grafen

Fire argumenter kan sendes for å tilpasse grafen:

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

Endre fargen på stolpene

Du kan endre fargen på stolpene. Merk at fargene på stolpene er like.

# Change the color of the bars
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar(fill = "coral") +
    theme_classic()

Code Forklaring

  • Fargene på stolpene styres av aes()-kartetping inne i det geometriske objektet (dvs. ikke i ggplot()). Du kan endre fargen med fyllargumentene. Her velger du korallfargen.

Utgang:

Endre fargen på stolpene

Du kan bruke denne koden:

grDevices::colors()

for å se alle fargene tilgjengelig i R. Det er rundt 650 farger.

Endre intensiteten

Du kan øke eller redusere intensiteten til stolpenes farge

# Change intensity
ggplot(mtcars,
        aes(factor(cyl))) +
    geom_bar(fill = "coral",
        alpha = 0.5) +
    theme_classic()

Code Forklaring

  • For å øke/redusere intensiteten til linjen kan du endre verdien på alfa. En stor alfa øker intensiteten, og lav alfa reduserer intensiteten. Alfa varierer fra 0 til 1. Ved 1 matcher fargen paletten nøyaktig; ved 0 er linjen usynlig. Her velger du alfa = 0.5.

Utgang:

Endre intensiteten

Fargelegg etter grupper

Du kan endre fargene på stolpene, noe som betyr en annen farge for hver gruppe. For eksempel har cyl variabel tre nivåer, så kan du plotte søylediagrammet med tre farger.

# Color by group
ggplot(mtcars, aes(factor(cyl),
        fill = factor(cyl))) +
    geom_bar()

Code Forklaring

  • Argumentet fill i aes() endrer fargen på linjen. Du endrer fargen ved å sette fill = x-aksevariabel. I ditt eksempel er x-aksevariabelen cyl; fill = factor(cyl)

Utgang:

Farge etter grupper

Legg til en gruppe i stolpene

Du kan dele y-aksen videre basert på et annet faktornivå. For eksempel kan du telle antall automatiske og manuelle girkasser basert på sylindertypen.

Du vil fortsette som følger:

  • Trinn 1: Lag datarammen med mtcars datasett
  • Trinn 2: Merk am variabelen med auto for automatgir og man for manuell girkasse. Konverter am og cyl som en faktor slik at du ikke trenger å bruke factor() i ggplot()-funksjonen.
  • Trinn 3: Plott søylediagrammet for å telle antall overføringer per sylinder
library(dplyr)
# Step 1
data <- mtcars %>% 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

Når datasettet er klart, kan du plotte grafen:

# Trinn 3

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar() +
    theme_classic()

Code Forklaring

  • ggplot()-kallet mottar datasettet og aes()-kartetping.
  • I aes() inkluderer du variabelen x-aksen og hvilken variabel som kreves for å fylle linjen (dvs. am)
  • geom_bar(): Lag søylediagrammet

Utgang:

Legg til en gruppe i søylene

Kartetping vil fylle linjen med to farger, én for hvert nivå. Det er enkelt å endre gruppen ved å velge andre faktorvariabler i datasettet.

Stolpediagram i prosent

Du kan visualisere søylen i prosent i stedet for det rå antallet.

# Stolpediagram i prosent

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = "fill") +
    theme_classic()

Code Forklaring

  • Bruk posisjon = "fyll" i geom_bar()-argumentet for å lage en grafikk med prosent i y-aksen.

Utgang:

Stolpediagram i prosent

Side ved side stenger

Det er enkelt å plotte stolpediagrammet med gruppevariabelen side ved side.

# Bar chart side by side
ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = position_dodge()) +
    theme_classic()

Code Forklaring

  • position=position_dodge(): Forteller eksplisitt hvordan stolpene skal arrangeres

Utgang:

Side ved side barer

Stolpediagram med en sammendragsstatistikk

I den andre delen av veiledningen viser y-aksen en beregnet verdi i stedet for et antall. Merk at dette fortsatt er et søylediagram: et ekte histogram er beskrevet lenger ned, og det bruker et annet geometrisk objekt.

Målet ditt er å lage en graf med gjennomsnittlig mil per gallon for hver type sylinder. For å tegne en informativ graf, følger du disse trinnene:

  • Trinn 1: Lag en ny variabel med gjennomsnittlig mil per gallon per sylinder
  • Trinn 2: Lag et grunnleggende histogram
  • Trinn 3: Endre retningen
  • Trinn 4: Endre fargen
  • Trinn 5: Endre størrelsen
  • Trinn 6: Legg til etiketter i grafen

Trinn 1) Opprett en ny variabel

Du oppretter en dataramme kalt data_histogram som ganske enkelt returnerer gjennomsnittlige miles per gallon etter antall sylindre i bilen. Du kaller denne nye variabelen mean_mpg, og du avrunder gjennomsnittet med to desimaler.

# Trinn 1

data_histogram <- mtcars %>%
mutate(cyl = factor(cyl)) %>%
group_by(cyl) %>%
summarize(mean_mpg = round(mean(mpg), 2))

Trinn 2) Lag et grunnleggende histogram

Du kan plotte histogrammet. Det er ikke polert nok til å gi det til en klient ennå, men det viser allerede trenden.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity")

Code Forklaring

  • Aes() har nå to variabler. Cyl-variabelen refererer til x-aksen, og mean_mpg er y-aksen.
  • Du sender stat = «identitet» slik at geom_bar() bruker y-aksevariabelen som den er i stedet for å telle rader. Standardverdien for geom_bar() er stat = «telling».

Utgang:

histogram

Trinn 3) Endre retningen

Du endrer retningen på grafen fra vertikal til horisontal.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity") +
    coord_flip()

Code Forklaring

  • Du kan kontrollere retningen til grafen med coord_flip().

Utgang:

histogram

Trinn 4) Endre fargen

Du kan differensiere fargene på stolpene i henhold til faktornivået til x-aksevariabelen.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    coord_flip() +
    theme_classic()

Code Forklaring

  • Du kan plotte grafen etter grupper med fill= cyl-avbildningenpingR tar seg automatisk av fargene basert på nivåene til sylindriske variabler

Utgang:

histogram

Trinn 5) Endre størrelse

For å få grafen til å se penere ut, reduserer du bredden på stolpen.

graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity",
        width = 0.5) +
    coord_flip() +
    theme_classic()

Code Forklaring

  • Breddeargumentet i geom_bar() styrer tykkelsen på linjen. En større verdi gjør den bredere.
  • Plottet lagres i objektgrafen, fordi det neste trinnet bruker det uendret. Lagring av mellomliggende plott holder koden lesbar.

Utgang:

histogram

Trinn 6) Legg til etiketter i grafen

Det siste trinnet legger til verdien av mean_mpg som en etikett i hver stolpe.

graph +
    geom_text(aes(label = mean_mpg),
        hjust = 1.5,
        color = "white",
        size = 3) +
    theme_classic()

Code Forklaring

  • Funksjonen geom_text() er nyttig for å kontrollere tekstens estetikk.
    • label=: Legg til en etikett inne i stolpene
    • mean_mpg: Bruk variabelen mean_mpg for etiketten
  • hjust styrer hvor etiketten plasseres langs linjen. Verdier nær 1 plasserer den nær slutten av linjen, og større verdier skyver den tilbake mot aksen. Hvis grafens retning er vertikal, endrer du hjust til vjust.
  • color=”white”: Endre fargen på teksten. Her bruker du den hvite fargen.
  • size=3: Angi størrelsen på teksten.

Utgang:

histogram

Slik sorterer og merker du søyler i et søylediagram i R

To siste finpusser skiller et utkastdiagram fra et publiserbart diagram: sortering av stolpene etter verdi og riktig merking av aksene.

Omorganisering av stolper. ggplot2 sorterer faktornivåer alfabetisk som standard, noe som sjelden er den mest informative rekkefølgen. Pakk inn x-variabelen i reorder() for å sortere etter en annen variabel:

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

Sett et minustegn foran sorteringsvariabelen, reorder(cyl, -mean_mpg), for å reversere retningen.

Legge til titler og akseetiketter. labs()-funksjonen setter hvert tekstelement i ett kall:

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

Sett fill = NULL i labs() for å fjerne forklaringstittelen fullstendig, og bruk theme(legend.position = “none”) for å fjerne forklaringen når x-aksen allerede navngir gruppene.

Å velge dine egne farger. Erstatt standardpaletten med en eksplisitt palett slik at diagrammet samsvarer med husstilen din:

scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))

Hvordan lage et histogram i R med geom_histogram()

Et histogram viser hvordan en enkelt kontinuerlig variabel er fordelt. I stedet for å telle kategorier, deler ggplot2 det numeriske området inn i binger og teller hvor mange observasjoner som faller inn i hver enkelt.

library(ggplot2)
# Most basic histogram
ggplot(mtcars, aes(x = mpg)) +
    geom_histogram()

R skriver ut en melding som anbefaler at du velger et bedre antall beholdere, fordi standardinnstillingen på 30 beholdere er vilkårlig. To argumenter styrer dette:

  • bingerantall intervaller som skal deles inn i.
  • binbredde: bredden på hvert intervall, uttrykt i enhetene til variabelen. Bruk denne når enhetene er meningsfulle.
# 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 er det aller viktigste valget i et histogram. For få bins skjuler den virkelige strukturen, som for eksempel en andre topp; for mange gjør diagrammet til støy. Prøv flere verdier før du bestemmer deg for én.

Sammenligning av grupper. Tilordne en faktor som skal fylles og angi posisjonen slik at fordelingene forblir lesbare:

ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) +
    geom_histogram(bins = 10, position = "identity", alpha = 0.5) +
    theme_classic()

Med posisjon = «identitet» og redusert alfa overlapper histogrammene hverandre, slik at du kan sammenligne former direkte. Bruk posisjon = «utvike» hvis du heller vil se boksene side om side.

Tetthet i stedet for antall. Når gruppene har ulik størrelse, plott tettheten slik at arealene er sammenlignbare, og legg en utjevnet kurve over hverandre:

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

Stolpediagram og histogram i R: Code Referanse

Et søylediagram passer til en kategorisk x-akse, der y-aksen enten er et antall eller en sammendragsstatistikk. Tabellen nedenfor viser ggplot2-kallet for hver variant som er dekket ovenfor:

Målet Code
Telle
ggplot(df, aes(x = factor(x1))) + geom_bar()
Tell med forskjellig farge på fyll
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar()
Tell med grupper, stablet
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar()
Tell med grupper, side om side
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge())
Tell med grupper, stablet i %
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill")
Verdier (sammendragsstatistikk)
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity")
Histogram av en kontinuerlig variabel
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30)

Spørsmål og svar

Bruk et histogram når variabelen på x-aksen er kontinuerlig og du vil se fordelingen. Bruk et søylediagram når x-aksen inneholder forskjellige kategorier og du vil sammenligne dem.

Inne i aes() tilordner fill en variabel til en farge, slik at hver gruppe får sin egen nyanse. Utenfor aes(), inne i geom_bar(), er fill en fast verdi som brukes på hver stolpe.

Det finnes ikke noe universelt svar. Start med kvadratroten av observasjonstallet, og juster deretter. For få intervaller skjuler struktur, som en andre topp, og for mange produserer et støyende, piggete diagram.

Histogrammer er standard første trinn i utforskende dataanalyse for AI-prosjekter, og avdekker skjevhet, avvikere og klasseubalanse før noen modell trenes. Stolpediagrammer oppsummerer deretter funksjonsviktighet og kategorifrekvenser.

Ja. AI-assistenter kan lage utkast til ggplot2-lag fra en enkel beskrivelse av diagrammet og forklare feil, som for eksempel manglende statistiske argumenter. Kjør alltid den genererte koden på dine egne data for å bekrefte kartet.ping er riktig.

Oppsummer dette innlegget med: