Data Visualization in Data Science Using R
Data Visualization in Data Science Using R
3
Konsep Komponen di ggplot2 ................................................................................................................................. 3
Kesimpulan.............................................................................................................................................................. 8
Pendahuluan ........................................................................................................................................................... 9
Membuat Kanvas Kosong ....................................................................................................................................... 9
Menambahkan Judul............................................................................................................................................. 10
Plot disimpan sebagai Variable ............................................................................................................................. 11
Menambahkan Label pada Sumbu X dan Y .......................................................................................................... 11
Fungsi summary untuk objek ggplot ..................................................................................................................... 13
Kesimpulan............................................................................................................................................................ 13
Pendahuluan ......................................................................................................................................................... 13
Dataset Kepadatan Penduduk Jakarta .................................................................................................................. 14
Membaca Dataset Kependudukan dengan read.csv ............................................................................................ 16
Memasukkan Data ke Plot .................................................................................................................................... 18
Memetakan x, y dan color dengan function aes .................................................................................................. 18
Menampilkan Plot hasil Mapping ......................................................................................................................... 20
Kesimpulan............................................................................................................................................................ 21
Pendahuluan ......................................................................................................................................................... 21
Scatter Plot Kepadatan Penduduk Jakarta dengan function layer ....................................................................... 22
Scatter Plot Kepadatan Penduduk Jakarta dengan geom_point .......................................................................... 24
Menambahkan Judul dan Label ............................................................................................................................ 25
Kesimpulan............................................................................................................................................................ 26
Pendahuluan ......................................................................................................................................................... 27
Layer geom_histogram dan Lebar Interval ........................................................................................................... 27
Penggunaaan aesthetic fill .................................................................................................................................... 28
Kesimpulan............................................................................................................................................................ 29
Pendahuluan ......................................................................................................................................................... 29
Dataset Inflasi ....................................................................................................................................................... 30
Membaca data inflasi............................................................................................................................................ 31
Error pada saat Plotting Line Chart ....................................................................................................................... 31
Menggunakan Pengelompokan Data (grouping) .................................................................................................. 32
Memperbaiki Urutan Bulan dengan Factoring ..................................................................................................... 34
Plotting Ulang dengan hasil Factoring .................................................................................................................. 35
1
Kesimpulan............................................................................................................................................................ 35
Pendahuluan ......................................................................................................................................................... 36
Dataset Kependudukan Jakarta versi DQLab ........................................................................................................ 36
Menghasilkan Bar Chart Pertama ......................................................................................................................... 37
Aesthetic Y dan Stat Identity................................................................................................................................. 39
Aesthetic Fill dan Position Dodge ......................................................................................................................... 40
Fungsi Aggregate................................................................................................................................................... 41
"Merapikan" Tampilan Bar Chart .......................................................................................................................... 42
Pie Chart dengan Koordinat Polar ........................................................................................................................ 44
Kesimpulan............................................................................................................................................................ 45
Pendahuluan: Apa dan kenapa Faceting?............................................................................................................. 46
Faceting pada Scatter Plot .................................................................................................................................... 47
Faceting pada Histogram ...................................................................................................................................... 48
Kesimpulan............................................................................................................................................................ 49
What Next? ........................................................................................................................................................... 49
2
Pendahuluan
Selamat datang di course Data Visualization with ggplot2, sebuah library tambahan di R yang sangat populer
digunakan untuk visualisasi – populer karena grafik dapat dihasilkan dengan struktur perintah yang sangat
generik tapi jelas dan rapi.
Sepanjang course ini Anda akan mempelajari
3
Ada empat komponen ggplot2 pada grafik tersebut, yaitu plot, data, aesthetic mapping dan layer.
Plot
Paling awal adalah adanya plot atau "kanvas" kosong dimana berbagai grafik dapat "digambar" di atasnya.
4
Sebelum digambar, kanvas ini tentunya perlu memiliki data yang akan ditampilkan. Berikut adalah data yang
kita gunakan untuk contoh grafik di atas. Data ini adalah data kependudukan dari Pemerintah Provinsi DKI
Jakarta tahun 2013 yang diambil dari situs data.go.id.
Dan dari contoh grafik awal, terlihat tidak semua kolom itu ditampilkan. Yang diperlukan hanya dua kolom, yaitu
Luas Wilayah (KM2) dan Kepadatan (Jiwa / KM2).
5
Kolom Luas Wilayah (KM2) akan mengisi absis (sumbu-x) dan Kepadatan (Jiwa / KM2) akan mengisi ordinat
(sumbu-y). Dan kita gunakan kolom ketiga, yaitu Nama Kabupaten/Kota untuk pembeda warna (color).
Komponen-komponen x, y dan color disebut komponen grafik atau aesthetic di ggplot2. Dan penggunaan ketiga
kolom data ini ke dalam aesthetic disebut aesthetic mapping.
Dengan adanya plot, data, dan aesthetic mapping ini menjadi bahan baku untuk melakukan step berikutnya:
menggambar grafik itu sendiri dengan layer!
Layer
Layer adalah objek grafik itu sendiri. Sesuai namanya, objek-objek tersebut disusun dalam bentuk lapisan (layer).
Setiap lapisan memiliki objek-objek berikut:
Geom: Bentuk geometri seperti garis (line), batang (bar), titik (point), dan lain-lain.
Stat: Atau suatu fungsi untuk melakukan transformasi statistik terhadap data input.
Contoh paling sederhana adalah transformasi data untuk kepadatan jiwa dari angka menjadi range atau inverval
per lima ribuan. Jadi data input dengan angka 8041 diubah menjadi interval angka 8001-8500. Transformasi ini
disebut dengan bin.
Position: Posisi dari beberapa data yang memiliki nilai yang sama. Jika diplot sebagai scatter plot
misalnya, tentunya data-data tersebut akan menumpuk di satu titik. Apakah perlu ditambahkan nilai
acak tertentu sehingga pas digambarkan, terlihat datanya lebih tersebar? Jika iya, maka ini namanya
jitter. Jika kita tidak ingin mengubah apa-apa, ini dinamakan identity.
Nah, kembali ke contoh di atas. Jika layer ditambahan ke plot objek menggunakan point maka bentuknya
menjadi berikut.
6
Dengan objek plot yang sama, jika tambahkan dengan variasi layer lain – yaitu dengan geom histogram – maka
dapatnya adalah grafik berikut.
7
Untuk memperjelas, berikut adalah diagram summary untuk proses tampilan grafik dan komponen yang terlibat.
Dengan mengerti akan fitur fundamental ini, kita dapat membuat banyak grafik yang lebih kompleks dengan
ggplot dengan cepat.
Kesimpulan
Selamat, Anda telah menyelesaikan bab penjelasan tentang ggplot2 dengan materi berikut:
ggplot2 sebagai package untuk visualisasi data di R.
pendekatan yang digunakan untuk ggplot2 adalah dengan suatu struktur tata bahasa (grammar) dimana
komponen-komponen grafik dinamakan dengan detil dan jelas.
komponen-komponen penting di ggplot2 adalah plot, data, aesthetic mapping dan layer – yang merupakan
komponen minimal untuk menghasilkan suatu grafik.
8
Pendahuluan
Plot adalah komponen paling dasar di ggplot2, tanpa plot seluruh grafik tidak akan bisa ditampilkan. Dengan
demikian, plot dapat dianalogikan sebagai "kanvas" gambar kita. Plot dibuat dengan function ggplot. Dan jika
tidak digabungkan dengan komponen lain, maka tampilannya akan terlihat sebagai kotak persegi kosong dengan
latar belakang abu-abu seperti gambar berikut.
Bab ini akan membahas bagaimana kita menghasilkan kanvas, menambahkan judul, label, merubah warna latar,
menggunakan variable untuk objek plot, dan melihat detil dari objek plot dengan function summary.
Tugas Praktek
9
Gantilah bagian […] pada code editor dengan function ggplot() dan jalankan.
Menambahkan Judul
Setiap orang akan sangat terbantu melihat suatu grafik apabila memiliki judul yang jelas. Ini dapat ditambahkan
di ggplot dengan fungsi labs(title = "....").
Contoh perintah (syntax) dari labs adalah sebagai berikut:
[objek plot] + labs(title="Judul")
Berikut adalah penjelasan lengkap elemen-elemen perintah di atas.
Komponen Deskripsi
Objek plot, untuk saat ini adalah objek yang dihasilkan oleh
[objek plot]
function ggplot()
Tanda plus, operator untuk menambahkan komponen lain
+
ke dalam plot
Function untuk menghasilkan komponen label text untuk
labs
ditambahkan ke dalam plot
title Parameter judul, bagian dari function labs
" Judul" Nilai teks untuk judul, ini bisa diganti sesuai keinginan kita
Tugas Praktek
Tambahkan plot – function ggplot() – yang ada di code editor dengan judul "Luas Wilayah vs Kepadatan
Penduduk DKI Jakarta - Periode 2013".
Jika berhasil dijalankan, maka hasilnya akan terlihat sebagai berikut.
10
Petunjuk: Ganti bagian […] dengan code yang sesuai, dan ingat huruf besar dan kecil sangat berpengaruh.
11
Komponen Deskripsi
Objek plot, untuk saat ini adalah objek yang dihasilkan oleh
[objek plot]
function ggplot()
Tanda plus, operator untuk menambahkan komponen lain
+
ke dalam plot
Function untuk menghasilkan komponen label text untuk
labs
ditambahkan ke dalam plot
x Parameter untuk sumbu x, bagian dari function labs
"Label X" Nilai teks untuk x, ini bisa diganti sesuai keinginan kita
subtitle Parameter untuk sub judul, bagian dari function labs
"Label Y" Nilai teks untuk x, ini bisa diganti sesuai keinginan kita
Catatan: Function labs ini bisa digunakan berkali-kali pada plot. Ini artinya kita bisa menambahkan x dan y pada
function labs sebelumnya, atau menambahkan function labs baru untuk mengisi label x dan y.
Tugas Praktek
Rubah bagian […] pada code editor untuk menambahkan pada variable plot.jakarta laebl untuk sumbu x dengan
teks " Luas Wilayah (km2)" dan sumbu y dengan teks " Kepadatan Jiwa per km2".
Jika berhasil dijalankan, maka hasilnya akan terlihat sebagai berikut.
12
Fungsi summary untuk objek ggplot
Tidak setiap saat kita harus menganalisa plot dan komponennya dengan cara ditampilkan. Ketika sudah
disimpan di variable, kita bisa melihat detilnya dalam bentuk tekstual dengan menggunakan fungsi summary.
Mari kita langsung praktekkan saja melalui tugas berikut.
Tugas Praktek
Perhatikan seluruh perintah yang ada pada code editor, ini merupakan kumpulan code yang telah kita pelajari
pada bab ini.
Pada baris terakhir terdapat penggunaan fungsi summary dengan input variable plot.jakarta. Ini untuk
menampilkan detil apa saja yang terdapat di dalam sebuah plot.
Jika berhasil dijalankan, maka hasilnya akan terlihat sebagai berikut. Untuk saat ini, tidak ada yang perlu
dijelaskan kecuali mengenal fungsi ini sebagai alat untuk menganalisa objek-objek plot kita. Kita akan
menggunakan function ini lebih detil di bab berikutnya.
data: [x]
faceting: facet_null()
Kesimpulan
Plot adalah komponen paling dasar di ggplot2, tanpa plot seluruh grafik tidak akan bisa ditampilkan. Dengan
demikian, plot adalah "kanvas" grafik. Untuk membuat plot kita gunakan fungsi bernama ggplot()
Kita dapat tambahkan komponen grafik lain di atas plot. Dan pada bab ini kita telah menambahkan:
Teks judul dengan fungsi labs(title="...").
Teks pada sumbu x dan y dengan fungsi labs(x="...", y="...").
Selain itu juga ditunjukkan bagaimana sebaiknya objek plot disimpan ke variable. Dengan cara ini, kita bisa
mengolahnya dengan lebih rapi. Terakhir, kita menampilkan informasi plot ini dengan menggunakan fungsi
summary.
Pendahuluan
Plot bisa menerima input data, dan dari data tersebut bisa dipilih beberapa kolom yang akan "dipetakan"
sebagai input untuk komponen visual.
Untuk jelasnya, mari kita lihat data yang dibuka dengan aplikasi Excel pada gambar berikut. Data ini adalah data
luas wilayah dan kependudukan pemerintah provinsi DKI Jakarta.
13
Pada gambar terlihat banyak kolom informasi seperti TAHUN, NAMA PROVINSI, NAMA KABUPATEN/KOTA, dll.
Ada tiga kolom yang di-highlight dengan warna kuning, hijau dan biru muda. Ketiga kolom ini masing-masing
akan dipetakan di dalam grafik untuk komponen visual x, y dan color (warna). Pemetaan data ini disebut dengan
aesthetic mapping.
Pada praktek selanjutnya, kita akan membaca data dan melakukan pemetaan. Input data pada ggplot2 harus
bertipe data.frame, tidak boleh yang lain.
14
Dan ini adalah tampilan jika data tersebut dibuka di aplikasi Excel.
15
9. 35-39 Perempuan: Jumlah penduduk perempuan dengan rentang umur 35-39 tahun
10. 40-44 Laki-Laki: Jumlah penduduk laki-laki dengan rentang umur 40-44 tahun
11. 40-44 Perempuan: Jumlah penduduk perempuan dengan rentang umur 40-44 tahun
12. 45-49 Laki-Laki: Jumlah penduduk laki-laki dengan rentang umur 45-49 tahun
13. 45-49 Perempuan: Jumlah penduduk perempuan dengan rentang umur 45-49 tahun
14. 50-54 Laki-Laki: Jumlah penduduk laki-laki dengan rentang umur 50-54 tahun
15. 50-54 Perempuan: Jumlah penduduk perempuan dengan rentang umur 50-54 tahun
16. 55-59 Laki-Laki: Jumlah penduduk laki-laki dengan rentang umur 55-59 tahun
17. 55-59 Perempuan: Jumlah penduduk perempuan dengan rentang umur 55-59 tahun
18. 60-64 Laki-Laki: Jumlah penduduk laki-laki dengan rentang umur 60-64 tahun
19. 60-64 Perempuan: Jumlah penduduk perempuan dengan rentang umur 60-64 tahun
20. 65-69 Laki-Laki: Jumlah penduduk laki-laki dengan rentang umur 65-69 tahun
21. 65-69 Perempuan: Jumlah penduduk perempuan dengan rentang umur 65-69 tahun
22. 70-74 Laki-Laki: Jumlah penduduk laki-laki dengan rentang umur 70-74 tahun
23. 70-74 Perempuan: Jumlah penduduk perempuan dengan rentang umur 70-74 tahun
24. >75 Laki-Laki: Jumlah penduduk laki-laki dengan rentang umur di atas 75 tahun
25. >75 Perempuan: Jumlah penduduk perempuan dengan rentang umur di atas 75 tahun
Perhatikan seluruh kolom berisi informasi berupa angka, kecuali empat kolom berikut: NAMA PROVINSI, NAMA
KABUPATEN/KOTA, NAMA KECAMATAN, dan NAMA KELURAHAN. Dataset ini memiliki detil sampai ke tingkat
kelurahan. Contoh yang cukup bagus untuk kita olah.
16
Parameter pemisah (separator) antar kolom data. Kita
sep="," gunakan tanda koma untuk dataset penduduk DKI
Jakarta.
Jika terjadi error berikut, cobalah periksa kembali penulisan code – huruf besar, huruf kecil dan juga penulisan
lokasi file – dengan teliti.
Error in file(file, "rt") : cannot open the connection
Jika tidak terjadi error maka langkah selanjutnya adalah menampilkan isi data dengan mengetikkan nama
variable.
penduduk.dki
Hasil eksekusi perintah ini sebagian akan tampak sebagai berikut.
Terlihat isi data dari tujuh kolom pertama dan terdapat nomor baris pada tiap data yang ditampilkan.
Perhatikan jika nama kolom asal terdapat karakter yang bukan angka atau hurud, akan diubah menjadi tanda
titik setelah dibaca dengan read.csv.
Sebagai contoh, "NAMA PROVINSI" diubah menjadi "NAMA.PROVINSI", "LUAS WILAYAH (KM2)" diubah menjadi
"LUAS.WILAYAH..KM2.".
Catatan: Walaupun nama kolom ini terlihat tidak standar dan tidak menyenangkan, kita akan biarkan nama
kolom tetap seperti ini tanpa melakukan proses cleansing. Tetapi pada saat plotting, seperti telah ditunjukkan
pada bab sebelumnya, kita bisa memberi label text sesuai keinginan kita. Disitulah kesempatan kita untuk
merapikan tampilan teks dari kolom.
Jika kita hanya ingin menampilkan beberapa kolom tertentu, misalkan untuk kolom "NAMA.KECAMATAN" dan
"NAMA.KELURAHAN" maka perintahnya adalah sebagai berikut.
penduduk.dki[c("NAMA.KECAMATAN","NAMA.KELURAHAN")]
maka akan muncul hasil sebanyak 267 baris data, dimana sebagian datanya terlihat sebagai berikut:
NAMA.KECAMATAN NAMA.KELURAHAN
1 KEP. SERIBU UTR P. PANGGANG
2 KEP. SERIBU UTR P. KELAPA
3 KEP. SERIBU UTR P. HARAPAN
4 KEP. SERIBU SLT P. UNTUNG JAWA
5 KEP. SERIBU SLT P. TIDUNG
6 KEP. SERIBU SLT P. PARI
7 GAMBIR GAMBIR
8 GAMBIR CIDENG
9 GAMBIR PETOJO UTARA
17
10 GAMBIR PETOJO SELATAN
11 GAMBIR KEBON KELAPA
12 GAMBIR DURI PULO
13 SAWAH BESAR PASAR BARU
14 SAWAH BESAR KARANG ANYAR
15 SAWAH BESAR KARTINI
16 SAWAH BESAR GUNUNG SAHARI UTARA
17 SAWAH BESAR MANGGA DUA SELATAN
18 KEMAYORAN KEMAYORAN
19 KEMAYORAN KEBON KOSONG
…
Tugas Praktek
Lengkapi bagian […] pada code editor untuk menampilkan data frame dengan kolom "NAMA.KELURAHAN" dan
"LUAS.WILAYAH..KM2.".
18
Berikut adalah penjelasan syntaxnya.
Komponen Deskripsi
Function untuk memetakan elemen-elemen visual
Aes
dengan nilai atau variable
Nama elemen visual sebagai parameter pertama.
[nama_elemen_1] Nama elemen ini bisa x, y dan color yang akan kita
gunakan di tugas praktek.
Nama kolom yang terdapat pada data atau nilai
konstanta. Sebagai contoh, untuk nama kolom bisa
[nama_kolom_atau_nilai_1]
NAMA.KECAMATAN sedangkan untuk nilai konstanta
bisa dimasukkan nilai teks maupun angka.
Nama elemen visual sebagai parameter kedua. Nama
[nama_elemen_2] elemen ini bisa x, y dan color yang akan kita gunakan
di tugas praktek.
Nama kolom yang terdapat pada data atau nilai
konstanta. Sebagai contoh, untuk nama kolom bisa
[nama_kolom_atau_nilai_2]
NAMA.KELURAHAN sedangkan untuk nilai konstanta
bisa dimasukkan nilai teks maupun angka.
… Pasangan nama elemen dan variable/nilai lainnya.
Kembali ke awal kebutuhan kita, mari kita lihat gambar berikut. Terlihat kita ingin memetakan x, y dan color ke
kolom NAMA KELURAHAN, LUAS WILAYAH (KM2) dan KEPADATAN (JIWA/KM2).
Tetapi kita lihat di bagian bawah gambar, nama-nama kolom yang akan dimapping mengalami sedikit perubahan
ketika dibaca di R, dimana spasi dan non huruf maupun angka diubah menjadi titik. Sebagai contoh, NAMA
KABUPATEN/KOTA diubah menjadi NAMA.KABUPATEN.KOTA.
Berikut adalah contoh penggunaan aes berdasarkan kebutuhan tersebut.
aes(x = LUAS.WILAYAH..KM2., y=KEPADATAN..JIWA.KM2., color=NAMA.KABUPATEN.KOTA)
19
Dan function aes ini harus dipasangkan dengan function ggplot yang telah memiliki data, sehingga konstruksi
lengkap codenya adalah sebagai berikut.
ggplot(data=penduduk.dki, aes(x = LUAS.WILAYAH..KM2., y=KEPADATAN..JIWA.KM2.,
color=NAMA.KABUPATEN.KOTA))
Untuk lebih jelasnya mari kita lakukan tugas praktek berikut.
Tugas Praktek
Pada code editor, ganti bagian […] dengan aesthetic mapping dengan pemetaan berikut:
x = LUAS.WILAYAH..KM2.,
y=KEPADATAN..JIWA.KM2.
color=NAMA.KABUPATEN.KOTA
Jika berhasil dijalankan, maka Anda harusnya mendapatkan output summary sebagai berikut. Terlihat bagian
data dan mapping sudah terisi sesuai keinginan kita.
data: TAHUN, NAMA.PROVINSI, NAMA.KABUPATEN.KOTA, NAMA.KECAMATAN, NAMA.KELURAHAN,
LUAS.WILAYAH..KM2., KEPADATAN..JIWA.KM2., X, X.1, X.2, X.3, X.4, X.5, X.6, X.7, X.8,
X.9, X.10, X.11, X35.39.Laki.Laki, X35.39.Perempuan, X40.44.Laki.Laki,
X40.44.Perempuan, X45.49.Laki.Laki, X45.49.Perempuan, X50.54.Laki.Laki,
X50.54.Perempuan, X55.59.Laki.Laki, X55.59.Perempuan, X60.64.Laki.Laki,
X60.64.Perempuan, X65.69.Laki.Laki, X65.69.Perempuan, X70.74.Laki.Laki,
X70.74.Perempuan, X.75.Laki.Laki, X.75..Perempuan [267x37]
mapping: x = LUAS.WILAYAH..KM2., y = KEPADATAN..JIWA.KM2., colour = NAMA.KABUPATEN.KOTA
faceting: facet_null()
20
Kesimpulan
Plot memerlukan dua input sebagai bahan bakunya agar bisa digunakan lebih jauh, yaitu data dan aesthetic
mapping (pemetaan beberapa kolom data ke elemen visual).
Pendahuluan
Mengulang kembali sedikit konsep yang telah dipaparkan di bab awal, grafik bisa dihasilkan dengan
menambahkan layer secara berlapis di atas plot.
Setiap layer terdiri dari objek-objek berikut:
Geom: Bentuk geometri seperti garis (line), batang (bar), titik (point), dan lain-lain.
Stat: Atau suatu fungsi untuk melakukan transformasi statistik terhadap data input.
Contoh paling sederhana adalah transformasi data untuk kepadatan jiwa dari angka menjadi range atau
inverval per lima ribuan. Jadi data input dengan angka 8041 diubah menjadi interval angka 8001-8500.
Transformasi ini disebut dengan bin. Jika kita tidak ingin mengubah apa-apa, stat yang kita gunakan
adalah identity.
Position: Posisi dari beberapa data yang memiliki nilai yang sama. Jika diplot sebagai scatter plot
misalnya, tentunya data-data tersebut akan menumpuk di satu titik. Apakah perlu ditambahkan nilai
acak tertentu sehingga pas digambarkan, terlihat datanya lebih tersebar? Jika iya, maka ini namanya
jitter. Jika kita tidak ingin merubah posisi, maka kita gunakan identity.
Berikut adalah diagram summary untuk proses menampilkan grafik dengan objek plot dan layer.
21
Scatter Plot Kepadatan Penduduk Jakarta dengan function layer
Untuk menggambar grafik sebenarnya pada ggplot, kita menambahkan apa yang dinamakan layer. Layer bisa
dihasilkan dengan menggunakan function layer dengan syntax berikut:
layer(geom = "…", stat = "…", position = "…")
Keterangan
Komponen Deskripsi
Layer Function yang digunakan untuk membentuk layer untuk ditambahkan pada plot
Bentuk geometri yang digunakan untuk layer. Beberapa daftar geometri yang bisa
geom
diberikan adalah sebagai berikut:
22
Komponen Deskripsi
point: untuk menggambar grafik berupa titik yang menunjukkan hubungan
antar variable atau scatter plot
line: diagram garis
hline: diagram garis horizontal
bar: diagram batang
histogram: histogram
dll
Jenis transformasi untuk merubah data dari bentuk asli ke bentuk lain. Beberapa
daftar stat yang bisa digunakan antara lain adalah sebagai berikut:
identity: tidak melakukan transformasi
stat bin: membagi data menjadi interval
sum: menjumlahkan nilai-nilai yang unik
summary: melakukan summary dari semua nilai y untuk setiap titik data x
dll
Perubahan posisi terhadap tiap titik yang terdapat pada layer. Beberapa daftar
position yang bisa digunakan antara lain adalah sebagai berikut:
identity: tidak ada perubahan posisi
jitter: merubah posisi dengan jarak acak tertentu dari posisi awal, ini
position
digunakan untuk memberi kejelasan jika banyak titik yang overlapping
(saling tindih)
stack: menyusun posisi dalam bentuk tumpukan
dll
Jika kita ingin menggambar scatter plot, maka konstruksi layer yang digunakan akan berbentuk sebagai berikut:
layer(geom = "point", stat = "identity", position = "identity")
Ganti bagian […] pada editor dengan code tersebut. Jika berhasil dijalankan, maka Anda harusnya mendapatkan
output grafik sebagai berikut.
23
Terlihat grafik titik (scatter plot) dihasilkan data-data kependudukan diambil Luas Wilayah untuk sumbu x,
Kepadatan untuk sumbu y, dan pewarnaan dilakukan sesuai Nama Kabupaten.
24
Menambahkan Judul dan Label
Scatter plot yang dihasilkan sudah menarik untuk kita, namun label teks pada x, y dan color masih terasa kurang
bagus. Bukankah begitu? Mari kita perhatikan.
25
Kita bisa merubah label ini sesuai dengan keinginan kita menggunakan function labs yang sudah kita pelajari
sebelumnya.
Gantilah bagian … pada code editor dengan function labs dengan parameter-parameter berikut.
title = "Luas Wilayah vs Kepadatan Penduduk DKI Jakarta".
x = "Luas wilayah (km2)"
y = "Kepadatan Jiwa per km2"
color = "Nama Kabupaten/Kota"
Jika berjalan lancar harusnya didapatkan hasil sebagai berikut.
Catatan: Pada code terdapat perintah baru, yaitu theme(plot.title = element_text(hjust=0.5)). Ini adalah code
untuk menempatkan judul di tengah plot.
Kesimpulan
Layer diperlukan agar grafik sebenarnya dapat digambar di atas objek plot. Layer dibuat dengan function layer.
Parameter function layer yang harus diisi terdiri dari geom, stat dan position.
Dengan pengisian nilai yang berbeda-beda terhadap tiga parameter ini, kita bisa menghasilkan berbagai macam
grafik. Pada bab ini, grafik yang kita hasilkan adalah "scatter plot" dimana parameter geom bernilai "point", stat
dan position bernilai "identity".
Selain menggunakan function layer, tiap objek juga memiliki function yang memiliki prefix geom_, stat_ , dan
position_. Misalkan, untuk geom bertipe point memiliki function geom_point. Ini dibuat dengan tujuan agar
beberapa nilai default untuk tiap-tiap objek sudah dispesifikasikan di function-function berprefix.
26
Dan bab ditutup dengan praktek dimana kita bisa menyelesaikan satu grafik lengkap dengan judul, dan label-
label yang lebih mudah dibaca.
Pendahuluan
Histogram adalah tipe visualisasi yang sangat cocok untuk menggambarkan data distribusi dari jumlah populasi
data. Dan dataset kependudukan adalah contoh yang baik dimana kita bisa menggambarkan distribusi
kepadatan penduduk dengan jumlah kelurahan.
Untuk membuat histogram, kita gunakan geom bertipe histogram dan stat bin, yang bisa diwakili oleh function
geom_histogram.
Tugas Praktek
Pada code editor telah tersedia code untuk membaca data kependudukan DKI. Ganti bagian […] dengan layer
histogram dan dengan interval 10000.
Jika berhasil maka grafik yang tampil adalah sebagai berikut. Terlihat bahwa jumlah kelurahan dengan penduduk
antara 10 s/d 20 ribu adalah yang terbanyak.
27
Penggunaaan aesthetic fill
Kita dapat melakukan banyak penambahan informasi pada histogram sebelumnya. Salah satunya adalah melihat
porsi jumlah kelurahan berdasarkan nama kabupaten / kota pada tiap rentang histogram sepreti berikut.
28
Untuk ini kita menggunakan aesthetic fill dengan syntax berikut.
aes(fill = NAMA.KABUPATEN.KOTA)
Catatan: aesthetic color sebenarnya juga bisa digunakan namun hasilnya akan tampak sebagai berikut.
Tugas Praktek
Lengkapi code editor dimana histogram yang dihasilkan bisa ditambahkan dengan aesthetic fill – input berupa
kolom NAMA.KABUPATEN.KOTA.
Kesimpulan
Histogram adalah tipe visualisasi yang sangat cocok untuk menggambarkan data distribusi dari jumlah populasi
data. Dan dataset kependudukan adalah contoh yang baik dimana kita bisa menggambarkan distribusi
kepadatan penduduk dengan jumlah kelurahan.
Praktek pada bab ini cukup simpel dan straightforward, dimana kita telah menggunakan function
geom_histogram dengan parameter binwidth untuk menghasilkan grafik distribusi.
Pendahuluan
Line chart atau grafik garis adalah tipe visualisasi yang sangat baik untuk menggambarkan apa impact (pengaruh)
dari perubahan suatu variable dari satu titik ke titik lain atau trend– dan variable yang paling umum digunakan
adalah waktu.
Sebagai contoh, di bidang ekonomi untuk menggambarkan inflasi dari bulan ke bulan. Namun tentunya tidak
harus selalu waktu. Perubahan lain, misalkan pengaruh kecepatan lari dengan peningkatan detak jantung.
29
Untuk membuat line chart standar, kita gunakan geom bertipe line dan stat identity, yang bisa diwakili oleh
function geom_line.
Pada bab berikut kita akan gunakan dataset tambahan, yaitu tingkat inflasi bulanan tahun 2017 untuk negara
Indonesia dan Singapura. Selain plotting, diperkenalkan juga konsep factoring untuk menangani data dan
grouping untuk grafik.
Dataset Inflasi
Untuk dataset untuk inflasi kita akan "loncat" sedikit ke dataset lain, yaitu dataset inflasi sepanjang tahun 2017
untuk negara Indonesia dan Singapore. Dataset ini dikumpulkan oleh DQLab untuk keperluan pelatihan dan
dapat didownload di:
https://storage.googleapis.com/dqlab-dataset/inflasi.csv
Dataset ini hanya memiliki tiga kolom, yaitu:
Bulan: bulan dan tahun data inflasi.
Negara: negara yang mengalami inflasi.
Inflasi: tingkat inflasi dalam persentase.
File ini berbentuk csv dan akan dibaca dengan menggunakan function read.csv
30
Membaca data inflasi
Langkah pertama yang perlu kita lakukan adalah membaca dataset inflasi tersebut dari file teks menjadi
data.frame di R dengan perintah read.csv.
Berdasarkan keterangan mengenai dataset ini dan praktek di dua bab sebelumnya, kita langsung lakukan
praktek sebagai berikut.
Tugas Praktek
Ganti bagian […] dengan kedua perintah berikut pada code editor yang berfungsi untuk membaca dan
menampilkan data inflasi .
inflasi.indo.sing <- read.csv("https://storage.googleapis.com/dqlab-dataset/inflasi.csv", sep=",")
inflasi.indo.sing
Jika berjalan lancar, maka hasil yang didapatkan adalah sebagai berikut.
31
Tambahkan layer untuk line chart pada bagian […] di code editor yang telah dilengkapi dengan plot, data, dan
aesthetic mapping.
Jika berjalan dengan baik, maka akan muncul dua hasil, satu grafik berupa plot kosong dan satu tampilan error
sebagai berikut. Ini artinya sistem kebingungan karena tiap Bulan pada sumbu x memiliki dua data (observation).
Kondisi ini akan kita perbaiki pada praktek selanjutnya.
geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?
32
Penyebabnya adalah sistem kebingungan karena data untuk tiap bulan memiliki dua titik data, yang akan
menjadi kendala karena tiap line perlu satu titik data untuk sumbu x dan y.
Ini karena kita belum membagi data dengan aesthetic grouping dengan konstruksi berikut. Walaupun pada
gambar kita sudah memiliki aesthetic color yang membagi Indonesia dan Singapura, tapi kita masih perlu
memiliki aesthetic group sebagai berikut:
aes(…, group=Negara)
Dimana … mewakili pasangan aesthetic mapping lainnya.
Tugas Praktek
Tambahkan aesthetic group dengan Negara pada bagian […] di code editor, sehingga jika dijalankan akan
menghasilkan grafik berikut.
Catatan: Perhatikan jika teks Bulan pada sumbu X masih pada urutan yang salah. Jangan kuatir, ini akan kita
perbaiki di praktek berikutnya.
33
Memperbaiki Urutan Bulan dengan Factoring
Urutan bulan yang salah pada praktek sebelumnya karena masalah pengurutan internal di sistem R, yang
mengurutkan berdasarkan alphabet.
Jika kita lihat internal struktur dengan function str, maka untuk kolom bulan terlihat sebagai berikut.
Kita dapat secara manual merubah urutan ini dengan factor dan parameter levels dimasukkan manual.
Dengan data bulan dari Jan s/d Oct 2017 maka konstruksi factor adalah sebagai berikut.
factor(inflasi.indo.sing$Bulan, levels = c("Jan-2017", "Feb-2017", "Mar-2017", "Apr-2017", "May-2017", "Jun-2017", "Jul-2017", "Aug-
2017", "Sep-2017", "Oct-2017"))
Ini perlu dimasukkan kembali ke kolom bulan untuk merubah urutannya dengan perintah berikut.
inflasi.indo.sing$Bulan <- factor(inflasi.indo.sing$Bulan, levels = c("Jan-2017", "Feb-2017", "Mar-2017", "Apr-2017", "May-2017", "Jun-
2017", "Jul-2017", "Aug-2017", "Sep-2017", "Oct-2017"))
Tugas Praktek
Gantilah bagian […] dengan factoring sehingga hasil output terakhir yang tampil adalah sebagai berikut, sehingga
data akan siap untuk ditampilkan.
34
Plotting Ulang dengan hasil Factoring
Dengan proses perbaikan pengurutan yang telah kita lakukan sebelumnya, saatnya kita plotting ulang data
inflasi kita.
Tugas Praktek
yang ada pada code editor, ini merupakan kumpulan code yang telah kita lakukan dan perbaiki sepanjang bab
ini. Tapi pada code ini juga ditambahkan layer geom text yang digunakan untuk menandai label-label nilai pada
titik di line chart.
Jalankan langsung code tersebut tanpa perubahan atau tambahan apapun. Anda harusnya mendapatkan grafik
sebagai berikut.
Kesimpulan
Line chart menggunakan geom line telah kita praktekkan pada bab untuk menampilkan tren inflasi negara
Indonesia dan Singapura untuk periode Januari s/d Oktober 2017.
Terlihat juga bahwa dataset yang kita baca dari file teks ini tidak bisa langsung digunakan begitu saja karena ada
urutan data pada kolom Bulan yang perlu diubah.
35
Dengan treatment data yang baik dan dengan penambahan aesthetic baru – yaitu grouping – kita telah
menyelesaikan pembuatan line chart sederhana dengan ggplot.
Pendahuluan
Dengan praktek yang telah kita lakukan untuk menghasilkan scatter plot dan line chart, kita melangkah ke
praktek untuk membuat bar chart dan pie chart.
Bar chart atau grafik batang adalah salah satu tipe visualisasi yang sudah umum digunakan yang sangat baik
untuk melakukan perbandingan data multi kategori. Sedangkan pie chart sangat berguna untuk melihat rasio.
Kita kembali akan menggunakan dataset kependudukan Jakarta, namun telah dirubah untuk kepentingan kedua
chart ini.
Kolom-kolom ini akan butuh banyak data treatment atau data preparation sebelum dapat digunakan untuk
kepentingan penggunaan grafik kita untuk bab ini.
Oleh sebab itu, DQLab telah melakukan proses tersebut sehingga datanya menjadi seperti bentuk berikut.
36
Catatan: Detil transformasi data yang dilakukan akan dibahas di course "Data Preparation / Wrangling with R"
Berikut adalah nama kolom dataset tersebut.
1. TAHUN: Tahun
2. NAMA PROVINSI: Nama provinsi di DKI Jakarta, dan nilainya hanya ada satu
3. NAMA KABUPATEN/KOTA: Nama kabupaten/kota di DKI Jakarta
4. NAMA KECAMATAN: Nama kecamatan di DKI Jakarta
5. NAMA KELURAHAN: Nama kelurahan di DKI Jakarta
6. LUAS WILAYAH (KM2): Luas wilayah (km persegi)
7. KEPADATAN (JIWA/KM2): Kepadatan penduduk (jiwa/km2)
8. JENIS KELAMIN: Jenis kelamin dari populasi
9. RENTANG UMUR: Rentang umur dari populasi
10. JUMLAH: Jumlah penduduk
Dengan demikian, dataset ini telah kita ubah strukturnya tanpa menghilangkan informasi aslinya. File csv dari
dataset ini dapat didownload di url berikut:
https://storage.googleapis.com/dqlab-dataset/datakependudukandki-dqlab.csv
37
Ini akan menghasilkan gambar chart berikut. Kelihatan aneh karena jumlah baris data untuk Laki-laki dan
Perempuan di dataset kita seimbang. Dan karena stat untuk geom bar adalah count, maka yang ditampilkan
adalah jumlah baris data. Ini akan kita rubah pada praktek selanjutnya.
Tugas Praktek
Di dalam code editor telah tersedia code untuk membaca dataset baru kita. Lengkapi […] dengan code yang
sesuai sehingga dapat menghasilkan bar chart berikut.
38
Aesthetic Y dan Stat Identity
Pada praktek sebelumnya, bar chart kita masih mirip dengan histogram. Dan itu bukan yang kita inginkan.
Kita akan memplot bar chart, dimana aesthetic y menggunakan stat penjumlahan (sum) - bukan count - dari
data kepadatan penduduk.
Ini bisa dilakukan dengan mengisi dua hal berikut:
Mengisi aesthetic y dengan kolom grouping yang kita inginkan - yaitu kolom bernama JUMLAH - pada
plot (ggplot).
y=JUMLAH
Mengisi parameter stat dengan nilai identity pada bagian layer (geom_bar)..
stat="identity"
Tugas Praktek
Di dalam code editor telah tersedia code yang perlu kita lengkapi. Ganti bagian […] dengan contoh code yang
sesuai dengan penjelasan di atas sehingga dapat menghasilkan bar chart berikut.
39
Aesthetic Fill dan Position Dodge
Pada subbab sebelumnya, kita melihat efek pergantian nilai stat pada geom_bar dari count (nilai default)
menjadi identity untuk mendapatkan total penjumlahan dari angka jumlah penduduk. Saatnya kita bisa lebih
memperbaiki bar chart kita dengan informasi grouping seperti berikut.
40
Kita abaikan label yang menumpuk terlebih dahulu, terlihat bar chart ini telah memiliki informasi jumlah
penduduk, dengan series berdasarkan jenis kelamin dan kemudian dikategorikan berdasarkan nama kabupaten
/ kota.
Untuk melakukan hal ini, ada dua hal yang mesti kita lakukan:
Aesthetic fill pada objek plot perlu diberikan input kolom JENIS.KELAMIN.
fill=JENIS.KELAMIN
Agar data antara Laki-laki dan Perempuan tidak menjadi satu bar, position pada layer kita isi dengan
nilai dodge – dimana objek satu dengan objek yang lain diposisikan bersisian.
position="dodge"
Tugas Praktek
Di dalam code editor telah tersedia code yang perlu kita lengkapi. Ganti bagian […] dengan code yang sesuai
sehingga dapat menghasilkan bar chart seperti terlihat pada bagian Lesson.
Fungsi Aggregate
Data frame yang kita gunakan pada plot, sering sekali harus dilakukan summary terlebih sehingga dapat diproses
lebih mudah oleh layer di ggplot.
Fungsi summary yang bisa kita gunakan adalah function aggregate, yang memiliki minimal tiga input sebagai
berikut:
x: merupakan list dari kolom data yang ingin kita jadikan summary
FUN: function summary yang bisa kita gunakan, misalkan sum, mean, dan lain-lain
by: list berisi pasangan daftar field yang ingin kita gunakan
41
Untuk lebih jelasnya, kita langsung gunakan contoh sebagai berikut:
aggregate(x=list(JUMLAH=penduduk.dki$JUMLAH), FUN=mean, by =
list(NAMA.KABUPATEN.KOTA=penduduk.dki$NAMA.KABUPATEN.KOTA, JENIS.KELAMIN=penduduk.dki$JENIS.KELAMIN))
Komponen Deskripsi
Fungsi aggregate yang akan menghasilkan
aggregate
data.frame baru
Parameter x diisi dengan list. Kebetulan
listnya isinya adalah 1 variable bernama
x=list(RATARATA=penduduk.dki$JUMLAH)
RATARATA yang diambil dari kolom
penduduk.dki$JUMLAH
Fungsi yang digunakan adalah rata-rata
FUN=mean
(mean) untuk summary
by = list( Dua kolom group by digunakan yaitu
NAMA…..KELAMIN) NAMA.KABUPATEN.KOTA dan JENIS.KELAMIN
Jika dijalankan perintahnya akan menghasilkan data frame berikut:
Tugas Praktek
Di dalam code editor telah tersedia code yang perlu kita lengkapi. Ganti bagian […] dengan function aggregate
dari teks lesson di atas, namun dengan fungsi sum. Kemudian nama RATARATA diganti dengan JUMLAH.
42
Ini dapat menggunakan tambahan komponen tema berikut yang belum dibahas di bab-bab sebelumnya untuk
menghasilkan grafik tersebut:
komponen Keterangan
Menggunakan fungsi aggregate yang
aggregate(…)
dibahas pada praktek sebelumnya
theme(…) Function untuk mengatur teks pada grafik
Melakukan rotasi text data (axis.text.x)
axis.text.x = element_text(angle=45,vjust =
sebesar 45 derajat ke kiri (angle=45), dan
0.5))
penempatan teks secara vertical di tengah-
tengah (vjust=0.5).
plot.title = element_text(hjust=0.5) Mengatur posisi teks pada title ke tengah
Grafik bar chart dimana posisi data yang
geom_bar(stat="identity", position="dodge") dispesifikasikan di fill, ditempatkan bersisian
(position="dodge")
Penempatan kolom JUMLAH sebagai label
label = JUMLAH
untuk marking data pada aestethic mapping
Mengatur posisi text untuk nilai data saat ini
geom_text(position = position_dodge(1.2))
di atas bar plot
43
Tugas Praktek
Di dalam code editor terdapat code lengkap dari seluruh komponen di atas. Anda tinggal pelajari detilnya untuk
memahami apa saja yang diperlukan, tidak ada yang perlu dirubah atau ditambahkan.
Nah, bayangkan grafik ini kemudian diputar ke dalam koordinat polar sehingga menjadi seperti berikut.
44
Perputaran ini membuat bar chart tadi ditransformasikan menjadi pie chart.
Walaupun terlihat tidak sempurna, untuk saat ini kita tidak akan membahas terlalu jauh lagi mengenai pie chart
kecuali Anda melakukan tugas praktek untuk menghasilkan grafik di atas.
Tugas Praktek
Di dalam code editor terdapat code lengkap dari seluruh komponen di atas. Anda tinggal pelajari detilnya untuk
memahami apa saja yang diperlukan, tidak ada yang perlu dirubah atau ditambahkan.
Kesimpulan
Pada bab ini, kita telah menyelesaikan teori dan praktek untuk membuat bar chart dan pie chart.
Walaupun kelihatan sederhana, untuk menghasilkan bar chart kita perlu mengerti beberapa function dan proses
sebagai berikut:
Dataset kependudukan yang telah kita gunakan pada bab-bab sebelumnya sangat sulit digunakan dan perlu
ditransformasikan terlebih dahulu.
Geom bar secara default hanya memerlukan aesthetic mapping x, karena secara internal geom bar ini
menggunakan stat = "count".
Jika ingin menghitung agregasi sum, lebih baik kita gunakan variable baru yang menampung hasil agregasi
dengan function aggregate.
Untuk membuat bar chart dengan grouping yang bersisian, kita gunakan aesthetic mapping fill dan
positioning dodge.
45
Bar chart dan pie chart adalah grafik dari ggplot2 yang memiliki karakteristik yang hampir sama, kecuali
koordinat polarnya.
46
Bab berikut akan membahas penggunaan praktis dari faceting.
Tugas Praktek
47
Di dalam code editor terdapat code lengkap perlu dilengkapi bagian […] dengan function facet_wrap seperti
pada teks lesson di atas.
Jika berjalan lancar maka grafik yang dihasilkan terlihat sebagai berikut. Terlihat kepadatan untuk Jakarta Pusat
sangat tidak berimbang dibandingkan kabupaten lainnya di DKI Jakarta.
48
Kesimpulan
Selamat, Anda telah menyelesaikan seluruh teori pengantar dan praktek mengenai visualisasi dengan ggplot2.
Sepanjang course ini Anda telah mempelajari fundamental data visualisasi ggplot2 dengan pembelajaran kunci
sebagai berikut:
Konsep rancangan ggplot2 sebagai grammar of graphics yang memecah satu grafik menjadi komponen-
komponen visual.
Komponen plot sebagai kanvas dasar sebelum bisa meghasilkan berbagai macam grafik.
Data dan aesthetic mapping sebagai isi untuk plot dan grafik.
Layer sebagai komponen grafik itu sendiri, yang terdiri dari geom, stat dan position.
Pengunaan layer dan transformasi data yang diperlukan untuk menghasilkan scatter plot, histogram, line
chart, bar chart, dan pie chart.
Faceting untuk memecah grafik sehingga lebih mudah dianalisa.
Dengan dasar ini kita sudah dapat menghasilkan berbagai grafik yang dapat bercerita mengenai informasi dari
data yang dikandungnya.
What Next?
Topik ggplot2 adalah topik yang sangat luas. Banyak jenis grafik dan function yang belum kita bahas. Untuk fitur-
fitur lain di ggplot2 kita akan mempelajari melalui project-project yang ada di dalam track, ataupun melalui track
ggplot tersendiri.
49