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.

  1. Az első a csoportok közötti előfordulások számát számolja.
  2. 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:

Oszlopdiagram: számolás

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.

Oszlopdiagram: számolás

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:

Változtassa meg a sávok színét

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:

Módosítsa az intenzitást

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:

Színezés csoportok szerint

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:

Adjon hozzá egy csoportot a sávokhoz

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:

Oszlopdiagram százalékban

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:

Side by Side Bars

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:

hisztogram

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:

hisztogram

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:

hisztogram

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:

hisztogram

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:

hisztogram

Ö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")