Visualisasi Data menggunakan ggplot2 di R (Bagian 2)

Ayundyah Kesumawati
4 min readOct 27, 2018

--

Pada bagian 1 kita telah mempelajari tentang sebagian dari layer ggplot2. pada bagian 2 akan membahas tentang Statistical Transformations.

beberapa plot (seperti scatterplot) tidak memerlukan transformasi khusus untuk menggambarkan x dan y, karena x dan y tetap menggunakan nilai asli. Tetapi plot lain seperti Boxplot, Histogram, Regresi membutuhkan transformasi statistika.

  • misalkan pada boxplot maka diperlukan transformasi data asli ke dalam bentuk median
  • untuk smoothing maka nilai y harus diubah menjadi hasil dari data prediksi

Masing-masing fungsi geom pada ggplot2 mempunyai bentuk rumus umumnya secara statistik, tetapi hal ini bisa dirubah. Misal, settingan umum dari geom_bar adalah stat_bin:

args(geom_histogram)
args(stat_bin)

Pembentukan Syntax Transformasi Statistika

dalam ggplot2 fungsi yang digunakan untuk mendapatkan nilai statistikanya dapat dilakukan melalui geom_ . namun hal ini tidaklah simple untuk digunakan karena kita harus terlebih dahulu menentukan statistik apa yang akan digunakan untuk masing-masing geom_.

berikut merupakan contoh penggunaan default stat untuk histogram

p2 <- ggplot(housing, aes(x = Home.Value))
p2 + geom_histogram()

jika kita ingin memodifikasi dengan bermain dengan binwidth, misalkan

p2 + geom_histogram(stat = "bin", binwidth = 3000)

Mengganti Rumus Transformasi Statistika

ketika kita ingin membuat tampilan sesuai dengan keinginan kita termasuk dalam perubahan rumus statistika dalam sebuah visualisasi. Hal ini sering dilakukan ketika sebelum melakukan penarikan kesimpulan dari sebuah data

housing.sum <- aggregate(housing["Home.Value],housing["State"], FUN = mean)
rbind(head(housing.sum), tail(housingh.sum))
ggplot(housing.sum,aes(x = State, y = Home.Value))+geom_bar()

Mengapa hal tersebut bisa terjadi, karena pada pada plot sebelumnya anda telah memerintahkan kepada ggplot untuk membuat bin dan memberikan kesimpulan, sehingga untuk fungsi yang diatas tidak akan berjalan sebagaimana mestinya. Hal terebut dapat diperbaiki dengan memerintahkan pada geom_bar untuk menggunakan tranformasi statistika yang lain dengan :

ggplot(housing.sum, aes(x = State, y = Home.Value))+
geom_bar(stat="identity")

Latihan 2

  1. buatlah kembali scatterplot dengan CPI pada axis x dan HDI pada axis y
  2. Tambahkan garis smoother diantara scatterplot yang telah anda buat menggunakan geom_smooth
  3. Tambahkan garis smoother diatas scatterplot menggunakan geom_smooth, tapi gunakan sebuah garis linier prediksi diantara kedua plot terbut. Hint; gunakan ?stat_smooth
  4. Tambahkan garis smoothing di atas scatterplot menggunakan geom_line
  5. Tambahkan sebuah garis smoothing di atas scatterplot dengan menggunakan loess default. Hint: lihat ?loess

Scales

Aesthethic mapping (misalnya aes()) hanya memerintahkan untuk menggambarkan secara default. Misalnya, ketika akan menggambarkan sebuah variabel dengan bentuk maka menggunakan aes(shape = x) tapi tidak diperintah untuk menggunakan shape apa. Hal yang sama adalah untuk warna maka akan digunakan aes(color=z) tapi tidak dikatakan bahwa warna apa yang akan digunakan. untuk mendeskripsikan warna, shape atau ukuran dilakukan dengan memodifikasi tampilan dengan scale. Dalam ggplot2 scale ada:

  • posisi
  • color and fill
  • ukuran
  • bentuk
  • jenis garis

pada ggplot2 fungsi scale dapat dimodifikasi dengan menggunakan scale_<aesthetic>_type dinamakan scheme. Untuk informasi lebih cepat bisa dengan menggunakan scale_<tab> untuk melihat lebih jelasnya dari modifikasi fungsi.

p3 <- ggplot(housing,
aes(x = State,
y = Home.Price.Index)) +
theme(legend.position="top",
axis.text=element_text(size = 6))
(p4 <- p3 + geom_point(aes(color = "Date"),
alpha = 0.5,
size = 1.5,
position = position_jitter(width = 0.25, height = 0)))

berikut merupakan hasil modifikasi untuk scale dan break yang diambil untuk tahun 1976, 1994, dan 2013.

p4 + scale_x_discrete(name="State Abbreviation") +
scale_color_continuous(name="",
breaks = c(1976, 1994, 2013),
labels = c("'76", "'94", "'13"))

modifikasi dengan perbedaan warna untuk level yg tinggi berwarna merah dan yang rendah merah

p4 +
scale_x_discrete(name="State Abbreviation") +
scale_color_continuous(name="",
breaks = c(1976, 1994, 2013),
labels = c("'76", "'94", "'13"),
low = "blue", high = "red")
library(scales)
p4 +
scale_color_continuous(name="",
breaks = c(1976, 1994, 2013),
labels = c("'76", "'94", "'13"),
low = muted("blue"), high = muted("red"))

Menggunakan beda waran dalam 1 scale

library(scale) memungkinkan untuk setting warna di dalam tampilan satu scale

p4 +
scale_color_gradient2(name="",
breaks = c(1976, 1994, 2013),
labels = c("'76", "'94", "'13"),
low = muted("blue"),
high = muted("red"),
mid = "gray60",
midpoint = 1994)

Ketersediaan Scale

berikut merupakan kombinasi yang mungkin untuk membuat gabungan scale. Informasi tersebut ada pada scale_ <tab>

Latihan 3

  1. Buatlah scatterplot dengan CPI pada axis x dan HDI pada axis y. Gunakan point untuk mengindikasi region
  2. modifikasi x dan y dan scale warna sehingga visualisasi dapat mudah dipahami (misal Human Development Index sebagai HDI)
  3. modifikasi scala warna sesuai dengan nilai yang anda pilih.
    Hint : lihat ?scale_color_manual

--

--