Package Installation
library(forcats)
library(ggplot2)
library(treemap)
library(treemapify)
library(dplyr)
library(tidyr)
library(readxl)
library(DT)
Visualisasi Besaran
Bar Chart
#Read data yang digunakan
data_kb <- read_xlsx("D:/Shabrina/University/Semester 4/Visualisasi Data/Tugas Praktikum/Tempat Perolehan Alat KB Modern 2023.xlsx")
#Hitung frekuensi dari peubah yang akan digunakan
data_kb <- table(data_kb$Keterangan)
#Buat data frame yang terdiri atas peubah-peubah yang inign digunakan dari dataset
data_bar <- data.frame(
Keterangan = names(data_kb),
Frekuensi = as.numeric(data_kb)
)
#Arrange data dari frekuensi tertinggi hingga terendah
data_bar %>%
arrange(desc(Frekuensi))
## Keterangan Frekuensi
## 1 Praktek bidan/bidan di desa/perawat 4141
## 2 Apotek/toko obat 1542
## 3 Puskesmas/Pustu/Klinik 1207
## 4 Praktek dokter umum/kandungan 705
## 5 Rumah Sakit 669
## 6 Posyandu/Pos KB/PPKBD 271
## 7 Polindes/Poskesdes 126
## 8 Lainnya 124
## 9 Rumah bersalin 94
## 10 TKBK/TMK/MUYAN 5
#Buat bar chart dengan ggplot
data_bar%>%
ggplot()+
geom_col(aes(x=fct_reorder(Keterangan, Frekuensi),y = Frekuensi), fill="steelblue",
width=0.4) +
geom_text(aes(x = fct_reorder(Keterangan, Frekuensi), y = Frekuensi, label = Frekuensi),
vjust = -0.8, hjust = 0.8, color = "black") +
scale_y_continuous(expand = c(0,100))+
coord_flip() +
ggtitle("Tempat Pemasangan Alat KB Modern di Provinsi Jawa Barat 2023") +
xlab("") +
ylab("Frekuensi") +
theme_classic() +
theme(plot.title = element_text(hjust = .5, size = 12))
Bar chart tersebut menunjukkan preferensi masyarakat di Provinsi Jawa Barat pada tahun 2023 dalam memilih tempat pemasangan alat KB modern. Terlihat bahwa praktek bidan/bidan di desa/perawat menjadi pilihan tempat pemasangan alat KB modern terbanyak oleh masyarakat. Sementara itu, TKBK/TMK/MUYAN menjadi tempat pilihan paling sedikit. TKBK merupakan Tim Keluarga Berencana Keliling, TMK merupakan Tim Medis Keliling, serta MUYAN merupakan Mobil Unit Pelayanan. Ada beberapa faktor kemungkinan yang mempengaruhi pemilihan tempat pemasangan alat KB modern bagi masyarakat, di antaranya akses terhadap fasilitas kesehatan, kredibilitas dan kepercayaaan, serta kenyamanan dan privasi.
Grouped Bar
#Read data susenas tahun 2022 dan 2023
susenas_kor <- read.csv("C:/Users/ASUS/Downloads/2023 Maret JABAR - SUSENAS KOR INDIVIDU PART1 (1).csv")
susenas_kor22 <- read.csv("C:/Users/ASUS/Downloads/2022 Maret JABAR - SUSENAS KOR INDIVIDU PART1 (1).csv")
#Inisialiasi variabel
db1 <- susenas_kor$R1002
db2 <- susenas_kor$R1003
jenis_kl <- susenas_kor$R405
#Buat data frame dari variabel-variabel yang akan digunakan
db <- data.frame(db1, db2, jenis_kl)
#Ubah value data sesuai tujuan
db <- db %>%
mutate(
db1 = case_when(
db1 == 2 ~ 1,
db1 == 3 ~ 1,
TRUE ~ db1
),
db2 = case_when(
db2 == 5 ~ 1,
db2 == 6 ~ 1,
db2 == 7 ~ 1,
TRUE ~ db2
))
#Remove value yang bernilai 0 dan yang tidak digunakan
db <- db %>%
filter(db1 != 4 & db2 != 8 & db1 != 0 & db2 != 0) %>%
filter(rowSums(is.na(.) | . == 0, na.rm = TRUE) < 4)
#Inisialisasi variabel-variabel tahun 2022
db1_22 <- susenas_kor22$R1002
db2_22 <- susenas_kor22$R1003
jenis_kl22 <- susenas_kor22$R405
#Buat data frame dari variabel-variabel tersebut
db22 <- data.frame(db1_22, db2_22, jenis_kl22)
#Ubah value sesuai tujuan
db22 <- db22 %>%
mutate(
db1_22 = case_when(
db1_22 == 2 ~ 1,
db1_22 == 3 ~ 1,
TRUE ~ db1_22
),
db2_22 = case_when(
db2_22 == 5 ~ 1,
db2_22 == 6 ~ 1,
db2_22 == 7 ~ 1,
TRUE ~ db2_22
))
#Remove value yang bernilai 0 dan yang tidak digunakan
db22 <- db22 %>%
filter(db1_22 != 4 & db2_22 != 8 & db1_22 != 0 & db2_22 != 0) %>%
filter(rowSums(is.na(.) | . == 0, na.rm = TRUE) < 4)
#Menggabungkan dua data frame tahun 2022 dan 2023
combined_df <- bind_rows(
mutate(db22, year = 2022) %>%
rename(db1 = db1_22, db2 = db2_22, jenis_kl = jenis_kl22),
mutate(db, year = 2023)
)
#Count value dari variabel yang digunakan berdasarkan tahun dan jenis kelamin
stacked_db <- combined_df %>%
group_by(year, jenis_kl) %>%
summarise(jumlah = n())
datatable(stacked_db)
#Buat grouped bar chart dengan ggplot
ggplot(stacked_db, aes(x = factor(year), y = jumlah, fill = factor(jenis_kl))) +
geom_bar(stat = "identity", position = "dodge", width = 0.7, color = "black") +
geom_text(aes(label = jumlah), position = position_dodge(width = 0.7), vjust = -0.5, color = "black") +
labs(
title = "Jumlah Penyandang Keterbatasan Fungsional Berdasarkan Jenis Kelamin di Provinsi Jawa Barat 2023",
x = "Tahun",
y = "Jumlah",
fill = "Jenis Kelamin"
) +
scale_fill_manual(values = c("1" = "salmon2", "2" = "palegreen"), breaks = c("1", "2"), labels = c("Laki-laki", "Perempuan")) +
scale_x_discrete(labels = c("2022" = "2022", "2023" = "2023"))+
theme_minimal() +
theme(plot.title = element_text(hjust = .5, size = 10),
axis.title.y.left = element_text(margin = margin(r = 5)),
axis.title.x.bottom = element_text(margin = margin(t = 7), hjust = 0.5))
Badan Pusat Statistik (BPS) menyatakan dalam kuisioner SUSENAS bahwa
gangguan/keterbatasan fungsi dalam jangka waktu yang lama disebut
disabilitas. Grouped bar di atas memperlihatkan jumlah
penyandang disabilitas atau keterbatasan/gangguan penglihatan dan
pendengaran berdasarkan jenis kelamin pada tahun 2022 dan 2023 di
Provinsi Jawa Barat. Jumlah penyandang disabilitas, baik laki-laki
maupun perempuan mengalami penurunan dari tahun 2022 ke tahun 2023.
Visualisasi Sebaran
Histogram
#Pilih subset data dari dataset menjadi variabel baru
jam <- data.frame(susenas_kor$R708)
#Remove value yang bernilai 0 dan me-rename kolom
jam_hist <- jam %>%
filter(!is.na(susenas_kor.R708) & susenas_kor.R708 != 0) %>%
rename(lama_waktu = susenas_kor.R708)
datatable(jam_hist)
#Buat histogram dengan ggplot2
ggplot(jam_hist, aes(x = lama_waktu)) +
geom_histogram(binwidth = 5, fill = "darkorchid1", color = "black", alpha = 0.7) +
scale_x_continuous(breaks = seq(0, 100, by = 10)) +
labs(title = "Sebaran Jumlah Jam Kerja dari Pekerjaan Utama di Provinsi Jawa Barat 2023",
x = "Jam Kerja",
y = "Frekuensi") +
theme(plot.title = element_text(hjust = 0.5),
axis.title.y.left = element_text(margin = margin(r = 9)),
axis.title.x.bottom = element_text(margin = margin(t = 7), hjust = 0.5))
Histogram tersebut menyajikan sebaran jumlah jam kerja selama seminggu
terakhir dari pekerjaan utama masyarakat di Provinsi Jawa Barat tahun
2023. Frekuensi jumlah jam kerja terbanyak berada pada rentang sekitar
50 jam diikuti dengan 40 jam, 55 jam, 35 jam, dan seterusnya.
Berdasarkan Undang-undang Nomor 11 Tahun 2020 Tentang Cipta Kerja (UU
Cipta Kerja), skema jam kerja yang berlaku di perusahaan di Indonesia
adalah 40 jam dalam seminggu (tidak berlaku bagi perusahaan usaha
tertentu). Hal ini menandakan adanya kemungkinan mayoritas masyarakat di
Provinsi Jawa Barat mengalami overtime work atau banyak yang
bekerja di bidang perusahaan usaha tertentu yang tidak menetapkan jam
kerja pada umumnya.
Density Plot
#Read data
susenas_kp <- read.csv("C:/Users/ASUS/Downloads/2023 Maret JABAR - SUSENAS KP BP 4.1 (1).csv")
#Filter sesuai kebutuhan dan buat data frame variabel pertama
padi <- susenas_kp %>%
filter(KODE == 1)
padi <- data.frame(padi$KODE, padi$B41K10)
#Filter sesuai kebutuhan dan buat data frame dari variabel kedua
umbi <- susenas_kp %>%
filter(KODE == 8)
umbi <- data.frame(umbi$KODE, umbi$B41K10)
#Gabungkan kedua data frame secara baris dan rename variabel-variabel
density_ch <- bind_rows(
padi %>%
rename(kode = padi.KODE, pengeluaran = padi.B41K10),
umbi %>%
rename(kode = umbi.KODE, pengeluaran = umbi.B41K10)
)
datatable(density_ch)
#Buat density plot dengan ggplot
ggplot(density_ch) +
geom_density(aes(x = pengeluaran, fill = factor(kode)), alpha = 0.4) +
labs(title = "Sebaran Pengeluaran Makanan Pokok 2023",
x = "Nilai Pengeluaran Seminggu (Rupiah)",
y = "Density") +
scale_fill_manual(values = c("1" = "coral", "8" = "turquoise"),
name = "Jenis",
labels = c("1" = "Padi-padian", "8" = "Umbi-umbian")) +
xlim(0, 150000) +
facet_wrap(~kode, scales = "free_y", ncol = 1,
labeller = labeller(kode = c("1" = "Padi-padian", "8" = "Umbi-umbian"))) +
theme(plot.title = element_text(hjust = 0.5),
axis.title.y.left = element_text(margin = margin(r = 9)),
axis.title.x.bottom = element_text(margin = margin(t = 7), hjust = 0.5))
Density plot tersebut membandingkan nilai pengeluaran (Rupiah)
padi-padian dan umbi-umbian selama seminggu dalam satu rumah tangga
sebagai konsumsi dan bahan makanan. Nilai pengeluaran ini berdasarkan
masyarakat di Provinsi Jawa Barat tahun 2023.Pengeluaran mingguan yang
paling umum untuk jenis padi-padian adalah sekitar Rp25.000 hingga
Rp60.000. Sementara itu, pengeluaran mingguan yang paling umum untuk
jenis umbi-umbian berada pada sekitar Rp0 hingga Rp25.000.
Visualisasi Komposisi
Pie Chart
#Read data
data_susenas <- read.csv("D:/Shabrina/University/Semester 4/Visualisasi Data/Tugas Praktikum/Kegiatan Seminggu Terakhir 2023.csv", sep=";")
#Inisialisasi variabel-variabel
kegiatan <- data_susenas$Kegiatan
keterangan <- data_susenas$Keterangan
#Buat data frame dari gabungan variabel-variabel secara kolom
data <- data.frame(cbind(kegiatan, keterangan))
datatable(data)
#Menghitung frekuensi value dari variabel
frekuensi_kegiatan <- data.frame(table(kegiatan))
#Membuat pie chart dengan ggplot
ggplot(frekuensi_kegiatan, aes(x = "", y = Freq, fill = kegiatan)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y", start = 0) +
scale_fill_manual(values = c("1" = "#E0B0FF", "2" = "#FFDAB9", "3" = "#98FB98", "4" = "#87CEEB"),
name = "Jenis Kegiatan",
labels = c("Bekerja", "Sekolah", "Mengurus Rumah Tangga", "Lainnya")) +
theme_void() +
theme(legend.position = "right") +
labs(title = "Komposisi Kegiatan Seminggu Terakhir 2023", fill = "Jenis Kegiatan") +
geom_text(aes(label = Freq), position = position_stack(vjust = 0.5)) +
theme(plot.title = element_text(hjust = 0.5))
Pie chart tersebut memperlihatkan komposisi kegiatan seminggu terakhir
yang menggunakan waktu terbanyak pada tahun 2023 di Provinsi Jawa Barat.
Kegiatan yang menghabiskan waktu paling banyak adalah bekerja dengan
30218 orang, lainnya dengan 5546 orang, 1891 orang bersekolah, dan
mengurus rumah tangga dengan 782.
Tree Map
#Read data
data_treemap <- read_xlsx("D:/Shabrina/University/Semester 4/Visualisasi Data/Tugas Praktikum/Kepemilikan Mobil 2023.xlsx")
#Inisialisasi variabel
R102 <- data_treemap$R102
KabKota <- data_treemap$`Kab/Kota`
#Agregasi data dan filtering data berdasarkan kabupaten/kota
agg_data <- aggregate(R102 ~ KabKota, data=data_treemap, sum)
agg_data2 <- data_treemap %>%
group_by(`Kab/Kota`) %>%
summarise(kepemilikan = sum(R102))
#Menghitung persentase setiap kabupaten/kota
agg_data2 <- mutate(agg_data2, persentase = round(kepemilikan / sum(kepemilikan) * 100), 3)
datatable(agg_data2)
#Buat tree map plot dengan ggplot
ggplot(agg_data2, aes(area = persentase, fill = persentase, label = `Kab/Kota`)) +
geom_treemap() +
geom_treemap_text() +
scale_fill_gradientn(colors = c("orchid4", "turquoise2", "rosybrown1")) +
theme_minimal() +
labs(fill = "Persentase") +
ggtitle("Komposisi Kepemilikan Mobil Berdasarkan Kabupaten/Kota di Provinsi Jawa Barat 2023")
Tree map di atas mencerminkan komposisi persentase kepemilikan
mobil berdasarkan kabupaten/kota di Provinsi Jawa Barat tahun 2023.
Kabupaten/kota dengan persentase kepemilikan mobil terbesar yang dapat
dilihat dari besarnya ukuran kotak dan warna skala dalam tree
map adalah Bekasi sekitar 23%, diikuti oleh Depok sekitar 13%, dan
Bandung sekitar 11%.