Bagan Batang & Histogram di R (dengan Contoh)

Daftar Isi:

Anonim

Bagan batang adalah cara terbaik untuk menampilkan variabel kategori di sumbu x. Jenis grafik ini menunjukkan dua aspek pada sumbu y.

  1. Yang pertama menghitung jumlah kemunculan antar kelompok.
  2. Yang kedua menunjukkan statistik ringkasan (min, maks, rata-rata, dan seterusnya) dari variabel di sumbu y.

Anda akan menggunakan dataset mtcars dengan memiliki variabel berikut:

  • cyl: Jumlah silinder di dalam mobil. Variabel numerik
  • am: Jenis transmisi. 0 untuk otomatis dan 1 untuk manual. Variabel numerik
  • mpg: Mil per galon. Variabel numerik

Dalam tutorial ini, Anda akan belajar

  • Cara membuat Bagan Batang
  • Ubah warna bilah
  • Ubah intensitas
  • Warnai menurut kelompok
  • Tambahkan grup di bar
  • Grafik batang dalam persentase
  • Bilah berdampingan
  • Histogram

Cara membuat Bagan Batang

Untuk membuat grafik di R, Anda bisa menggunakan perpustakaan ggplot yang membuat grafik siap untuk publikasi. Sintaks dasar pustaka ini adalah:

ggplot(data, mapping = aes()) +geometric objectarguments:data: dataset used to plot the graphmapping: Control the x and y-axisgeometric 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()`

Dalam tutorial ini, Anda tertarik dengan objek geometris geom_bar () yang membuat diagram batang.

Bagan batang: hitung

Grafik pertama Anda menunjukkan frekuensi silinder dengan geom_bar (). Kode di bawah ini adalah sintaks paling dasar.

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

Penjelasan Kode

  • Anda meneruskan mtcars set data ke ggplot.
  • Di dalam argumen aes (), Anda menambahkan sumbu x sebagai variabel faktor (silinder)
  • Tanda + berarti Anda ingin R terus membaca kodenya. Itu membuat kode lebih mudah dibaca dengan memecahnya.
  • Gunakan geom_bar () untuk objek geometris.

Keluaran:

Catatan : pastikan Anda mengonversi variabel menjadi faktor, jika tidak R memperlakukan variabel sebagai numerik. Lihat contoh di bawah ini.

Sesuaikan grafik

Empat argumen dapat diberikan untuk menyesuaikan grafik:

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

Ubah warna bilah

Anda dapat mengubah warna bilah. Perhatikan bahwa warna batang semuanya serupa.

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

Penjelasan Kode

  • Warna batang dikontrol oleh pemetaan aes () di dalam objek geometris (yaitu bukan di ggplot ()). Anda dapat mengubah warna dengan argumen isian. Di sini, Anda memilih warna koral.

Keluaran:

Anda dapat menggunakan kode ini:

grDevices::colors() 

untuk melihat semua warna yang tersedia di R. Ada sekitar 650 warna.

Ubah intensitas

Anda dapat menambah atau mengurangi intensitas warna batang

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

Penjelasan Kode

  • Untuk menambah / mengurangi intensitas bilah, Anda dapat mengubah nilai alfa. Alfa besar meningkatkan intensitas, dan alfa rendah mengurangi intensitas. alpha berkisar dari 0 hingga 1. Jika 1, maka warnanya sama dengan palet. Jika 0, warnanya putih. Anda memilih alpha = 0,1.

Keluaran:

Warnai menurut kelompok

Anda dapat mengubah warna batang, yang berarti satu warna berbeda untuk setiap grup. Misalnya variabel cyl memiliki tiga level, maka Anda dapat memplot diagram batang dengan tiga warna.

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

Penjelasan Kode

  • Argumen mengisi di dalam aes () memungkinkan mengubah warna bilah. Anda mengubah warna dengan mengatur fill = variabel sumbu x. Dalam contoh Anda, variabel sumbu x adalah silinder; isi = faktor (silinder)

Keluaran:

Tambahkan grup di bar

Anda selanjutnya dapat membagi sumbu y berdasarkan tingkat faktor lain. Misalnya, Anda dapat menghitung jumlah transmisi otomatis dan manual berdasarkan jenis silindernya.

Anda akan melanjutkan sebagai berikut:

  • Langkah 1: Buat bingkai data dengan set data mtcars
  • Langkah 2: Beri label variabel am dengan otomatis untuk transmisi otomatis dan manusia untuk transmisi manual. Ubah am dan cyl sebagai faktor sehingga Anda tidak perlu menggunakan faktor () dalam fungsi ggplot ().
  • Langkah 3: Plot diagram batang untuk menghitung jumlah transmisi menurut silinder
library(dplyr)# Step 1data <- mtcars % > %#Step 2mutate(am = factor(am, labels = c("auto", "man")),cyl = factor(cyl))

Anda telah menyiapkan set data, Anda dapat memplot grafik;

# Langkah 3

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

Penjelasan Kode

  • Ggpplot () berisi data set data dan aes ().
  • Di aes () Anda memasukkan variabel sumbu x dan variabel mana yang diperlukan untuk mengisi bilah (yaitu am)
  • geom_bar (): Buat diagram batang

Keluaran:

Pemetaan akan mengisi bilah dengan dua warna, satu warna untuk setiap level. Mudah untuk mengubah grup dengan memilih variabel faktor lain dalam kumpulan data.

Grafik batang dalam persentase

Anda dapat memvisualisasikan bilah dalam persentase alih-alih jumlah mentah.

# Grafik batang dalam persentase

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

Penjelasan Kode

  • Gunakan position = "fill" dalam argumen geom_bar () untuk membuat grafik dengan persentase dalam sumbu y.

Keluaran:

Bilah berdampingan

Mudah untuk memplot diagram batang dengan variabel grup secara berdampingan.

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

Penjelasan Kode

  • position = position_dodge (): Secara eksplisit memberi tahu cara mengatur batang

Keluaran:

Histogram

Di bagian kedua dari tutorial diagram batang, Anda dapat mewakili grup variabel dengan nilai di sumbu y.

Tujuan Anda adalah membuat grafik dengan mil rata-rata per galon untuk setiap jenis silinder. Untuk menggambar grafik informatif, Anda akan mengikuti langkah-langkah ini:

  • Langkah 1: Buat variabel baru dengan mil rata-rata per galon menurut silinder
  • Langkah 2: Buat histogram dasar
  • Langkah 3: Ubah orientasi
  • Langkah 4: Ubah warnanya
  • Langkah 5: Ubah ukurannya
  • Langkah 6: Tambahkan label ke grafik

Langkah 1) Buat variabel baru

Anda membuat bingkai data bernama data_histogram yang hanya mengembalikan rata-rata mil per galon dengan jumlah silinder di dalam mobil. Anda menyebut variabel baru ini mean_mpg, dan Anda membulatkan mean dengan dua desimal.

# Langkah 1

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

Langkah 2) Buat histogram dasar

Anda dapat memplot histogram. Itu belum siap untuk dikomunikasikan untuk disampaikan kepada klien tetapi memberi kita intuisi tentang tren.

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

Penjelasan Kode

  • Aes () sekarang memiliki dua variabel. Variabel silinder mengacu pada sumbu x, dan mean_mpg adalah sumbu y.
  • Anda harus meneruskan stat argumen = "identitas" untuk merujuk variabel di sumbu y sebagai nilai numerik. geom_bar menggunakan stat = "bin" sebagai nilai default.

Keluaran:

Langkah 3) Ubah orientasi

Anda mengubah orientasi grafik dari vertikal ke horizontal.

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

Penjelasan Kode

  • Anda dapat mengontrol orientasi grafik dengan coord_flip ().

Keluaran:

Langkah 4) Ubah warnanya

Anda dapat membedakan warna batang sesuai dengan tingkat faktor variabel sumbu x.

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

Penjelasan Kode

  • Anda dapat memplot grafik menurut kelompok dengan pemetaan fill = cyl. R secara otomatis menangani warna berdasarkan tingkat variabel silinder

Keluaran:

Langkah 5) Ubah ukurannya

Untuk membuat grafik terlihat lebih cantik, Anda mengurangi lebar batang.

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

Penjelasan Kode

  • Argumen lebar di dalam geom_bar () mengontrol ukuran bilah. Nilai yang lebih besar menambah lebar.
  • Perhatikan, Anda menyimpan grafik dalam grafik variabel. Anda melakukannya karena langkah selanjutnya tidak akan mengubah kode grafik variabel. Ini meningkatkan keterbacaan kode.

Keluaran:

Langkah 6) Tambahkan label ke grafik

Langkah terakhir terdiri dari menambahkan nilai variabel mean_mpg di label.

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

Penjelasan Kode

  • Fungsi geom_text () berguna untuk mengontrol estetika teks.
    • label =: Tambahkan label di dalam bar
    • mean_mpg: Gunakan variabel mean_mpg untuk label
  • dia hanya mengontrol lokasi label. Nilai yang ditutup ke 1 menampilkan label di bagian atas bilah, dan nilai yang lebih tinggi membawa label ke bawah. Jika orientasi grafik vertikal, ubah hjust ke vjust.
  • color = "white": Mengubah warna teks. Di sini Anda menggunakan warna putih.
  • size = 3: Atur ukuran teks.

Keluaran:

Ringkasan

Bagan batang berguna jika sumbu x adalah variabel kategori. Sumbu y dapat berupa hitungan atau statistik ringkasan. Tabel di bawah ini merangkum cara mengontrol diagram batang dengan ggplot2:

Objektif

kode

Menghitung

ggplot(df, eas(x= factor(x1)) + geom_bar()

Hitung dengan warna isian yang berbeda

ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar()

Hitung dengan kelompok, ditumpuk

ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())

Hitung dengan kelompok, berdampingan

ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar()

Hitung dengan kelompok, ditumpuk dalam%

ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())

Nilai

ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity")