Pendahuluan

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().

1. Scatter Plot

Ringkasan

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.
  • Kolom bisa diambil dengan indeks (simpan[2:3]) atau dengan tanda $ (simpan$pendapatan).
  • Argumen main memberi judul grafik, sedangkan xlab dan ylab memberi label sumbu.
  • Selain fungsi plot() bawaan R, buku memperkenalkan package ggplot2 (fungsi qplot()) yang perlu diaktifkan dengan library(ggplot2).
  • Bagian akhir bab ini mengajak pembaca mencoba variasi tampilan grafik (misalnya warna dan simbol titik).

Kode

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")

2. Grafik Garis

Ringkasan

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.

Kode

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)

3. Grafik Batang (Bagian Pertama)

Ringkasan

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.

Kode

barplot(penjualan$A,
        names.arg = penjualan$tahun,
        main = "Hasil Penjualan Barang A (2001-2007)",
        xlab = "Tahun", ylab = "Hasil Penjualan",
        col = "steelblue")

4. Grafik Batang (Bagian Kedua)

Ringkasan

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).

Kode

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"))

5. Diagram Lingkaran

Ringkasan

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.

Kode

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"))

6. Histogram

Ringkasan

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().

Kode

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")

Kesimpulan

  • Pilih grafik sesuai tujuan: scatter plot untuk hubungan dua variabel, grafik garis untuk tren waktu, grafik batang untuk membandingkan kategori, diagram lingkaran untuk proporsi, dan histogram untuk sebaran data.
  • Argumen main, xlab, ylab, col, dan legend membuat grafik lebih mudah dibaca.
  • Fungsi bawaan R (plot, barplot, pie, hist) sudah cukup untuk grafik dasar, sedangkan ggplot2 memberi pilihan tampilan yang lebih fleksibel.

Referensi

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.