Oszlopdiagram és hisztogram R-ben példával
⚡ Okos összefoglaló
Az R oszlopdiagramja és hisztogramja a ggplot2 segítségével készül, a geom_bar() függvényt használva a kategorikus számokhoz és a geom_histogram() függvényt a folytonos eloszlásokhoz. Ez az útmutató testreszabja a színeket, a csoportosítást és a grafikonokat.ping, egymásra rakás, orientáció, binning és sávon belüli címkék az mtcars adathalmazon.

Mi az oszlopdiagram R-ben?
Az oszlopdiagram nagyszerű módja a kategorikus változók megjelenítésének az x tengelyen. Az ilyen típusú gráf két aspektust jelöl az y tengelyen.
- Az első megszámolja az egyes csoportokban előfordulások számát.
- A második egy változó összefoglaló statisztikáját (minimum, maximum, átlag stb.) mutatja az y tengelyen.
Az mtcars adathalmazt fogod használni, amely a következő változókat tartalmazza:
- cyl: A henger száma az autóban. Numerikus változó
- am: Az átvitel típusa. 0 az automatikus és 1 a kézi. Numerikus változó
- mpg: Mérföld per gallon. Numerikus változó
Mivel a hisztogram nagyon hasonlónak tűnik, érdemes a különbséget kiegyenlíteni, mielőtt bármilyen kódot írnánk.
Oszlopdiagram vs. hisztogram R-ben: Főbb különbségek
A két diagram hasonlít egymásra, és folyamatosan összekeverednek. Különböző kérdésekre válaszolnak, és különböző geometriai objektumokat használnak.
| Kritériumai | Oszlopdiagram | hisztogram |
|---|---|---|
| X tengely változója | Kategória vagy faktor | Folyamatos és numerikus |
| Mit jelképez egy sáv | Egy kategória | Egy intervallum, vagy értéktartomány |
| Rések a rudak között | Igen, a kategóriák külön vannak | Nem, a kukák egymás mellett vannak |
| Bárrendelés | Szabadon átrendezhető | Numerikus skála által rögzítve |
| Megválaszolt kérdés | Hogyan viszonyulnak egymáshoz a csoportok? | Hogyan oszlik el egy változó? |
| ggplot2 objektum | geom_bar() | geom_hisztogram() |
Az ökölszabály: ha az oszlopok átrendezése továbbra is értelmes lenne, akkor oszlopdiagramot használunk. Ha az átrendezésük tönkretenné a jelentésüket, akkor hisztogramot. Ugyanazon folytonos változó kvartilis alapú összefoglalásához használjunk… dobozdiagram.
Hogyan készítsünk oszlopdiagramot R-ben
Grafikon létrehozásához R, használhatja a ggplot könyvtárat, amely publikálásra kész gráfokat hoz létre. Ennek a könyvtárnak az alapvető szintaxisa a következő:
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()`
Ez az oktatóanyag a geom_bar() geometriai objektumra összpontosít, amely az oszlopdiagramot rajzolja, valamint a geom_histogram() függvényre, amely folytonos adatokat jelenít meg.
Oszlopdiagram: számolás
Az első grafikon a henger frekvenciáját mutatja a geom_bar() függvényben. Az alábbi kód a legalapvetőbb szintaxis.
library(ggplot2) # Most basic bar chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
Code Magyarázat
- Az mtcars adatkészletet átadja a ggplotnak.
- Az aes() argumentumon belül az x tengelyt a cyl faktorváltozóra kell állítanod.
- A + jel azt jelenti, hogy azt szeretné, hogy R továbbra is olvassa a kódot. Feltörésével olvashatóbbá teszi a kódot.
- Használja a geom_bar() függvényt a geometriai objektumhoz.
output:
Megjegyzések: ügyeljen arra, hogy a változókat alakítsa át tényezővé, ellenkező esetben az R numerikusként kezeli a változókat. Lásd az alábbi példát.
A grafikon testreszabása
Négy argumentum adható át a grafikon testreszabásához:
- `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
Változtassa meg a sávok színét
Megváltoztathatja a sávok színét. Vegye figyelembe, hogy a sávok színei hasonlóak.
# Change the color of the bars ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(fill = "coral") + theme_classic()
Code Magyarázat
- A sávok színeit az aes() map vezérli.ping a geometriai objektumon belül (azaz nem a ggplot() függvényben). A színt a kitöltés argumentumokkal módosíthatod. Itt a korall színt választhatod ki.
output:
Ezt a kódot használhatja:
grDevices::colors()
az összes elérhető szín megtekintéséhez R. Körülbelül 650 szín létezik.
Változtasd meg az intenzitást
Növelheti vagy csökkentheti a sávok színének intenzitását
# Change intensity ggplot(mtcars, aes(factor(cyl))) + geom_bar(fill = "coral", alpha = 0.5) + theme_classic()
Code Magyarázat
- A sáv intenzitásának növeléséhez/csökkentéséhez módosíthatja az alfa értékét. A nagy alfa növeli az intenzitást, az alacsony alfa pedig csökkenti. Az alfa 0 és 1 között mozog. 1 értéknél a szín pontosan illeszkedik a palettához; 0 értéknél a sáv láthatatlan. Itt az alfa = 0.5 értéket választhatja.
output:
Színezés csoportonként
Megváltoztathatja a sávok színét, vagyis minden csoporthoz egy-egy színt. Például a cyl változónak három szintje van, akkor az oszlopdiagramot három színnel ábrázolhatja.
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
Code Magyarázat
- Az aes() függvényen belüli fill argumentum megváltoztatja a sáv színét. A színt a fill = x-tengely változó beállításával módosíthatod. A példádban az x-tengely változója cyl; fill = factor(cyl)
output:
Adjon hozzá egy csoportot a sávokhoz
Az y tengelyt tovább oszthatja egy másik tényezőszint alapján. Például megszámolhatja az automatikus és kézi sebességváltók számát a henger típusa alapján.
A következőképpen jár el:
- 1. lépés: Hozza létre az adatkeretet az mtcars adatkészlettel
- 2. lépés: Az am változót automata sebességváltó esetén auto-val, kézi sebességváltónál man-val jelölje meg. Konvertálja az am és a cyl értékeket tényezőként, hogy ne kelljen a factor()-t használnia a ggplot() függvényben.
- 3. lépés: Ábrázolja az oszlopdiagramot a sebességváltó hengerenkénti megszámlálásához
library(dplyr) # Step 1 data <- mtcars %>% #Step 2 mutate(am = factor(am, labels = c("auto", "man")), cyl = factor(cyl))
Miután az adathalmaz elkészült, megrajzolhatja a grafikont:
# 3. lépés
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Code Magyarázat
- A ggplot() hívás fogadja az adathalmaz adatait és az aes() map-et.ping.
- Az aes()-ben megadja az x-tengely változót, és azt, hogy melyik változó szükséges a sáv kitöltéséhez (azaz am)
- geom_bar(): Az oszlopdiagram létrehozása
output:
A térképping két színnel tölti ki a sávot, minden szinthez eggyel. A csoportosítás könnyedén módosítható más faktorváltozók kiválasztásával az adathalmazban.
Oszlopdiagram százalékban
A sávot százalékban is megjelenítheti a nyers szám helyett.
# Oszlopdiagram százalékban
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
Code Magyarázat
- A geom_bar() argumentumban a position = "fill" használatával hozzon létre egy grafikát az y tengelyen százalékos értékkel.
output:
Egymás melletti rácsok
Könnyen ábrázolható az oszlopdiagram a csoportváltozóval egymás mellett.
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
Code Magyarázat
- position=position_dodge(): Kifejezetten megmondja, hogyan kell elrendezni a sávokat
output:
Oszlopdiagram összefoglaló statisztikával
A bemutató második részében az y tengely egy számított értéket ábrázol, nem pedig egy darabszámot. Megjegyzendő, hogy ez továbbra is egy oszlopdiagram: egy valódi hisztogramot később tárgyalunk, és egy másik geometriai objektumot használ.
A cél az, hogy grafikont hozzon létre az átlagos mérföld/gallon értékkel minden egyes hengertípushoz. Informatív grafikon rajzolásához kövesse az alábbi lépéseket:
- 1. lépés: Hozzon létre egy új változót a hengerenkénti átlagos mérföld/gallon értékkel
- 2. lépés: Hozzon létre egy alapvető hisztogramot
- 3. lépés: Változtassa meg a tájolást
- 4. lépés: Változtassa meg a színt
- 5. lépés: Módosítsa a méretet
- 6. lépés: Adjon hozzá címkéket a diagramhoz
Step 1) Hozzon létre egy új változót
Létrehoz egy adatkeretet data_histogram néven, amely egyszerűen visszaadja az átlagos mérföld/gallon értéket az autóban lévő hengerek számával. Ezt az új változót mean_mpg-nek hívod, és az átlagot két tizedesjegyre kerekíted.
# 1. lépés
data_histogram <- mtcars %>% mutate(cyl = factor(cyl)) %>% group_by(cyl) %>% summarize(mean_mpg = round(mean(mpg), 2))
Step 2) Hozzon létre egy alapvető hisztogramot
Megrajzolhatod a hisztogramot. Még nincs elég kidolgozva ahhoz, hogy egy ügyfélnek add, de a trendet már mutatja.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Code Magyarázat
- Az aes()-nek most két változója van. A cyl változó az x tengelyre, a mean_mpg pedig az y tengelyre vonatkozik.
- A stat = „identity” paramétert adjuk meg, így a geom_bar() függvény az y tengely változóját használja a sorok számlálása helyett. A geom_bar() függvény alapértelmezett értéke a stat = „count”.
output:
Step 3) Változtassa meg a tájolást
A grafikon tájolását függőlegesről vízszintesre módosíthatja.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
Code Magyarázat
- A grafikon tájolását a coord_flip() segítségével szabályozhatja.
output:
Step 4) Változtasd meg a színt
A sávok színeit az x tengely változó faktorszintje szerint különböztetheti meg.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + coord_flip() + theme_classic()
Code Magyarázat
- A fill= cyl leképezéssel csoportok szerint ábrázolhatod a grafikont.pingAz R automatikusan kezeli a színeket a cyl változó szintjei alapján.
output:
Step 5) Változtassa meg a méretet
A grafikon szebb kinézete érdekében csökkentse a sáv szélességét.
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity", width = 0.5) + coord_flip() + theme_classic()
Code Magyarázat
- A geom_bar() függvényen belüli width argumentum a rúd vastagságát szabályozza. Nagyobb érték szélesebbé teszi azt.
- A diagram az objektumgráfban tárolódik, mivel a következő lépés változatlanul újra felhasználja. A köztes diagramok tárolása biztosítja a kód olvashatóságát.
output:
Step 6) Adjon hozzá címkéket a diagramhoz
Az utolsó lépésben a mean_mpg értékét címkéként adjuk hozzá minden egyes oszlophoz.
graph +
geom_text(aes(label = mean_mpg),
hjust = 1.5,
color = "white",
size = 3) +
theme_classic()
Code Magyarázat
- A geom_text() függvény hasznos a szöveg esztétikájának szabályozására.
- label=: Adjon hozzá egy címkét a sávokhoz
- mean_mpg: Használja a mean_mpg változót a címkéhez
- A hjust paraméter szabályozza, hogy a felirat hol helyezkedjen el a sávon. Az 1-hez közeli értékek a sáv végéhez közel helyezik, míg a nagyobb értékek a tengely felé tolják el. Ha a grafikon tájolása függőleges, a hjust paramétert vjust-ra kell állítani.
- color=”white”: A szöveg színének módosítása. Itt a fehér színt használja.
- size=3: Állítsa be a szöveg méretét.
output:
Hogyan rendezzük és címkézzük az oszlopokat egy oszlopdiagramban R-ben
Két utolsó simítás választja el a vázlatdiagramot a publikálhatótól: az oszlopok érték szerinti rendezése és a tengelyek megfelelő címkézése.
Sáv átrendezése. A ggplot2 alapértelmezés szerint betűrendbe rendezi a faktorszinteket, ami ritkán a leginformatívabb sorrend. A reorder() függvényben az x változót egy második változó szerinti rendezéshez használjuk:
# 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()
A rendezési változó elé írjunk egy mínuszjelet, reorder(cyl, -mean_mpg), hogy megfordítsuk a sorrendet.
Címek és tengelyfeliratok hozzáadása. A labs() függvény egyetlen hívásban beállítja az összes szöveges elemet:
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()
Állítsd be a fill = NULL értéket a labs() függvényen belül a jelmagyarázat címének teljes eltávolításához, és használd a theme(legend.position = “none”) függvényt a jelmagyarázat eltávolításához, ha az x tengely már elnevezi a csoportokat.
Saját színek kiválasztása. Cserélje le az alapértelmezett palettát egy explicit palettára, hogy a diagram illeszkedjen a ház stílusához:
scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))
Hogyan készítsünk hisztogramot R-ben a geom_histogram() függvénnyel?
A hisztogram egyetlen folytonos változó eloszlását mutatja. A kategóriák számlálása helyett a ggplot2 a numerikus tartományt rekeszekre bontja, és megszámolja, hogy hány megfigyelés esik az egyes rekeszekbe.
library(ggplot2) # Most basic histogram ggplot(mtcars, aes(x = mpg)) + geom_histogram()
Az R egy üzenetet ír ki, amely azt javasolja, hogy válasszunk egy jobb tárolórekesz-számot, mivel az alapértelmezett 30 rekesz tetszőleges. Ezt két argumentum vezérli:
- kukák: az intervallumok száma, amelyekre a tartományt fel kell osztani.
- rekeszszélesség: az egyes intervallumok szélessége, a változó egységeiben kifejezve. Ezt akkor használjuk, ha az egységek értelmesek.
# 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()
A hisztogramban a binning (tartományokba osztás) a legfontosabb választás. Túl kevés bin elrejti a valódi struktúrákat, például a második csúcsot; túl sok bin zajossá teszi a diagramot. Próbáljon ki több értéket, mielőtt egynél maradna.
Csoportok összehasonlítása. Képezzen le egy kitöltendő tényezőt, és állítsa be a pozíciót, hogy az eloszlások olvashatóak maradjanak:
ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) + geom_histogram(bins = 10, position = "identity", alpha = 0.5) + theme_classic()
Ha a position = „identity” és az alfa értéke csökkent, a hisztogramok átfedésben vannak, így közvetlenül összehasonlíthatja az alakzatokat. Használja a position = „dodge” beállítást, ha inkább egymás mellett szeretné látni a rekeszeket.
Sűrűség a darabszám helyett. Amikor a csoportok mérete eltérő, ábrázoljuk a sűrűséget úgy, hogy a területek összehasonlíthatók legyenek, és egy simított görbét fedjünk le:
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()
Oszlopdiagram és hisztogram R-ben: Code Referencia
Az oszlopdiagram egy kategorikus x tengelyt ábrázol, ahol az y tengely vagy egy darabszámot, vagy egy összefoglaló statisztikát jelöl. Az alábbi táblázat felsorolja a ggplot2 hívást a fent tárgyalt egyes változatokhoz:
| Objektív | Code |
|---|---|
| Gróf |
ggplot(df, aes(x = factor(x1))) + geom_bar() |
| Számoljon különböző színű kitöltéssel |
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar() |
| Számoljon csoportokkal, halmozottan |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar() |
| Számoljon csoportokkal, egymás mellett |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge()) |
| Számlálás csoportokkal, halmozott %-ban |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill") |
| Értékek (összefoglaló statisztika) |
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity") |
| Folyamatos változó hisztogramja |
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30) |













