Rangkuman ini mengacu pada Bab 3 buku Belajar Statistika dengan R karya Prana Ugiana Gio dan Dasapta Erwin Irawan (USU Press, 2016). Bab ini membahas cara mengubah data menjadi grafik di R. Ada enam jenis penyajian yang dibahas:
| No | Jenis grafik | Cocok untuk | Fungsi utama |
|---|---|---|---|
| 1 | Scatter plot | Melihat hubungan dua variabel numerik | plot(), qplot() /
ggplot() |
| 2 | Grafik garis | Melihat perubahan data dari waktu ke waktu | plot(type = "l"), lines() |
| 3 | Grafik batang (satu kelompok) | Membandingkan nilai antar kategori | barplot() |
| 4 | Grafik batang (dua kelompok) | Membandingkan kategori menurut kelompok lain | barplot(beside = TRUE) |
| 5 | Diagram lingkaran | Melihat proporsi bagian terhadap keseluruhan | pie() |
| 6 | Histogram | Melihat sebaran data numerik | hist() |
Catatan: angka pada contoh di bawah dibuat ulang
sebagai ilustrasi mengikuti deskripsi di buku, sehingga bentuk grafiknya
bisa berbeda dari gambar aslinya. Kalau kamu punya file CSV dari buku,
ganti bagian pembuatan data dengan read.table().
Contoh di buku memakai data 20 responden (10 laki-laki dan 10
perempuan) yang masing-masing punya informasi pendapatan dan pengeluaran
per bulan dalam jutaan rupiah. Data disimpan dalam file CSV
(data3.1.csv), dibaca ke R dengan
read.table(), lalu diplot.
Poin-poin penting:
read.table(..., header = TRUE, sep = ",") membaca file
CSV yang barisnya pertamanya berisi nama kolom.simpan[2:3]) atau
dengan tanda $ (simpan$pendapatan).main memberi judul grafik, sedangkan
xlab dan ylab memberi label sumbu.plot() bawaan R, buku memperkenalkan
package ggplot2 (fungsi qplot()) yang
perlu diaktifkan dengan library(ggplot2).Membuat data (pengganti
read.table("data3.1.csv", ...)):
simpan <- data.frame(
jeniskelamin = rep(c("Laki-laki", "Perempuan"), each = 10),
pendapatan = c(1, 2, 2.5, 3, 3.5, 4, 5, 5.5, 6, 7,
2, 3, 3.5, 4, 5, 6, 7, 8, 9, 10),
pengeluaran = c(0.5, 1, 1.5, 2, 2, 2.5, 3, 3.5, 4, 4.5,
1, 2, 2.5, 3, 4, 5, 6, 6.5, 7, 8)
)
simpan
## jeniskelamin pendapatan pengeluaran
## 1 Laki-laki 1.0 0.5
## 2 Laki-laki 2.0 1.0
## 3 Laki-laki 2.5 1.5
## 4 Laki-laki 3.0 2.0
## 5 Laki-laki 3.5 2.0
## 6 Laki-laki 4.0 2.5
## 7 Laki-laki 5.0 3.0
## 8 Laki-laki 5.5 3.5
## 9 Laki-laki 6.0 4.0
## 10 Laki-laki 7.0 4.5
## 11 Perempuan 2.0 1.0
## 12 Perempuan 3.0 2.0
## 13 Perempuan 3.5 2.5
## 14 Perempuan 4.0 3.0
## 15 Perempuan 5.0 4.0
## 16 Perempuan 6.0 5.0
## 17 Perempuan 7.0 6.0
## 18 Perempuan 8.0 6.5
## 19 Perempuan 9.0 7.0
## 20 Perempuan 10.0 8.0
Kalau datanya ada di file CSV, pakai ini:
simpan <- read.table("data3.1.csv", header = TRUE, sep = ",")
Plot dua kolom sekaligus (kolom 2 dan 3):
plot(simpan[2:3],
main = "Pendapatan dan Pengeluaran per Bulan, dalam Jutaan Rupiah")
Mengambil kolom dengan $, lalu memplot:
Pendapatan <- simpan$pendapatan
Pengeluaran <- simpan$pengeluaran
plot(Pendapatan, Pengeluaran)
Variasi tampilan (warna dan simbol titik menurut jenis kelamin):
warna <- ifelse(simpan$jeniskelamin == "Laki-laki", "blue", "red")
plot(Pendapatan, Pengeluaran,
main = "Pendapatan dan Pengeluaran per Bulan",
xlab = "Pendapatan per Bulan", ylab = "Pengeluaran per Bulan",
col = warna, pch = 19)
legend("topleft", legend = c("Laki-laki", "Perempuan"),
col = c("blue", "red"), pch = 19)
Versi ggplot2 (di buku memakai qplot(),
yang di ggplot2 versi baru sudah dinyatakan usang, jadi di sini dipakai
ggplot()). Bagian ini hanya dijalankan kalau package
ggplot2 sudah terpasang:
library(ggplot2)
ggplot(simpan, aes(x = pendapatan, y = pengeluaran)) +
geom_point() +
labs(title = "Pendapatan dan Pengeluaran per Bulan, dalam Jutaan",
x = "Pendapatan per Bulan", y = "Pengeluaran per Bulan")
Grafik garis dipakai untuk menampilkan data berurutan, terutama
menurut waktu. Contoh di buku memuat hasil penjualan barang A, B, dan C
selama 2001 sampai 2007 (data3.2.csv). Ketiga barang bisa
digambar pada satu grafik dengan garis yang berbeda sehingga tren
masing-masing mudah dibandingkan. Penyempurnaan tampilan seperti judul,
label sumbu, warna garis, dan legenda dilakukan bertahap.
penjualan <- data.frame(
tahun = 2001:2007,
A = c(10, 14, 18, 17, 22, 27, 30),
B = c(8, 9, 13, 16, 15, 19, 24),
C = c(5, 7, 6, 10, 12, 11, 16)
)
penjualan
## tahun A B C
## 1 2001 10 8 5
## 2 2002 14 9 7
## 3 2003 18 13 6
## 4 2004 17 16 10
## 5 2005 22 15 12
## 6 2006 27 19 11
## 7 2007 30 24 16
plot(penjualan$tahun, penjualan$A, type = "l", col = "red", lwd = 2,
ylim = range(penjualan[, c("A", "B", "C")]),
main = "Hasil Penjualan Barang A, B, dan C (2001-2007)",
xlab = "Tahun", ylab = "Hasil Penjualan")
lines(penjualan$tahun, penjualan$B, col = "blue", lwd = 2)
lines(penjualan$tahun, penjualan$C, col = "darkgreen", lwd = 2)
legend("topleft", legend = c("Barang A", "Barang B", "Barang C"),
col = c("red", "blue", "darkgreen"), lty = 1, lwd = 2)
Grafik batang menampilkan nilai tiap kategori dalam bentuk batang.
Contoh di buku memakai hasil penjualan barang A selama 2001 sampai 2007
(data3.3.csv): setiap tahun menjadi satu batang, dan tinggi
batang menunjukkan hasil penjualan. Tampilan bisa dirapikan dengan
menambah judul, label sumbu, warna, dan nama kategori.
barplot(penjualan$A,
names.arg = penjualan$tahun,
main = "Hasil Penjualan Barang A (2001-2007)",
xlab = "Tahun", ylab = "Hasil Penjualan",
col = "steelblue")
Bagian kedua membahas grafik batang untuk data dengan dua
pengelompokan. Contohnya jumlah responden menurut jenis kelamin dan hobi
(data3.4.csv), misalnya 90 responden laki-laki gemar
olahraga dan 10 responden laki-laki gemar memasak. Batang bisa
dikelompokkan berdampingan (mudah membandingkan
kelompok) atau ditumpuk (mudah melihat total).
hobi <- matrix(c(90, 10, 50,
30, 80, 70),
nrow = 2, byrow = TRUE,
dimnames = list(c("Laki-laki", "Perempuan"),
c("Olahraga", "Memasak", "Membaca")))
hobi
## Olahraga Memasak Membaca
## Laki-laki 90 10 50
## Perempuan 30 80 70
Batang berdampingan:
barplot(hobi, beside = TRUE,
col = c("steelblue", "tomato"),
main = "Jumlah Responden menurut Hobi dan Jenis Kelamin",
xlab = "Hobi", ylab = "Jumlah Responden",
legend.text = rownames(hobi),
args.legend = list(x = "topright"))
Batang bertumpuk:
barplot(hobi,
col = c("steelblue", "tomato"),
main = "Jumlah Responden menurut Hobi (Bertumpuk)",
xlab = "Hobi", ylab = "Jumlah Responden",
legend.text = rownames(hobi),
args.legend = list(x = "topright"))
Diagram lingkaran dipakai untuk menunjukkan bagian-bagian dari suatu
keseluruhan. Contoh di buku memuat jumlah produk yang terjual, misalnya
produk A sebanyak 12 unit dan produk B sebanyak 5 unit, dan seterusnya
(data3.5.csv). Setiap produk menjadi satu irisan, dan besar
irisan sebanding dengan jumlah terjualnya. Label bisa diperjelas dengan
menambahkan persentase.
produk <- data.frame(
nama = c("Produk A", "Produk B", "Produk C", "Produk D"),
jumlah = c(12, 5, 8, 15)
)
persen <- round(100 * produk$jumlah / sum(produk$jumlah), 1)
pie(produk$jumlah,
labels = paste0(produk$nama, " (", persen, "%)"),
main = "Proporsi Penjualan Produk",
col = c("tomato", "gold", "steelblue", "seagreen"))
Histogram dipakai untuk melihat sebaran data numerik. Data dibagi ke
dalam beberapa interval (kelas), lalu banyaknya pengamatan pada tiap
interval digambarkan sebagai batang yang saling berimpitan. Contoh di
buku memakai skor IQ dari 77 pengamatan (IQ.csv). Jumlah
dan lebar interval bisa diatur (argumen breaks), dan
tampilannya bisa disesuaikan dengan judul, label, dan warna. Versi
ggplot2 memakai geom_histogram().
set.seed(123)
IQ <- round(rnorm(77, mean = 100, sd = 15))
length(IQ)
## [1] 77
summary(IQ)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 65.0 92.0 100.0 100.6 110.0 133.0
hist(IQ,
breaks = 10,
main = "Histogram Skor IQ",
xlab = "Skor IQ", ylab = "Frekuensi",
col = "skyblue", border = "white")
Versi ggplot2:
library(ggplot2)
ggplot(data.frame(IQ = IQ), aes(x = IQ)) +
geom_histogram(bins = 10, fill = "skyblue", color = "white") +
labs(title = "Histogram Skor IQ", x = "Skor IQ", y = "Frekuensi")
main, xlab, ylab,
col, dan legend membuat grafik lebih mudah
dibaca.plot, barplot,
pie, hist) sudah cukup untuk grafik dasar,
sedangkan ggplot2 memberi pilihan tampilan yang lebih
fleksibel.Gio, P. U., & Irawan, D. E. (2016). Belajar Statistika dengan R (disertai beberapa contoh perhitungan manual). Medan: USU Press. Bab 3: Menyajikan Data dalam Grafik.