Oszlopdiagram és hisztogram R-ben (példával)
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ő a csoportok közötti előfordulások számát számolja.
- A második az y tengely egy változójának összefoglaló statisztikáját (min, max, átlag stb.) mutatja.
Az mtcars adatkészletet a következő változókkal fogja használni:
- 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ó
Hogyan készítsünk oszlopdiagramot
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()`
Ebben az oktatóanyagban az oszlopdiagramot létrehozó geom_bar() geometriai objektum érdekli.
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()
Kód Magyarázat
- Az mtcars adatkészletet átadja a ggplotnak.
- Az aes() argumentumban hozzáadja az x tengelyt tényezőváltozóként (cyl)
- 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`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, 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()
Kód Magyarázat
- A sávok színeit a geometriai objektumon belüli aes() leképezés szabályozza (azaz nem a ggplot()-ban). A színt a kitöltési argumentumokkal módosíthatja. Itt kiválaszthatja a korall színét.
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()
Kód 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 csökkenti az intenzitást. Az alfa 0 és 1 között van. Ha 1, akkor a szín megegyezik a palettával. Ha 0, a szín fehér. Az alfa = 0.1 értéket választja.
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()
Kód Magyarázat
- Az aes()-ban található argumentumkitöltés lehetővé teszi a sáv színének megváltoztatását. A színt a fill = x-tengely változó beállításával módosíthatja. Az Ön példájában az x tengely változója cyl; kitöltés = tényező(cil)
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))
Készen van az adatkészlet, megrajzolhatja a grafikont;
# 3. lépés
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Kód Magyarázat
- A ggpplot() tartalmazza az adatkészlet adatait és az aes().
- 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 leképezés két színnel tölti meg a sávot, minden szinten egy-egy színt. Könnyű megváltoztatni a csoportot más faktorváltozók kiválasztásával az adatkészletben.
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()
Kód 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()
Kód Magyarázat
- position=position_dodge(): Kifejezetten megmondja, hogyan kell elrendezni a sávokat
output:
hisztogram
Az oszlopdiagram oktatóanyagának második részében a változók csoportját az y tengelyen lévő értékekkel ábrázolhatja.
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
Megrajzolhatja a hisztogramot. Nem áll készen arra, hogy kommunikáljon az ügyfél felé, de intuíciót ad a trendről.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Kód 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” argumentumot kell átadnia, hogy az y tengelyen lévő változót számértékként hivatkozhassa. A geom_bar a stat=”bin” értéket használja alapértelmezett értékként.
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()
Kód 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()
Kód Magyarázat
- A gráfot csoportonként ábrázolhatja a fill= cyl leképezéssel. Az R automatikusan gondoskodik a színekről 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()
Kód Magyarázat
- A geom_bar()-on belüli szélesség argumentum szabályozza a sáv méretét. Nagyobb érték növeli a szélességet.
- Megjegyzés: a grafikont a változó gráfban tárolja. Ezt azért teszi, mert a következő lépés nem fogja megváltoztatni a változógráf kódját. Javítja a kód olvashatóságát.
output:
Step 6) Adjon hozzá címkéket a diagramhoz
Az utolsó lépés az mean_mpg változó értékének hozzáadása a címkében.
graph + geom_text(aes(label = mean_mpg), hjust = 1.5, color = "white", size = 3) + theme_classic()
Kód 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
- hcsak a címke helyét szabályozza. Az 1-re zárt értékek a sáv tetején jelenítik meg a címkét, a magasabb értékek pedig a címkét az aljára teszik. Ha a grafikon tájolása függőleges, állítsa a hjust értéket vjust értékre.
- 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:
Összegzésként
Az oszlopdiagram akkor hasznos, ha az x tengely kategorikus változó. Az y tengely lehet számlálás vagy összegző statisztika. Az alábbi táblázat összefoglalja, hogyan vezérelheti az oszlopdiagramot a ggplot2 segítségével:
Objektív | Kód |
---|---|
Gróf |
ggplot(df, eas(x= factor(x1)) + geom_bar() |
Számoljon különböző színű kitöltéssel |
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar() |
Számoljon csoportokkal, halmozottan |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Számoljon csoportokkal, egymás mellett |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar() |
Számlálás csoportokkal, halmozott %-ban |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Értékek |
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity") |