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.

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.
- Den fรธrste teller antall forekomster i hver gruppe.
- 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:
Merknader: sรธrg for at du konverterer variablene til en faktor ellers behandler R variablene som numeriske. Se eksempelet nedenfor.
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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) |













