Visualisasi Data Kategorik
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
Bar Chart
Chart ini digunakan untuk menunjukkan jumlah/frekuensi dari setiap kategori atau kelompok. Misal akan dilihat jumlah berlian berdasarkan kualitas potongan berlian (cut). Hasilnya sebagai berikut.
Secara default, geom_bar() menggunakan
stat = "count", yang berarti ia akan menghitung jumlah
observasi (frekuensi) untuk setiap kategori dari variabel yang
disebutkan pada sumbu x dan menampilkannya sebagai tinggi batang. Namun,
ketika Anda menggunakan stat = "identity", Anda memberitahu
ggplot2 untuk menggunakan nilai yang sudah ada di data
sebagai tinggi batang, bukan menghitung frekuensi.
Bar Chart dengan tabel frekuensi
Untuk menggunakan bar chart dengan perintah
stat = "identity", kita harus membuat tabel frekuensi di
setiap kategori.
Membuat tabel frekuensi
Tabel frekuensi dapat dibuat dengan menggunakan perintah
table(). Misalnya kita akan membuat tabel frekuensi
berdasarkan variabel kualitas potongan berlian (cut).
## Var1 Freq
## 1 Fair 1610
## 2 Good 4906
## 3 Very Good 12082
## 4 Premium 13791
## 5 Ideal 21551
Membuat Bar Chart
Untuk membuat bar chart ini, kita menggunakan tabel frekuensi yang
sudah didefinisikan yaitu freqtab. Kemudian gunakan
stat = "identity" untuk menggunakan nilai yang sudah ada di
data sebagai tinggi batang. Hasilnya sebagai berikut.
Cara lain yang dapat digunakan untuk membuat diagram batang ketika
data yang kita miliki sudah dalam bentuk tabel frekuensi adalah dengan
geom_col(). Hasilnya sebagai berikut.
Modifikasi Bar Chart
Untuk Menambahkan judul menggunakan perintah labs(),
memberikan warna pada grafik menggunakan perintah fill, dan
memberikan label pada setiap batang menggunakan perintah
geom_text(). Hasilnya sebagai berikut.
ggplot(data = freqtab, mapping = aes(x = Var1, y = Freq)) +
geom_col(fill = "coral", alpha = 0.7) +
labs(title = "Frekuensi berdasarkan kualitas potongan berlian",
x = "kualitas potongan berlian",
y = "Frekuensi") +
geom_text(aes(label = Freq), vjust = -0.25)Needle Chart
jenis diagram batang yang menampilkan data dalam bentuk garis vertikal tipis seperti jarum (needle) yang membentang dari sumbu horizontal ke titik data tertentu. Needle Chart sering digunakan untuk menggambarkan tren data diskrit, perubahan nilai dari waktu ke waktu, atau perbandingan antara kategori tertentu. Misal akan membuat grafik jumlah berlian berdasarkan kualitas potongan berlian (cut). Hasilnya sebagai berikut.
ggplot(data = freqtab,
mapping = aes(x = reorder(Var1, Freq), y = Freq)) +
geom_segment(aes(x = reorder(Var1, Freq),
xend= reorder(Var1, Freq),
y = 0, yend = Freq), color = "skyblue") +
geom_point(color = "navyblue", size=4, alpha = 0.6) +
geom_text(aes(label = Freq), vjust = -1.00) +
coord_flip() +
labs(y = "Jumlah Berlian", x = "kualitas potongan berlian")Grouped Bar Chart
Untuk membuat kelompok/grup pada bar chart dapat menambahkan perintah
mapping. Misalnya kita akan membuat grafik jumlah berlian
berdasarkan kualitas potongan berlian. Hasilnya sebagai berikut.
ggplot(data = diamonds,
mapping = aes(x = cut, fill =as.factor(color))) +
geom_bar(position = "dodge", stat = "count") +
labs(x = "kualitas potongan berlian", fill = "warna berlian",
y = "jumlah berlian") +
scale_fill_brewer(palette = "Oranges") +
theme_light()Stacked Bar Chart
Untuk membuat tampilan menumpuk pada kelompok/grup bar chart dapat
digunakan perintah position = "stack". Hasilnya sebagai
berikut.
ggplot(data = diamonds,
mapping = aes(x = cut, fill =as.factor(color))) +
geom_bar(position = "stack", stat = "count") +
labs(x = "kualitas potongan berlian", fill = "warna berlian",
y = "jumlah berlian") +
scale_fill_brewer(palette = "Oranges") +
theme_light()Pie Chart
Untuk membuat pie chart, pertama kita harus menyiapkan data dengan meringkas menjadi tabel frekuensi. Misalnya akan membuat pie chart persentase jumlah berlian berdasarkan jenis potongan berlian (cut).
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## # A tibble: 5 × 2
## cut counts
## <ord> <int>
## 1 Fair 1610
## 2 Good 4906
## 3 Very Good 12082
## 4 Premium 13791
## 5 Ideal 21551
Selanjutnya mengitung posisi label teks sebagai jumlah kumulatif proporsi.
df <- df %>%
arrange(desc(cut)) %>%
mutate(prop = round(counts*100/sum(counts), 1),
lab.ypos = cumsum(prop) - 0.5*prop)
head(df, 4)## # A tibble: 4 × 4
## cut counts prop lab.ypos
## <ord> <int> <dbl> <dbl>
## 1 Ideal 21551 40 20
## 2 Premium 13791 25.6 52.8
## 3 Very Good 12082 22.4 76.8
## 4 Good 4906 9.1 92.6
Setelah itu, kita dapat membuat grafik Pie Chart dengan perintah
geom_bar() dan coord_polar(). Hasilnya sebagai
berikut.
ggplot(df, aes(x = "", y = prop, fill = cut)) +
geom_bar(width = 1, stat = "identity", color = "white") +
geom_text(aes(y = lab.ypos, label = prop), color = "white")+
coord_polar("y", start = 0)+
ggpubr::fill_palette("jco")+
theme_void()Peta Spasial
Pada pembuatan peta spasial, yang perlu disiapkan adalah data excel dan peta SHP. Download data excel disini Download peta shp disini
## Linking to GEOS 3.13.0, GDAL 3.10.1, PROJ 9.5.1; sf_use_s2() is TRUE
Import Data Excel dan SHP
Pertama, kita import data excel dan peta SHP menggunakan perintah
read_xlsx() dan read_sf().
## # A tibble: 6 × 4
## KECAMATAN KELURAHAN ID Kasus.DBD
## <chr> <chr> <dbl> <dbl>
## 1 BATAM KOTA Baloi Permai 23 105.
## 2 BATAM KOTA Belian 27 42.9
## 3 BATAM KOTA Sukajadi 24 65.8
## 4 BATAM KOTA Sungai Panas 25 98.9
## 5 BATAM KOTA Taman Baloi 22 31.3
## 6 BATAM KOTA Teluk Tering 26 14.1
Selanjutnya gabungkan data excel ke dalam data SHP dengan perintah
left_join(). Dalam proses penggabungan ini menggunakan
variabel kunci ID. Artinya dalam data excel dan peta
SHP ada variabel ID sehingga kedua data tersebut dapat
digabungkan. Variabel ID merupakan kode angka untuk
mewakili setiap lokasi/wilayah yang akan dipetakan.
#Menggabungkan Data ke file SHP
gabung.batam=left_join(shp.batam,data.spasial,by="ID")
head(gabung.batam)## Simple feature collection with 6 features and 9 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 103.8982 ymin: 1.052583 xmax: 104.0214 ymax: 1.14891
## CRS: NA
## # A tibble: 6 × 10
## ID KECAMATAN.x DESA KASUS Long Lat geometry
## <dbl> <chr> <chr> <int> <dbl> <dbl> <MULTIPOLYGON>
## 1 1 SEKUPANG TANJUNG RIAU 0 104. 1.08 (((103.936 1.085661, 103.…
## 2 2 SEKUPANG TANJUNG PINGGIR 0 104. 1.13 (((103.9486 1.144614, 103…
## 3 3 SEKUPANG TIBAN LAMA 0 104. 1.10 (((104.0175 1.110982, 104…
## 4 4 SEKUPANG TIBAN BARU 3 104. 1.10 (((103.9724 1.110226, 103…
## 5 5 SEKUPANG SUNGAI HARAPAN 8 104. 1.11 (((103.9596 1.118562, 103…
## 6 6 SEKUPANG PATAM LESTARI 1 104. 1.12 (((103.9699 1.129785, 103…
## # ℹ 3 more variables: KECAMATAN.y <chr>, KELURAHAN <chr>, Kasus.DBD <dbl>
Pemetaan data Spasial
Selanjutnya dilakukan pemetaan dengan perintah
geom_sf(). Misal akan dipetakan index rate kasus DBD di
Kota Batam. Hasilnya adalah sebagai berikut.
#Pemetaan Index Rate Kasus DBD
plot.batam = ggplot(data=gabung.batam) +
geom_sf(aes(fill = Kasus.DBD)) +
scale_fill_distiller("Index Rate Kasus DBD", palette = "YlOrRd")
plot.batamTerima kasih sudah membaca blog ini. Semoga bermanfaat. ^_^