Visualisasi data Numerik
Input Data
Package {ggplot2} juga menyediakan beberapa dataframe yang dapat digunakan untuk latihan. Salah satu dataframe yang disediakan adalah diamonds, yaitu data tentang harga dan karakter dari 53.940 berlian.
## Warning in instance$preRenderHook(instance): It seems your data is too big for
## client-side DataTables. You may consider server-side processing:
## https://rstudio.github.io/DT/server.html
Histogram
Untuk membuat histogram pada package {ggplot2} menggunakan perintah
geom_histogram(). Variable yang digunakan yaitu
price pada data diamonds.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Secara defaut, geom_histogram() menggunakan 30 bins
(batang). Selanjutnya mengganti nilai bins tersebut dengan menambahkan
argumen bins = 80. Hasilnya sebagai berikut.
Kita dapat memberikan pemisah warna putih dengan menambahkan argumen
color = "white". Hasilnya sebagai berikut.
Kita dapat mengubah warna batang dengan menggunakan argumen
fill, mengubah format penulisan nilai pada sumbu x dan y
menggunakan function scale_x_continuous() untuk sumbu x dan
scale_y_continuous() untuk sumbu y dan mengubah nama label
pada sumbu x dan y dengan fungsi labs. Hasilnya sebagai
berikut.
library(scales)
ggplot(data = diamonds, mapping = aes(x = price)) +
geom_histogram(bins = 30, color = "white", fill = "coral") +
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = comma) +
labs(x = "harga berlian",
y = "Frekuensi")Desnity Plot
Untuk membuat density plot menggunakan ggplot2 kita cukup menggunakan
function geom_density().
Untuk mengatur warna, transaparansi, format penulisan nilai pada sumbu x dan y, dan labeling sumbu x sama seperti pembuatan Histogram. Hasilnya sebagai berikut.
ggplot(data = diamonds, mapping = aes(x = price)) +
geom_density(fill = "coral", alpha = 0.7) +
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = comma) +
labs(x = "harga berlian")Kita dapat membandingkan sebaran menggunakan density plot berdasarkan kategori. Misal akan dilihat sebaran harga berlian (Price) berdasarkan kategori kualitas potongan berlian (cut). Hasilnya sebagai berikut.
ggplot(data = diamonds, mapping = aes(x = price, fill = cut, color = cut)) +
geom_density(alpha = 0.7) +
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = comma) +
labs(x = "Price")Untuk mengurangi kesulitan dalam mengamati visual tersebut maka perlu
dipisah per kategori dengan menggunakan visualisasi ridgeline
plot atau disebut juga joyplot dengan
menggunakan fungsi geom_density_ridges().
## Warning: package 'ggridges' was built under R version 4.4.3
ggplot(data = diamonds, mapping = aes(x = price, y= cut,fill = cut)) +
geom_density_ridges() +
labs(x = "Harga berlian", y = "kualitas berlian")## Picking joint bandwidth of 458
Boxplot
Untuk membuat boxplot di ggplot2 kita dapat gunakan
function geom_boxplot().
Membuat boxplot secara vertikal menggunakan perintah
coord_flip(). Hasilnya sebagai berikut.
kita dapat membuat boxplot dari data numerik dan membandingkan sebarannya berdasarkan kategori. Misalnya kita ingin membandingkan sebaran harga berlian (price) berdasarkan tingkat warna (color). Hasilnya sebagai berikut.
Selanjutnya memberi warna berbeda untuk setiap box berdasarkan
kategorinya. Kita dapat menambahkan argumen fill dengan
nilai berupa nama variabel dari kategori yang ingin kita gunakan untuk
perbandingan boxplot. Misalnya kita ingin membandingkan sebaran dari
variabel harga berlian (price) berdasarkan warnanya
(color) menggunakan boxplot dan menyesuaikan
warnanya berdasarkan kategori dari color. Hasilnya sebagai
berikut.
Untuk menghilangkan legend dari color kita dapat tambahkan
theme(legend.position = "none").Hasilnya sebagai
berikut.
ggplot(data = diamonds, mapping = aes(x = price, y = color, fill = color)) +
geom_boxplot() +
theme(legend.position = "none")Violin Plot
Plot ini dibentuk dengan menggabungkan antara Density
Plot dengan boxplot dengan fungsi
geom_violin(). Hasilnya sebagai berikut.
ggplot(data = diamonds, mapping = aes(x = price,y="all")) +
geom_violin(fill="green",alpha=0.5) +
geom_boxplot(fill="blue",width=0.1) +
scale_x_continuous(labels = comma) QQ-Plot
Plot ini berguna untuk memeriksa apakah sebaran data (sebaran empirik) memiliki bentuk yang sama dengan sebaran tertentu yang dispesifikan (sebaran hipotetik). Misalnya kita ingin melihat pola sebaran harga berlian (price). apakah menyebar normal atau tidak.
ggplot(data = diamonds, aes(sample = price)) +
stat_qq(col="blue", cex=0.9) +
stat_qq_line(col="red", lwd=1)Scatter plot
Untuk membuat scatter plot menggunakan ggplot2 kita
dapat menggunakan geom_point(). Misalnya kita ingin melihat
pola sebaran antara carat dan price. Hasilnya sebagai
berikut.
Kita juga dapat memberikan warna untuk setiap titik. Misalnya pola sebaran antara carat dan price berdasarkan kategori jenis berlian (cut). Hasilnya sebagai berikut.
Line chart
Plot ini digunakan untuk melihat trend data berdasarkan perubahan waktu. Artinya pada Line Chart cocok untuk data-data deret waktu.
Input Data
Data yang digunakan yaitu data rata-rata jumlah pasien positif covid 19 per hari di beberapa daerah. Data dapat di download disini
Line chart Dasar
Untuk membuat bentuk Line Chart sederhana dengan menggunakan fungsi
geom_line(). Misalnya kita akan membuat trend banyaknya
kasus harian covid-19 di DKI Jakarta. Hasilnya sebagai
berikut.
ggplot(data = covid, aes(x=date,y=Jakarta)) +
geom_line() +
labs(x="waktu", y="banyaknya kasus harian") Area Plot
Untuk menambah estetika dapat dilakukan dengan mengarsir daerah di
bawah plot deret waktu. Plot seperti ini disebut Area
Plot dengan menggunakan fungsi geom_area().
Hasilnya sebagai berikut.
ggplot(data = covid, aes(x=date,y=Jakarta)) +
geom_line(lwd=1.2, col="darkgreen") +
geom_area(fill="green", alpha=0.3) +
labs(x="waktu", y="banyaknya kasus harian")Multiple Line Chart
Pada plot ini dapat digunakan untuk membandingkan trend data deret waktu pada beberapa wilayah/kelompok. Misalnya kita akan membuat perbandingan trend banyaknya kasus harian covid-19 di DKI Jakarta dan Jawa Barat. Hasilnya sebagai berikut.
ggplot(data = covid, aes(x=date)) +
geom_line(aes(y=Jakarta), lwd=1.2, col="blue") +
geom_line(aes(y=Jabar), lwd=1.2, col="red") +
labs(x="waktu", y="banyaknya kasus harian") Untuk menambahkan nama kelompok digunakan fungsi
geom_text(). Hasilnya sebagai berikut.
ggplot(data = covid, aes(x=date)) +
geom_line(aes(y=Jakarta), lwd=1.2, col="blue") +
geom_line(aes(y=Jabar), lwd=1.2, col="red") +
xlim(min(covid$date),max(covid$date)+100) +
geom_text(x=max(covid$date),y=tail(covid$Jakarta,1)+30,
label="DKI Jakarta", size = 5,
color="blue", hjust=-0.1) +
geom_text(x=max(covid$date),y=tail(covid$Jabar,1)+30,
label="Jawa Barat", size = 5,
color="red", hjust=-0.1) +
labs(x="waktu", y="banyaknya kasus harian") Terima kasih sudah membaca blog ini. Semoga bermanfaat. ^_^