Bagan Batang & Histogram di R (dengan Contoh)
Diagram batang adalah cara terbaik untuk menampilkan variabel kategori pada sumbu x. Grafik jenis ini menunjukkan dua aspek pada sumbu y.
- Yang pertama menghitung jumlah kemunculan antar kelompok.
- Yang kedua menunjukkan ringkasan statistik (min, maks, rata-rata, dan seterusnya) dari suatu variabel di sumbu y.
Anda akan menggunakan dataset mtcars dengan 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
Cara membuat Diagram Batang
Untuk membuat grafik di R, Anda dapat menggunakan ggplot perpustakaan yang membuat grafik siap dipublikasikan. Sintaks dasar perpustakaan ini adalah:
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()`
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 chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
Penjelasan Kode
- Anda meneruskan kumpulan data mtcars ke ggplot.
- Di dalam argumen aes(), Anda menambahkan sumbu x sebagai variabel faktor (cyl)
- Tanda + berarti Anda ingin R terus membaca kode tersebut. Tanda ini membuat kode lebih mudah dibaca dengan memecahnya.
- Gunakan geom_bar() untuk objek geometris.
Keluaran:
Note: pastikan Anda mengonversi variabel menjadi faktor, jika tidak R akan memperlakukan variabel sebagai angka. Lihat contoh di bawah.
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 batang. Perhatikan bahwa warna batang semuanya serupa.
# Change the color of the bars ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(fill = "coral") + theme_classic()
Penjelasan Kode
- Warna batang dikontrol oleh pemetaan aes() di dalam objek geometris (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 intensitasnya
Anda dapat menambah atau mengurangi intensitas warna batang
# Change intensity ggplot(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 yang besar meningkatkan intensitas, dan alfa yang rendah mengurangi intensitas. alpha berkisar dari 0 hingga 1. Jika 1, maka warnanya sama dengan palet. Jika 0, warnanya putih. Anda memilih alfa = 0.1.
Keluaran:
Warnai berdasarkan kelompok
Anda dapat mengubah warna batang, artinya satu warna berbeda untuk setiap grup. Misalnya, variabel cyl memiliki tiga level, maka Anda dapat memplot diagram batang dengan tiga warna.
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
Penjelasan Kode
- Argumen isi di dalam aes() memungkinkan perubahan warna bilah. Anda mengubah warna dengan mengatur variabel isian = sumbu x. Dalam contoh Anda, variabel sumbu x adalah cyl; isi = faktor(silinder)
Keluaran:
Tambahkan grup di bar
Anda dapat membagi sumbu y lebih lanjut berdasarkan tingkat faktor lainnya. Misalnya, Anda dapat menghitung jumlah transmisi otomatis dan manual berdasarkan jenis silinder.
Anda akan melanjutkan sebagai berikut:
- Langkah 1: Buat bingkai data dengan kumpulan data mtcars
- Langkah 2: Beri label variabel am dengan auto untuk transmisi otomatis dan man untuk transmisi manual. Ubah am dan cyl menjadi faktor sehingga Anda tidak perlu menggunakan factor() dalam fungsi ggplot().
- Langkah 3: Buat diagram batang untuk menghitung jumlah transmisi per silinder
library(dplyr) # Step 1 data <- mtcars % > % #Step 2 mutate(am = factor(am, labels = c("auto", "man")), cyl = factor(cyl))
Anda telah menyiapkan kumpulan data, Anda dapat memplot grafiknya;
# Langkah 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Penjelasan Kode
- Gggpplot() 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(): Membuat diagram batang
Keluaran:
Pemetaan akan mengisi bilah dengan dua warna, satu untuk setiap level. Mengubah kelompok dapat dilakukan dengan mudah dengan memilih variabel faktor lain dalam kumpulan data.
Bagan batang dalam persentase
Anda dapat memvisualisasikan bilah dalam persentase, bukan dalam hitungan mentah.
# Bagan batang dalam persentase
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
Penjelasan Kode
- Gunakan position = “fill” pada argumen geom_bar() untuk membuat grafik dengan persentase pada sumbu y.
Keluaran:
Bar berdampingan
Sangat mudah untuk memplot diagram batang dengan variabel grup secara berdampingan.
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
Penjelasan Kode
- position=position_dodge(): Secara eksplisit memberitahukan cara menyusun palang
Keluaran:
Histogram
Di bagian kedua tutorial diagram batang, Anda dapat merepresentasikan grup variabel dengan nilai pada sumbu y.
Tujuan Anda adalah membuat grafik dengan rata-rata mil per galon untuk setiap jenis silinder. Untuk menggambar grafik informatif, Anda akan mengikuti langkah-langkah berikut:
- Langkah 1: Buat variabel baru dengan rata-rata mil per galon per 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 mengembalikan rata-rata mil per galon dengan jumlah silinder di dalam mobil. Anda menyebut variabel baru ini mean_mpg, dan 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. Ini 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 cyl mengacu pada sumbu x, dan mean_mpg adalah sumbu y.
- Anda harus meneruskan argumen stat=”identity” untuk merujuk variabel di sumbu y sebagai nilai numerik. geom_bar menggunakan stat=”bin” sebagai nilai default.
Keluaran:
Langkah 3) Ubah orientasinya
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 berdasarkan 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 berdasarkan kelompok dengan pemetaan fill= cyl. R menangani warna secara otomatis berdasarkan level variabel silinder
Keluaran:
Langkah 5) Ubah ukurannya
Untuk membuat grafik terlihat lebih cantik, Anda mengurangi lebar bilahnya.
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 akan menambah lebar.
- Catatan, 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 adalah menambahkan nilai variabel mean_mpg pada 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 bilah
- mean_mpg: Gunakan variabel mean_mpg untuk labelnya
- hhanya mengontrol lokasi label. Nilai yang mendekati 1 akan menampilkan label di bagian atas bilah, dan nilai yang lebih tinggi akan membawa label ke bagian bawah. Jika orientasi grafiknya vertikal, ubah hjust menjadi vjust.
- color=”putih”: Mengubah warna teks. Di sini Anda menggunakan warna putih.
- size=3: Mengatur ukuran teks.
Keluaran:
Kesimpulan
Bagan batang berguna jika sumbu x adalah variabel kategoris. Sumbu y dapat berupa hitungan atau statistik ringkasan. Tabel di bawah ini merangkum cara mengontrol bagan batang dengan ggplot2:
Tujuan | 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 secara berkelompok, tumpuk |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Hitung secara berkelompok, secara berdampingan |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar() |
Hitung dengan kelompok, tumpuk dalam % |
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge()) |
Nilai - Nilai |
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity") |