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: