Diagram Batang & Histogram di R dengan Contoh
⚡ Ringkasan Cerdas
Diagram batang dan histogram di R dibuat dengan ggplot2, menggunakan geom_bar() untuk penghitungan kategorikal dan geom_histogram() untuk distribusi kontinu. Panduan ini menyesuaikan warna, grup, dan lain-lain.ping, penumpukan, orientasi, pengelompokan, dan label di dalam batang pada dataset mtcars.
Apa itu Bagan Batang di R?
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 di setiap kelompok.
- Yang kedua menunjukkan statistik ringkasan (minimum, maksimum, rata-rata, dan sebagainya) dari sebuah variabel pada sumbu y.
Anda akan menggunakan dataset mtcars, yang memiliki variabel-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
Karena histogram terlihat sangat mirip, ada baiknya untuk menyelesaikan perbedaan tersebut sebelum menulis kode apa pun.
Grafik Batang vs Histogram di R: Perbedaan Utama
Kedua bagan itu tampak mirip, dan seringkali tertukar. Mereka menjawab pertanyaan yang berbeda dan menggunakan objek geometris yang berbeda.
| Kriteria | Grafik batang | Histogram |
|---|---|---|
| Variabel sumbu X | Kategorikal atau faktor | Kontinu dan numerik |
| Apa yang diwakili oleh sebuah batang | Satu kategori | Satu interval, atau bin, nilai |
| Jarak antar batang | Ya, kategori-kategori tersebut terpisah. | Tidak, tempat sampah bersebelahan. |
| Pesanan bar | Dapat diatur ulang dengan bebas | Ditetapkan oleh skala numerik |
| Pertanyaan terjawab | Bagaimana perbandingan antar kelompok? | Bagaimana distribusi suatu variabel? |
| objek ggplot2 | geom_bar() | histogram geo |
Aturan praktisnya: jika mengubah urutan batang masih masuk akal, Anda memiliki grafik batang. Jika mengubah urutan batang akan merusak maknanya, Anda memiliki histogram. Untuk ringkasan berbasis kuartil dari variabel kontinu yang sama, gunakan petak kotak.
Cara Membuat Bagan Batang di R
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()`
Tutorial ini berfokus pada objek geometris geom_bar(), yang menggambar grafik batang, dan pada geom_histogram() untuk data kontinu.
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()
Code Penjelasan
- Anda meneruskan kumpulan data mtcars ke ggplot.
- Di dalam argumen aes(), Anda mengatur sumbu x ke 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`: 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
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()
Code Penjelasan
- Warna batang dikendalikan oleh peta aes().ping Di dalam objek geometris (yaitu, bukan di dalam ggplot()). Anda dapat mengubah warna dengan argumen fill. Di sini, Anda memilih warna coral.
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()
Code Penjelasan
- Untuk menambah/mengurangi intensitas bilah, Anda dapat mengubah nilai alpha. Nilai alpha yang besar meningkatkan intensitas, dan nilai alpha yang kecil mengurangi intensitas. Nilai alpha berkisar dari 0 hingga 1. Pada nilai 1, warna akan sama persis dengan palet; pada nilai 0, bilah tidak terlihat. Di sini Anda memilih alpha = 0.5.
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()
Code Penjelasan
- Argumen `fill` di dalam fungsi `aes()` mengubah warna batang. Anda mengubah warna dengan mengatur `fill = variabel sumbu x`. Dalam contoh Anda, variabel sumbu x adalah `cyl`; `fill = factor(cyl)`
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))
Setelah dataset siap, Anda dapat membuat grafik:
# Langkah 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Code Penjelasan
- Panggilan ggplot() menerima data dataset dan peta aes().ping.
- Di aes() Anda memasukkan variabel sumbu x dan variabel mana yang diperlukan untuk mengisi bilah (yaitu am)
- geom_bar(): Membuat diagram batang
Keluaran:
Petaping Batang grafik akan diisi dengan dua warna, satu untuk setiap level. Mengubah grup sangat mudah dengan memilih variabel faktor lain dalam dataset.
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()
Code Penjelasan
- 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()
Code Penjelasan
- position=position_dodge(): Secara eksplisit memberitahukan cara menyusun palang
Keluaran:
Diagram Batang dengan Statistik Ringkasan
Pada bagian kedua tutorial ini, sumbu y menampilkan nilai yang dihitung, bukan jumlah. Perhatikan bahwa ini masih berupa grafik batang: histogram yang sebenarnya akan dibahas lebih lanjut di bawah, dan menggunakan objek geometris yang berbeda.
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 membuat histogram. Meskipun belum cukup sempurna untuk diserahkan kepada klien, histogram ini sudah menunjukkan trennya.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Code Penjelasan
- Aes() sekarang memiliki dua variabel. Variabel cyl mengacu pada sumbu x, dan mean_mpg adalah sumbu y.
- Anda memberikan stat = “identity” agar geom_bar() menggunakan variabel sumbu y apa adanya, bukan menghitung baris. Nilai default untuk geom_bar() adalah stat = “count”.
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()
Code Penjelasan
- 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()
Code Penjelasan
- Anda dapat memplot grafik berdasarkan kelompok dengan peta fill=cyl.pingR secara otomatis menangani warna 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()
Code Penjelasan
- Argumen width di dalam geom_bar() mengontrol ketebalan batang. Nilai yang lebih besar membuatnya lebih lebar.
- Plot tersebut disimpan dalam objek graph, karena langkah selanjutnya akan menggunakannya kembali tanpa perubahan. Menyimpan plot sementara membuat kode tetap mudah dibaca.
Keluaran:
Langkah 6) Tambahkan label ke grafik
Langkah terakhir menambahkan nilai mean_mpg sebagai label di dalam setiap batang.
graph +
geom_text(aes(label = mean_mpg),
hjust = 1.5,
color = "white",
size = 3) +
theme_classic()
Code Penjelasan
- Fungsi geom_text() berguna untuk mengontrol estetika teks.
- label=: Tambahkan label di dalam bilah
- mean_mpg: Gunakan variabel mean_mpg untuk labelnya
- hjust mengontrol posisi label di sepanjang batang grafik. Nilai yang mendekati 1 menempatkannya di dekat ujung batang, dan nilai yang lebih besar mendorongnya kembali ke arah sumbu. Jika orientasi grafik vertikal, ubah hjust menjadi vjust.
- color=”putih”: Mengubah warna teks. Di sini Anda menggunakan warna putih.
- size=3: Mengatur ukuran teks.
Keluaran:
Cara Mengatur Urutan dan Memberi Label Batang pada Bagan Batang di R
Dua sentuhan akhir memisahkan draf grafik dari grafik yang siap dipublikasikan: mengurutkan batang berdasarkan nilai dan memberi label sumbu dengan benar.
Menyusun ulang batangan. Secara default, ggplot2 mengatur level faktor secara alfabetis, yang jarang merupakan urutan yang paling informatif. Bungkus variabel x dengan reorder() untuk mengurutkan berdasarkan variabel kedua:
# 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()
Tambahkan tanda minus di depan variabel pengurutan, misalnya reorder(cyl, -mean_mpg), untuk membalik arah pengurutan.
Menambahkan judul dan label sumbu. Fungsi labs() mengatur setiap elemen teks dalam satu panggilan:
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()
Atur `fill = NULL` di dalam `labs()` untuk menghapus judul legenda sepenuhnya, dan gunakan `theme(legend.position = “none”)` untuk menghapus legenda ketika sumbu x sudah menyebutkan nama grup.
Pilih warna Anda sendiri. Ganti palet default dengan palet yang ditentukan secara eksplisit agar bagan sesuai dengan gaya perusahaan Anda:
scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))
Cara Membuat Histogram di R dengan geom_histogram()
Histogram menunjukkan bagaimana suatu variabel kontinu tunggal terdistribusi. Alih-alih menghitung kategori, ggplot2 membagi rentang numerik menjadi beberapa bin dan menghitung berapa banyak observasi yang termasuk dalam setiap bin tersebut.
library(ggplot2) # Most basic histogram ggplot(mtcars, aes(x = mpg)) + geom_histogram()
R mencetak pesan yang merekomendasikan Anda untuk memilih jumlah bin yang lebih baik, karena jumlah bin default yaitu 30 bersifat sembarangan. Dua argumen mengontrol hal ini:
- tempat sampah: jumlah interval untuk membagi rentang tersebut.
- lebar bin: lebar setiap interval, dinyatakan dalam satuan variabel. Gunakan ini ketika satuannya bermakna.
# 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()
Pengaturan bin (pengelompokan data) adalah pilihan terpenting dalam histogram. Terlalu sedikit bin akan menyembunyikan struktur sebenarnya seperti puncak kedua; terlalu banyak bin akan mengubah grafik menjadi noise. Cobalah beberapa nilai sebelum menentukan satu nilai.
Membandingkan kelompok. Petakan faktor yang akan diisi dan tetapkan posisinya agar distribusi tetap mudah dibaca:
ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) + geom_histogram(bins = 10, position = "identity", alpha = 0.5) + theme_classic()
Dengan `position = “identity”` dan `alpha` yang dikurangi, histogram akan tumpang tindih sehingga Anda dapat membandingkan bentuknya secara langsung. Gunakan `position = “dodge”` jika Anda lebih suka melihat bin berdampingan.
Kepadatan, bukan jumlah. Jika ukuran kelompok berbeda, plot kepadatan agar luasnya dapat dibandingkan, dan tumpang tindihkan dengan kurva yang dihaluskan:
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()
Diagram Batang dan Histogram di R: Code Referensi
Bagan batang cocok untuk sumbu x kategorikal, di mana sumbu y berupa jumlah atau statistik ringkasan. Tabel di bawah ini mencantumkan perintah ggplot2 untuk setiap varian yang dibahas di atas:
| Tujuan | Code |
|---|---|
| Menghitung |
ggplot(df, aes(x = factor(x1))) + geom_bar() |
| Hitung dengan warna isian yang berbeda |
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar() |
| Hitung secara berkelompok, tumpuk |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar() |
| Hitung secara berkelompok, secara berdampingan |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge()) |
| Hitung dengan kelompok, tumpuk dalam % |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill") |
| Nilai (statistik ringkasan) |
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity") |
| Histogram dari variabel kontinu |
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30) |














