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.

  • 📊 Alapvető megkülönböztetés: Az oszlopdiagram egy kategorikus változót összegez, míg a hisztogram egyetlen folytonos változót intervallumokba sorol.
  • 🧱 A grafika nyelvtana: Minden diagram egy adathalmazt és egy aes() térképet kombinálping, és egy pluszjellel összekapcsolt geometriai objektum.
  • 🎨 Színszabályozás: Egységes színhez a geom_bar() függvényen belül kitöltést kell elhelyezni, a sávok csoportos színezéséhez pedig az aes() függvényen belül.
  • 📐 Pozícióbeállítások: A position = „fill” függvény a számlálókat százalékokká alakítja, a position_dodge() pedig a csoportosított oszlopokat egymás mellé helyezi.
  • 🔢 Értékek ábrázolása: Adjuk át a statisztika = „azonosság” értéket, ha az y tengely már tartalmaz egy számított statisztikát, például egy csoportátlagot.
  • 📏 Hisztogram binning: A geom_histogram() függvényben állítsd be a tárolóhelyeket vagy a tárolóhely-szélességet, mert az alapértelmezett 30 tárolóhely ritkán felel meg az adatoknak.

Oszlopdiagram hisztogram R-ben

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.

  1. Az első megszámolja az egyes csoportokban előfordulások számát.
  2. 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:

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`: 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:

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

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:

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

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:

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

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:

Adjon hozzá egy csoportot a sávokhoz

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:

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

Code Magyarázat

  • position=position_dodge(): Kifejezetten megmondja, hogyan kell elrendezni a sávokat

output:

Side by Side Bars

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:

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

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

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:

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

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:

hisztogram

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:

hisztogram

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)

GYIK

Használjon hisztogramot, ha az x tengely változója folytonos, és látni szeretné az eloszlását. Használjon oszlopdiagramot, ha az x tengely különálló kategóriákat tartalmaz, és össze szeretné hasonlítani őket.

Az aes() függvényen belül a fill egy változót rendel hozzá a színhez, így minden csoport saját árnyalatot kap. Az aes() függvényen kívül, a geom_bar() függvényen belül a fill egy fix érték, amelyet minden sávra alkalmaznak.

Nincs univerzális válasz. Kezdjük a megfigyelések számának négyzetgyökével, majd igazítsuk a számításokat. Túl kevés tároló elrejti a struktúrákat, például a második csúcsot, és túl sok tároló zajos, tüskés diagramot eredményez.

A hisztogramok a mesterséges intelligencia projektek feltáró adatelemzésének standard első lépései, amelyek feltárják a ferdülést, a kiugró értékeket és az osztályok közötti egyensúlyhiányt, mielőtt bármilyen modellt betanítanának. Az oszlopdiagramok ezután összefoglalják a jellemzők fontosságát és a kategóriák gyakoriságát.

Igen. A mesterséges intelligencia asszisztensek képesek ggplot2 rétegeket rajzolni a diagram egyszerű leírásából, és elmagyarázni a hibákat, például a hiányzó stat argumentumot. A generált kódot mindig a saját adatain futtassa a térkép megerősítéséhez.ping igaz.

Foglald össze ezt a bejegyzést a következőképpen: