Stapeldiagram och histogram i R med exempel

โšก Smart sammanfattning

Stapeldiagram och histogram i R รคr byggda med ggplot2, med geom_bar() fรถr kategoriska rรคkningar och geom_histogram() fรถr kontinuerliga fรถrdelningar. Denna genomgรฅng anpassar fรคrg, grupperingping, stapling, orientering, binning och etiketter i stapeln pรฅ mtcars-datasetet.

  • ๐Ÿ“Š Kรคrnskillnad: Ett stapeldiagram sammanfattar en kategorisk variabel, medan ett histogram delar upp en enda kontinuerlig variabel i intervall.
  • ๐Ÿงฑ Grafikens grammatik: Varje plott kombinerar en datauppsรคttning, en aes()-kartaping, och ett geometriskt objekt sammanfogat med plustecknet.
  • ๐ŸŽจ Fรคrgkontroll: Placera fyllningen inuti geom_bar() fรถr en enhetlig fรคrg, och inuti aes() fรถr att fรคrglรคgga staplarna gruppvis.
  • ๐Ÿ“ Positionsjusteringar: position = "fill" konverterar antal till procent och position_dodge() placerar grupperade staplar sida vid sida.
  • ๐Ÿ”ข Plotta vรคrden: Pass stat = "identitet" nรคr y-axeln redan innehรฅller en berรคknad statistik, sรฅsom ett gruppmedelvรคrde.
  • ๐Ÿ“ Histogrambinning: Stรคll in bins eller binwidth i geom_histogram(), eftersom standardvรคrdet pรฅ 30 bins sรคllan passar data.

Stapeldiagramhistogram i R

Vad รคr ett stapeldiagram i R?

Ett stapeldiagram รคr ett utmรคrkt sรคtt att visa kategoriska variabler i x-axeln. Denna typ av graf betecknar tvรฅ aspekter pรฅ y-axeln.

  1. Den fรถrsta rรคknar antalet fรถrekomster i varje grupp.
  2. Den andra visar en sammanfattande statistik (minimum, maximum, medelvรคrde och sรฅ vidare) fรถr en variabel pรฅ y-axeln.

Du kommer att anvรคnda mtcars-datasetet, som har fรถljande variabler:

  • cyl: Nummer pรฅ cylindern i bilen. Numerisk variabel
  • am: Typ av รถverfรถring. 0 fรถr automatisk och 1 fรถr manuell. Numerisk variabel
  • mpg: Miles per gallon. Numerisk variabel

Eftersom ett histogram ser sรฅ likt ut รคr det vรคrt att lรถsa skillnaden innan man skriver nรฅgon kod.

Stapeldiagram vs. histogram i R: Viktiga skillnader

De tvรฅ diagrammen ser likadana ut och fรถrvรคxlas stรคndigt. De besvarar olika frรฅgor och anvรคnder olika geometriska objekt.

Kriterier Stapeldiagram Histogram
X-axelvariabel Kategorisk eller faktor Kontinuerlig och numerisk
Vad en stapel representerar En kategori Ett intervall, eller en bin, med vรคrden
Mellanrum mellan staplarna Ja, kategorierna รคr separata Nej, soptunnor stรฅr bredvid varandra
Barbestรคllning Kan omorganiseras fritt Fixerad av den numeriska skalan
Frรฅga besvarad Hur stรฅr sig grupperna i jรคmfรถrelse? Hur รคr en variabel fรถrdelad?
ggplot2-objekt geom_bar() geom_histogram()

Tumregeln: om det fortfarande vore meningsfullt att รคndra ordningen pรฅ staplarna har du ett stapeldiagram. Om det skulle fรถrstรถra betydelsen har du ett histogram. Fรถr kvartilbaserade sammanfattningar av samma kontinuerliga variabel, anvรคnd ett box tomt.

Hur man skapar ett stapeldiagram i R

Fรถr att skapa en graf i R, kan du anvรคnda biblioteket ggplot som skapar grafer som รคr fรคrdiga fรถr publicering. Den grundlรคggande syntaxen fรถr detta bibliotek รคr:

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

Den hรคr handledningen fokuserar pรฅ det geometriska objektet geom_bar(), som ritar stapeldiagrammet, och pรฅ geom_histogram() fรถr kontinuerliga data.

Stapeldiagram: rรคkna

Din fรถrsta graf visar cylinderfrekvensen med geom_bar(). Koden nedan รคr den mest grundlรคggande syntaxen.

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

Code Fรถrklaring

  • Du skickar datasetet mtcars till ggplot.
  • Inuti argumentet aes() stรคller du in x-axeln pรฅ faktorvariabeln cyl
  • Tecknet + betyder att du vill att R ska fortsรคtta lรคsa koden. Det gรถr koden mer lรคsbar genom att bryta den.
  • Anvรคnd geom_bar() fรถr det geometriska objektet.

Produktion:

Stapeldiagram: rรคkna

Anmรคrkningar: se till att du konverterar variablerna till en faktor annars behandlar R variablerna som numeriska. Se exemplet nedan.

Stapeldiagram: rรคkna

Anpassa grafen

Fyra argument kan skickas fรถr att anpassa 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	

ร„ndra fรคrgen pรฅ staplarna

Du kan รคndra fรคrgen pรฅ staplarna. Observera att fรคrgerna pรฅ staplarna alla รคr lika.

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

Code Fรถrklaring

  • Fรคrgerna pรฅ staplarna styrs av aes()-kartanping inuti det geometriska objektet (dvs. inte i ggplot()). Du kan รคndra fรคrgen med fyllningsargumenten. Hรคr vรคljer du korallfรคrgen.

Produktion:

ร„ndra fรคrgen pรฅ staplarna

Du kan anvรคnda den hรคr koden:

grDevices::colors()

fรถr att se alla fรคrger som finns tillgรคngliga i R. Det finns cirka 650 fรคrger.

ร„ndra intensiteten

Du kan รถka eller minska intensiteten pรฅ staplarnas fรคrg

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

Code Fรถrklaring

  • Fรถr att รถka/minska stapelns intensitet kan du รคndra vรคrdet pรฅ alfa. En hรถg alfa รถkar intensiteten och lรฅg alfa minskar intensiteten. Alfa varierar frรฅn 0 till 1. Vid 1 matchar fรคrgen paletten exakt; vid 0 รคr stapeln osynlig. Hรคr vรคljer du alfa = 0.5.

Produktion:

ร„ndra intensiteten

Fรคrglรคgg efter grupper

Du kan รคndra fรคrgerna pรฅ staplarna, vilket betyder en annan fรคrg fรถr varje grupp. Till exempel har cyl variabel tre nivรฅer, dรฅ kan du rita stapeldiagrammet med tre fรคrger.

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

Code Fรถrklaring

  • Argumentet fill inuti aes() รคndrar fรคrgen pรฅ stapeln. Du รคndrar fรคrgen genom att sรคtta fill = x-axelvariabeln. I ditt exempel รคr x-axelvariabeln cyl; fill = factor(cyl)

Produktion:

Fรคrg efter grupper

Lรคgg till en grupp i staplarna

Du kan ytterligare dela upp y-axeln baserat pรฅ en annan faktornivรฅ. Till exempel kan du rรคkna antalet automatiska och manuella vรคxellรฅdor baserat pรฅ cylindertypen.

Du kommer att gรฅ tillvรคga enligt fรถljande:

  • Steg 1: Skapa dataramen med mtcars dataset
  • Steg 2: Mรคrk variabeln am med auto fรถr automatisk vรคxellรฅda och man fรถr manuell vรคxellรฅda. Konvertera am och cyl som en faktor sรฅ att du inte behรถver anvรคnda factor() i ggplot()-funktionen.
  • Steg 3: Rita stapeldiagrammet fรถr att rรคkna antalet transmissioner per cylinder
library(dplyr)
# Step 1
data <- mtcars %>% 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

Med datamรคngden klar kan du rita grafen:

# Steg 3

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

Code Fรถrklaring

  • Anropet ggplot() tar emot datamรคngden och aes()-kartanping.
  • I aes() inkluderar du variabeln x-axeln och vilken variabel som krรคvs fรถr att fylla stapeln (dvs. am)
  • geom_bar(): Skapa stapeldiagrammet

Produktion:

Lรคgg till en grupp i staplarna

Kartanping kommer att fylla stapeln med tvรฅ fรคrger, en fรถr varje nivรฅ. Det รคr enkelt att รคndra gruppen genom att vรคlja andra faktorvariabler i datamรคngden.

Stapeldiagram i procent

Du kan visualisera stapeln i procent istรคllet fรถr det rรฅa antalet.

# Stapeldiagram i procent

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

Code Fรถrklaring

  • Anvรคnd position = โ€œfillโ€ i argumentet geom_bar() fรถr att skapa en grafik med procent i y-axeln.

Produktion:

Stapeldiagram i procent

Sida vid sida barer

Det รคr lรคtt att plotta stapeldiagrammet med gruppvariabeln sida vid sida.

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

Code Fรถrklaring

  • position=position_dodge(): Berรคttar uttryckligen hur man ordnar staplarna

Produktion:

Side by Side Bars

Stapeldiagram med sammanfattande statistik

I den andra delen av handledningen visar y-axeln ett berรคknat vรคrde snarare รคn ett antal. Observera att detta fortfarande รคr ett stapeldiagram: ett verkligt histogram beskrivs lรคngre ner och det anvรคnder ett annat geometriskt objekt.

Ditt mรฅl รคr att skapa en graf med den genomsnittliga milen per gallon fรถr varje typ av cylinder. Fรถr att rita en informativ graf fรถljer du dessa steg:

  • Steg 1: Skapa en ny variabel med den genomsnittliga milen per gallon per cylinder
  • Steg 2: Skapa ett grundlรคggande histogram
  • Steg 3: ร„ndra orienteringen
  • Steg 4: ร„ndra fรคrg
  • Steg 5: ร„ndra storleken
  • Steg 6: Lรคgg till etiketter i diagrammet

Steg 1) Skapa en ny variabel

Du skapar en dataram som heter data_histogram som helt enkelt returnerar genomsnittliga miles per gallon med antalet cylindrar i bilen. Du kallar denna nya variabel mean_mpg, och du avrundar medelvรคrdet med tvรฅ decimaler.

# Steg 1

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

Steg 2) Skapa ett grundlรคggande histogram

Du kan rita histogrammet. Det รคr รคnnu inte tillrรคckligt polerat fรถr att ge det till en klient, men det visar redan trenden.

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

Code Fรถrklaring

  • aes() har nu tvรฅ variabler. Cyl-variabeln hรคnvisar till x-axeln, och mean_mpg รคr y-axeln.
  • Du skickar stat = "identity" sรฅ att geom_bar() anvรคnder y-axelvariabeln som den รคr istรคllet fรถr att rรคkna rader. Standardvรคrdet fรถr geom_bar() รคr stat = "count".

Produktion:

Histogram

Steg 3) ร„ndra orienteringen

Du รคndrar grafens orientering frรฅn vertikal till horisontell.

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

Code Fรถrklaring

  • Du kan styra grafens orientering med coord_flip().

Produktion:

Histogram

Steg 4) ร„ndra fรคrgen

Du kan differentiera fรคrgerna pรฅ staplarna efter faktornivรฅn fรถr x-axelvariabeln.

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

Code Fรถrklaring

  • Du kan plotta grafen i grupper med fill= cyl-avbildningenpingR tar automatiskt hand om fรคrgerna baserat pรฅ nivรฅerna av cyl-variabler

Produktion:

Histogram

Steg 5) ร„ndra storleken

Fรถr att grafen ska se snyggare ut minskar du bredden pรฅ stapeln.

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

Code Fรถrklaring

  • Breddargumentet i geom_bar() styr stapelns tjocklek. Ett stรถrre vรคrde gรถr den bredare.
  • Diagrammet lagras i objektgrafen, eftersom nรคsta steg รฅteranvรคnder det ofรถrรคndrat. Att lagra mellanliggande diagram hรฅller koden lรคsbar.

Produktion:

Histogram

Steg 6) Lรคgg till etiketter i diagrammet

Det sista steget lรคgger till vรคrdet mean_mpg som en etikett inuti varje stapel.

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

Code Fรถrklaring

  • Funktionen geom_text() รคr anvรคndbar fรถr att styra textens estetik.
    • label=: Lรคgg till en etikett inuti staplarna
    • mean_mpg: Anvรคnd variabeln mean_mpg fรถr etiketten
  • hjust styr var etiketten placeras lรคngs stapeln. Vรคrden nรคra 1 placerar den nรคra slutet av stapeln, och stรถrre vรคrden flyttar den tillbaka mot axeln. Om grafens orientering รคr vertikal, รคndra hjust till vjust.
  • color=โ€whiteโ€: ร„ndra fรคrgen pรฅ texten. Hรคr anvรคnder du den vita fรคrgen.
  • size=3: Stรคll in storleken pรฅ texten.

Produktion:

Histogram

Hur man ordnar och mรคrker staplar i ett stapeldiagram i R

Tvรฅ sista detaljer skiljer ett utkast till ett diagram frรฅn ett publicerbart: sortering av staplarna efter vรคrde och korrekt mรคrkning av axlarna.

ร„ndra ordning pรฅ staplar. ggplot2 ordnar faktornivรฅerna alfabetiskt som standard, vilket sรคllan รคr den mest informativa ordningen. Radbryt variabeln x i reorder() fรถr att sortera efter en andra 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()

Sรคtt ett minustecken fรถre sorteringsvariabeln, reorder(cyl, -mean_mpg), fรถr att vรคnda riktningen.

Lรคgga till titlar och axeletiketter. Funktionen labs() stรคller in varje textelement i ett anrop:

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

Sรคtt fill = NULL inuti labs() fรถr att ta bort fรถrklaringstiteln helt och hรฅllet, och anvรคnd theme(legend.position = โ€œnoneโ€) fรถr att ta bort fรถrklaringen nรคr x-axeln redan namnger grupperna.

Att vรคlja dina egna fรคrger. Ersรคtt standardpaletten med en explicit palett sรฅ att diagrammet matchar din husstil:

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

Hur man skapar ett histogram i R med geom_histogram()

Ett histogram visar hur en enskild kontinuerlig variabel รคr fรถrdelad. Istรคllet fรถr att rรคkna kategorier delar ggplot2 upp det numeriska intervallet i fack och rรคknar hur mรฅnga observationer som faller inom varje kategori.

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

R skriver ut ett meddelande som rekommenderar att du vรคljer ett bรคttre antal fack, eftersom standardvรคrdet pรฅ 30 fack รคr godtyckligt. Tvรฅ argument styr detta:

  • bins: antalet intervall att dela upp intervallet i.
  • binbredd: bredden pรฅ varje intervall, uttryckt i variabelns enheter. Anvรคnd denna nรคr enheterna รคr meningsfulla.
# 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 รคr det enskilt viktigaste valet i ett histogram. Fรถr fรฅ bins dรถljer verklig struktur, sรฅsom en andra topp; fรถr mรฅnga gรถr diagrammet till brus. Testa flera vรคrden innan du bestรคmmer dig fรถr ett.

Jรคmfรถra grupper. Mappa en faktor att fylla och ange positionen sรฅ att fรถrdelningarna fรถrblir lรคsbara:

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

Med position = โ€identitetโ€ och reducerad alfa รถverlappar histogrammen varandra sรฅ att du kan jรคmfรถra former direkt. Anvรคnd position = โ€dodgeโ€ om du hellre vill se rutorna sida vid sida.

Densitet istรคllet fรถr antal. Nรคr grupperna skiljer sig รฅt i storlek, plotta densiteten sรฅ att ytorna รคr jรคmfรถrbara och lรคgg en utjรคmnad kurva รถver varandra:

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

Stapeldiagram och histogram i R: Code Hรคnvisning

Ett stapeldiagram passar fรถr en kategorisk x-axel, dรคr y-axeln antingen รคr ett antal eller en sammanfattningsstatistik. Tabellen nedan listar ggplot2-anropet fรถr varje variant som behandlas ovan:

Mรฅl Code
Att Rรคkna
ggplot(df, aes(x = factor(x1))) + geom_bar()
Rรคkna med olika fรคrg pรฅ fyllningen
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar()
Rรคkna med grupper, staplade
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar()
Rรคkna med grupper, sida vid sida
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge())
Rรคkna med grupper, staplade i %
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill")
Vรคrden (sammanfattande statistik)
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity")
Histogram fรถr en kontinuerlig variabel
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30)

Vanliga frรฅgor

Anvรคnd ett histogram nรคr x-axelns variabel รคr kontinuerlig och du vill se dess fรถrdelning. Anvรคnd ett stapeldiagram nรคr x-axeln innehรฅller distinkta kategorier och du vill jรคmfรถra dem.

Inuti aes() mappar fill en variabel till fรคrg, sรฅ varje grupp fรฅr sin egen nyans. Utanfรถr aes(), inuti geom_bar(), รคr fill ett fast vรคrde som tillรคmpas pรฅ varje stapel.

Det finns inget universellt svar. Bรถrja med kvadratroten ur observationsantalet och justera sedan. Fรถr fรฅ fack dรถljer strukturer som en andra topp, och fรถr mรฅnga producerar ett brusigt, taggigt diagram.

Histogram รคr det fรถrsta standardsteget i explorativ dataanalys fรถr AI-projekt, och avslรถjar skevhet, extremvรคrden och klassobalans innan nรฅgon modell trรคnas. Stapeldiagram sammanfattar sedan funktionernas betydelse och kategorifrekvenser.

Ja. AI-assistenter kan skapa ggplot2-lager frรฅn en enkel beskrivning av diagrammet och fรถrklara fel som ett saknat statistiskt argument. Kรถr alltid den genererade koden pรฅ dina egna data fรถr att bekrรคfta kartan.ping รคr rรคtt.

Sammanfatta detta inlรคgg med: