Kursus
Histogram memperlihatkan bentuk distribusi suatu dataset secara sekilas. Dalam tutorial ini, saya akan memandu Anda membuat dan menyesuaikan histogram menggunakan ggplot2, pustaka plotting R yang paling banyak digunakan dan bagian inti dari ekosistem tidyverse. ggplot2 mengikuti grammar of graphics yang memungkinkan Anda membangun visualisasi kompleks dengan melapiskan elemen plot. Untuk pendekatan base R, lihat tutorial histogram dengan base R kami.
Ringkasnya
-
Gunakan
geom_histogram()di dalam pemanggilanggplot()untuk menggambar histogram -
Kendalikan jumlah bin dengan
binsatau ukuran bin denganbinwidthdi dalamgeom_histogram() -
Sesuaikan warna batang dengan argumen
color(garis tepi) danfill(isi) -
Tambahkan kurva densitas menggunakan
geom_density()setelah mengatury = after_stat(density) -
Pisahkan menurut kategori menggunakan
fill = variabledalamaes()ataufacet_grid()untuk panel terpisah
Apa Itu Histogram?
Histogram adalah visualisasi yang menampilkan distribusi frekuensi pada variabel kontinu (numerik). Histogram memungkinkan kita melihat jumlah observasi dalam rentang yang dicakup oleh variabel kontinu.
Mulai dengan ggplot2
Untuk mengikuti tutorial ini, Anda perlu memasang R dan paket berikut: ggplot2, readr, dan dplyr. Kode di bagian berikut akan memasangnya jika Anda belum memilikinya.
Memasang paket
Pertama, kita perlu mengimpor pustaka ggplot2 menggunakan fungsi library. Ini akan memuat semua fungsi bawaan yang tersedia di pustaka ggplot2. Jika Anda belum memasang ggplot2, Anda perlu memasangnya dengan menjalankan perintah install.packages(). Kita akan melakukan hal yang sama untuk pustaka readr, yang memungkinkan kita membaca file CSV, dan dplyr, yang memudahkan kita bekerja dengan data yang dibaca.
install.packages("ggplot2")
install.packages("readr")
install.packages("dplyr")
library(ggplot2)
library(readr)
library(dplyr)
Memuat dataset
Untuk tutorial ini, kita akan menggunakan dataset perumahan ini, yang mencakup detail tentang berbagai listing rumah, termasuk ukuran rumah, jumlah kamar, harga, dan informasi lokasi.
Kita dapat membaca data menggunakan fungsi read_csv(). Kita bisa membacanya langsung dari URL atau mengunduh file CSV ke suatu direktori dan membacanya dari penyimpanan lokal. Argumen pertama read_csv() adalah lokasi data, dan atribut col_select memungkinkan kita memilih kolom yang kita minati.
home_data <- read_csv(
"https://raw.githubusercontent.com/rashida048/Datasets/master/home_data.csv",
col_select = c(price, condition)
)
Kemudian kita dapat melihat beberapa baris pertama data menggunakan fungsi head():
head(home_data)

Cara Membuat Histogram dengan ggplot2
Sekarang kita dapat membuat histogram. Terlepas dari jenis grafik yang kita buat di ggplot2, kita selalu memulai dengan fungsi ggplot(), yang membuat kanvas untuk menambahkan elemen plot. Fungsi ini menerima dua parameter.
-
Argumen pertama adalah sebuah data frame. Di sini kita ingin menggunakan
home_data. -
Argumen kedua adalah pemetaan dari kolom dalam data frame ke estetika plot. Pemetaan ini harus memanggil fungsi
aes(). Di sini, kita memetakan kolom price ke sumbu x.
Sejauh ini, kode kita adalah
ggplot(data = home_data, aes(x = price))
Ini tidak akan menggambar apa pun yang berguna dengan sendirinya. Untuk menjadikannya histogram, kita tambahkan geometri histogram menggunakan geom_histogram().
ggplot(data = home_data, aes(x = price)) +
geom_histogram()

Tambahkan statistik deskriptif ke histogram menggunakan geom_vline()
Kita dapat menambahkan statistik deskriptif ke plot menggunakan fungsi geom_vline(). Ini menambahkan geometri garis vertikal ke plot.
Pertama, kita hitung statistik deskriptif, dalam hal ini, harga rata-rata, menggunakan summarize() dari dplyr.
price_stats <- home_data |>
summarize(mean_price = mean(price))
price_stats
# A tibble: 1 × 1
mean_price
<dbl>
1 540088.
Fungsi ini menerima parameter xintercept, serta atribut opsional color dan linewidth untuk menyesuaikan warna dan ukuran garis. Kita akan menambahkan garis mean menggunakan tanda plus seperti pada bagian sebelumnya.
ggplot(home_data, aes(x = price)) +
geom_histogram() +
geom_vline(aes(xintercept = mean_price), price_stats, color = "red", linewidth = 2)
Perhatikan bahwa pada fungsi geom_, argumen mapping dan data ditukar dibandingkan dengan ggplot().

Memplot Densitas Probabilitas alih-alih Hitungan
Untuk menambahkan garis densitas probabilitas ke histogram, pertama kita ubah sumbu y agar diskalakan ke densitas. Dalam fungsi aes(), kita set y ke after_stat(density).
Kemudian kita dapat menambahkan lapisan densitas ke grafik menggunakan fungsi geom_density(). Di sini kita set atribut color menjadi hijau dan atribut linewidth menjadi 2.
ggplot(home_data, aes(x = price, y = after_stat(density))) +
geom_histogram() +
geom_vline(aes(xintercept = mean_price), price_stats, color = "red", linewidth = 2) +
geom_density(color = "green", linewidth = 2)

Perhatikan bahwa angka pada sumbu y telah berubah.
Perhatikan bagaimana setiap lapisan mengikuti pola yang sama: tanda +, pemanggilan fungsi, dan argumen opsional. Anda dapat menambahkan fungsi geom_, statistik, dan tema tanpa harus mempelajari ulang sintaks untuk setiap kombinasi.
Perbarui pembinaan bin menggunakan bins
Kita dapat memperbarui pembinaan bin pada histogram ggplot2 menggunakan atribut bin. Kita set atribut bin sama dengan jumlah bin yang ingin ditampilkan pada grafik. Ini akan membantu kita melihat data yang lebih atau kurang detail dalam histogram.
ggplot(data = home_data, aes(x = price)) +
geom_histogram(bins = 100)

Kita juga bisa mengatur lebar bin secara manual menggunakan atribut binwidth dari geom_histogram().
ggplot(data = home_data, aes(x = price)) +
geom_histogram(binwidth = 50000)

Terakhir, Anda dapat merapikan batas menggunakan atribut center atau boundary. Jika Anda ingin batas bin jatuh pada kelipatan tertentu, Anda bisa menggunakan atribut ini (hanya satu yang bisa digunakan pada satu waktu). Untuk memastikan bin berakhir pada nilai bilangan bulat, set atribut sama dengan 1.
ggplot(data = home_data, aes(x = price)) +
geom_histogram(boundary = 1)

Sesuaikan warna histogram
Di bagian ini, kita akan mengubah warna histogram. Kita dapat menyesuaikan warna garis tepi setiap batang menggunakan atribut color, dan mengubah isian batang menggunakan atribut fill pada geom_histogram(). Kita akan mengisi batang dengan biru dan mengubah warna garis tepi menjadi putih.
ggplot(data = home_data, aes(x = price)) +
geom_histogram(color = "white", fill = "blue")

Sesuaikan warna histogram ggplot2 berdasarkan grup
Anda dapat menyesuaikan warna batang histogram.
Mengubah estetika fill (di dalam fungsi aes()) akan mengubah warna bagian dalam batang berdasarkan nilai suatu variabel dalam dataset. Variabel tersebut sebaiknya bersifat kategorikal (factor) alih-alih bilangan bulat, sehingga kita dapat mengonversinya menggunakan fungsi factor(). Untuk contoh ini, kita akan melihat variabel condition, nilai dari 1 (kondisi buruk) hingga 5 (kondisi sangat baik).
home_data <- home_data |>
mutate(condition = factor(condition))
ggplot(data = home_data, aes(x = price, fill = condition)) +
geom_histogram()

Tambahkan label dan judul menggunakan labs()
Berikutnya, kita tambahkan judul dan label ke grafik menggunakan fungsi labs(). Kita set atribut x, y, dan title sesuai label yang diinginkan.
ggplot(data = home_data, aes(x = price)) +
geom_histogram() +
labs(x ='Price (USD)', y='Number of Listings', title = 'Housing Price Distributions')

Mengatur batas sumbu x menggunakan xlim()
Kita dapat mengatur batas sumbu x pada plot menggunakan fungsi xlim() untuk memperbesar data yang kita minati. Misalnya, terkadang lebih membantu untuk fokus pada bagian tengah distribusi daripada ekor panjang yang saat ini terlihat saat kita melihat keseluruhan plot.
Mengubah batas sumbu y juga dimungkinkan (menggunakan ylim()), tetapi ini kurang berguna untuk histogram karena nilai yang dihitung otomatis hampir selalu ideal.
Kita akan memperbesar harga antara $0 dan $2M.
ggplot(home_data, aes(x = price)) +
geom_histogram(bins = 100) +
xlim(0, 2000000)

Ubah posisi legenda
Jika kita ingin memindahkan legenda pada grafik, misalnya ketika kita memvisualisasikan condition dalam warna berbeda, kita dapat menggunakan fungsi theme() dan atribut legend.position. Nilai yang dapat diterima legend.position adalah “bottom”, “top”, “left”, atau “right”. Anda juga dapat memberikan koordinat yang Anda inginkan untuk posisi legenda menggunakan c(x, y).
ggplot(home_data, aes(x = price, fill = condition)) +
geom_histogram() +
theme(legend.position = "bottom")
Menggunakan facet di ggplot2
Terakhir, kita dapat memvisualisasikan data dalam grup berbeda pada grafik terpisah menggunakan facet. Ini akan membagi visualisasi menjadi beberapa subplot untuk setiap kategori. Hal ini dapat dilakukan menggunakan fungsi facet_grid(). Kita akan memvisualisasikan distribusi harga berdasarkan nilai condition yang berbeda di bawah ini.
ggplot(home_data, aes(x = price)) +
geom_histogram() + facet_grid(vars(condition))
Faceting dibahas lebih detail dalam tutorial Facets untuk ggplot di R.

Penutup
Untuk membuat histogram di ggplot2, bangun dasar dengan ggplot(), berikan data frame dan pemetaan aes(), lalu tambahkan geom_histogram(). Setelah itu, tambahkan penyesuaian: labs() untuk judul sumbu, xlim() untuk memperbesar sumbu x, dan theme() untuk memindahkan legenda atau menyesuaikan gaya visual.
ggplot2 dibahas secara mendalam dalam jalur keterampilan Data Visualization in R, dimulai dengan Introduction to Data Visualization with ggplot2. Anda dapat mempelajari cara mengombinasikan ggplot2 dengan alat tidyverse lainnya dalam jalur keterampilan Tidyverse Fundamentals with R.
Untuk jenis plot ggplot2 lainnya selain histogram, lihat tutorial Graphics with ggplot2 kami, dan unduh salinan lembar contekan ggplot2 sebagai referensi praktis.
Penulis Data Science | Analis Pemasaran Teknis Senior di Wayfair | MSE di Data Science dari University of Pennsylvania
