Eksplorasi Data (2)

Eksplorasi data (2)

LANJUTAN…

VISUALISASI DENGAN GGPLOT2

#gambarkan boxplot berdasarkan status organisasi dan nilai mahasiswa tiap kelas yang memiliki pengeluaran per hari sebanyak 50k! (interpretasi hasilnya)
data <- read.csv("E:\\AKADEMIK\\Belajar R\\UTS ADE\\datasimulasiuts.csv", header = TRUE, sep = ",")
attach(data)
solve_7 <- subset(data, pengeluaran == "50k")
library(ggplot2)
graf_7 <- ggplot(solve_7, aes(x=organisasi,y=nilai))
graf_7 + geom_boxplot(aes(fill=kelas))+
  theme_classic() +
  labs(title= "Box plot",
       subtitle="nilai mahasiswa berdasarkan status keorganisasian",
       x = "Status Organisasi",
       y = "nilai mahasiswa")

Sesuai perintaah diatas, maka sebelum membuat grafik box plot terlebih dahulu dilakukan subsetting data. Permintaannya yaitu untuk mahasiswa yang biaya pengeluaran perhari sebanyak 50k. Perintah ggplot()untuk menginsisiasi objek ggplot. artinya perintah tersebut dapat digunakan untuk menyatakan frame data input pada grafik. pada kasus diatas yang menjadi sumbu x adalah status organisasi dan sumbu y yaitu nilai mahasiswa. geom_boxplot perintah untuk membuat grafik boxplot yang memuat informasi Q1, Q2 (median), Q3, whisker, dan outlier. fill = kelas digunakan sebagai membedakan warna berdasarkan kategori kelas. Perintah labs untuk labeling judul, subtitel, sumbu x dan sumbu y.

interpretasi : Secaara visual pada kelas A, kelompok yang tidak ikut organisasi nampak terlihat interquartile (Q3-Q1) lebih luas dibandingkan dengan yang aktif berorganisasi. Maka dapat dikatakan data nilai mahasiswa yang tidak aktif berorganisasi lebih bervariasi. Median kelas A mahasiswa yang tidak aktif berorganisasi (80) lebih tinggi dibandingkan dengan yang aktif organisasi (sekitar 76). Pada kelas D terdapat data pencilan di mahasiswa yang tidak aktif berorganisasi. Hal tersebut mengindikasi terdapat 3 mahasiswa yang tidak aktif berorganisasi memiliki nilai yang jauh dibandingkan dengan mahasiswa lainnya (tidak aktif organisasi).

#gambarkan histogram nilai mahasiswa berdasarkan jarak tempat tinggalnya yang lebih dari 5km! (interpretasikan)
solve_8 <- subset(data, jarak > 5)
graf_8 <- ggplot(solve_8, aes(nilai))
graf_8 + geom_histogram(bins = 10, col = "black", fill = "brown") +
  theme_classic() +
  labs(title="histogram",
       subtitle="nilai mahasiswa dengan tempat tinggal lebih dari 5km",
       x = "nilai mahasiswa",
       y = "frekuensi")

Histogram adalah tampilan bentuk grafis untuk menunjukkan secara visual seberapa sering suatu nilai yang berbeda terjadi dalam range kumpulan data. Pada kasus di atas yang ingin dilihat yaitu histogram nilai mahasiswa dengan syarat yang memiliki jarang tempat tinggal lebih dari 5km. Sebelumnya, dilakukan subsetting data untuk mahasiswa yang mempunyai tempat tinggal lebih dari 5km. Kemudian perintah geom_histogram adalah untuk membuat historam pada packages ggplot2. untuk menentukan jumlah kelas histogram menggunakan perintah bins = Sesuai dengan jumlah data yang yang lebih dari 150, maka digunakan jumlah kelas histogram antara 10 hingga 12. Jika data kurang dari 50 maka kelas ideal yang terbentuk adalah 5 hingga 7 data.

interpretasi : Dapat diperoleh simpulan berdasarkan visualisasi rentang mahasiswa yang memiliki nilai 59 hingga 63 adalah sebanyak 4 mahasiswa. Sedangkan yang paling banyak yaitu berada di rentang nilai 76 hingga 81 dengan frekuensi sebanyak 20 kali. Jika dilihat secara kasat mata, sudah membentuk garis distribusi normal.

#gambarkan plot densitas nilai mahasiwa tiap kelas yang aktif organisasi! (interpretasikan)
solve_9 <- subset(data, organisasi == "ya")
graf_9 <- ggplot(solve_9, aes(nilai))
graf_9 + geom_density(aes(group=kelas, fill=kelas), alpha = 0.6) +
theme_classic() +
  labs(title="Plot densitas",
       subtitle="nilai mahasiswa yang aktif organisasi berdasarkan kelas",
       x = "nilai mahasiswa",
       y = "densitas")

Mirip dengan histogram, plot densitas berfungsi untuk menunjukkan sebaran distribusi data. Perintah untuk membuat plot densitas di packages ggplot2 adalah geom_density. Kemudian perintah alpha = untuk mengatur estetika ketebalan warna dari plot densitas yang terbentuk.

interpretasi = Pada keluaran grafik diatas dapat menjadi asumsi melihat sebaran distribusi data nilai mahasiswa tiap kelas. Dikatakan berdistribusi normal jika grafik berbentuk gunung dimana puncaknya berada ditengah. Kemudian asymptotic atau ujung-ujung garisnya tidak menyentuh sumbu horizontal sehingga batas ujungnya tidak ada atau tidak hingga. Nilai mahasiswa kelas A secara grafik terlihat membentuk distribusi bimodal. karena mempunya 2 puncak atau terdapat 2 objek yang frekuensinya besar. Berada disekitar nilai 65 dan 80. Kemudian pada mahasiswa kelas B mengalami skew ke kiri karena ekor (tail) landai ke sumbu negatif. Hal tersebut dikarenakan frekuensi nilai mahasiswa kelas B cenderung tinggi sehingga membentuk distribusi serong ke kiri. Pada nilai mahasiwa kelas C diproleh informasi membentuk distribusi skew ke kanan atau ekor (tail) landa ke sumbu positif. Maka dapat dikatakan sebaran data nilai mahasiswa kelas C didominasi oleh nilai-nilai yang kecil. Sedangkan nilai mahasiwa kelas D secara kasat mata terlihat membentuk distribusi normal. Simetris mengalami puncak observasi di tengah. Sehingga dikatakan mahasiswa kelas D mempunyai sebaran nilai yang merata.

GRAFIK ANIMASI

Download datanya DISINI.

INPUT DATA

padi <- read.csv("E:\\BLOG\\MATERI\\MEMBUAT ANIMASI\\datapadi.csv", header = TRUE, sep = ";")
padi$Provinsi <- as.character(padi$Provinsi)
padi$Pulau <- as.character(padi$Pulau)
str(padi)
## 'data.frame':    363 obs. of  6 variables:
##  $ Provinsi     : chr  "Aceh" "Aceh" "Aceh" "Aceh" ...
##  $ Pulau        : chr  "Pulau Sumatera" "Pulau Sumatera" "Pulau Sumatera" "Pulau Sumatera" ...
##  $ Tahun        : int  2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 ...
##  $ Produktivitas: num  42.1 41.8 41.8 42.1 42.5 ...
##  $ Produksi     : int  1547499 1552078 1411650 1350748 1533369 1402287 1556858 1582393 1772962 1788738 ...
##  $ luas_lahan   : int  348232 346305 356649 315277 312803 323010 359751 313649 307556 308973 ...

Jadi pada materi kali ini kita akan membuat visualisasi dalam bentuk animasi produksi padi, luas lahan dan produktivitas tiap provinsi di indonesia sejak tahun 2003 sampai 2015. Seperti biasaa, langkah awal kita panggil dulu data nya ke direktori kerja.. pada command read.csv disesuuikan dengan lokasi file tempat teman2 menyimpan datanya ya. kalau sep = itu untuk pemisah atau separator yang digunakan. biasanya ada laptop yang menggunakan pemisah (;) ada yang (,). Kemudia perintah as.character itu untuk mengubah tipe datanya menjadi variabel. karena sebelumnya tipe data variabel provinsi dan pula itu factor.

SUBSET DATA

padi_sub <- padi[padi$Produksi > 8000000,]
padi_sub$tinggi <- ifelse(padi_sub$Produksi > 8000000, padi_sub$Provinsi, "")

Perintah diatas untuk memilah data yang ingin kita gunakan. karena nantinya hasil plot ingin diketahui provinsi mana yang memiliki total produksi lebih dari 8juta ton, maka harus kita identifikasi terlebih dahulu.

LOAD PACKAGE

library(ggplot2)
library(gganimate)
library(ggrepel)

options(scipen = 100)

mapping <- aes(x = Produksi , y = luas_lahan, 
               col = Pulau, size = Produktivitas,
               frame = Tahun) 

Perintah scipen = untuk mengatur format scientific pada R. jika kita pilih nilai minus (-) maka secara otomatis nanti hasil angka atau perhitungan kita akan keluar dengan format scientific. seperti 1e+03. Pun sebaliknya, jika kita atur dengan nilai positif maka hasilnya akan normal tanpa eksponensial. Perintah aes merupakan command dari package ggplot2berfungsi untuk mengatur variabel yang digunakan dan segala macam grafik yang ingin kita sisipkan. Pada kasus ini kita akan membuat sumbu x dengan variabel produksi, kemudian sumbu y dengan variabel luas lahan, kemudian identifikasi warna dengan kategori pulau, dan ukuran point berdasarkan produktivitas dan mengatur tiap perubahan grafik nya berdasarkan variabel tahun.

MEMBUAT GRAFIK ANIMASI

theme_set(theme_linedraw())
grafik <- ggplot(padi, mapping = mapping) +
  geom_point() +
  labs(title="Produksi & luas lahan", y="luas lahan (Ha)", x="Produksi (ton)", caption="Sumber data: Badan Pusat Statistik") +
  geom_label_repel(aes(label=tinggi), size=3, data=padi_sub) +
  theme(plot.title = element_text(size = 20, face = "bold", hjust = 0.5, color = "black", family="American Typewriter"), legend.position = "none")+
  scale_color_manual(name="Pulau", 
                       values = c("brown", "red", 
                                  "green", 
                                  "yellow",
                                  "blue", 
                                  "orange"))

Selanjtunya kita memasuki langkah mengkontruksi grafiknya. Perintah theme_set() untuk mengatur tema dari grafik. Ada beberapa macam pilihan. temen2 dapat mengskplor sendiri xD. Kemudian perintah labs() untuk mengatur label pada grafik. Sedangkan perintah geom_label_rapel() untuk menambahkan label pada data yang pada tahap sebelumnya telah kita pilah/subset. yaitu provinsi yang memiliki produksi padi lebih dari 8juta ton.

MEMANGGIL GRAFIK ANIMASI

gganimate(grafik, "output.gif")

Hasilnya dapat dilihat pada gambar diatas xD. sebenarnya masih bisa lebih dikembangkan lagi grafiknya dengan beberapa fitur yang ada di package ggplot2. namun pada materi ini cukup segitu dulu yak, pertemuan selanjutnya kita belajar bersama lagi. Temen2 dapat menyimpan hasil grafiknya dengan command `gganimate(namagrafik, “namafile.gif”).

Jadi berdasarkan gif diatas dapat diperoleh informasi, provinsi jawa barat, jawa tengah dan jawa timur memiliki jumlah produksi padi yang paling tinggi serta lahan sawah yang terluas sejak tahun 2003 hingga 2015. Sekian dan terimakasih, semoga bermanfaat!xD


Referensi :

[1] http://www.sthda.com/english/articles/16-r-packages/58-gganimate-create-animations-with-ggplot2/

[2] http://r-statistics.co/Complete-Ggplot2-Tutorial-Part2-Customizing-Theme-With-R-Code.html

[3] https://stats.idre.ucla.edu/r/modules/

Terpopuler