Tugas Praktikum Visdat-P1
Installation
## Warning: package 'tidyverse' was built under R version 4.3.2
## Warning: package 'ggplot2' was built under R version 4.3.2
## Warning: package 'lubridate' was built under R version 4.3.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.3 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.5.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Warning: package 'ggridges' was built under R version 4.3.2
## Warning: package 'ggmosaic' was built under R version 4.3.2
## Warning: package 'GGally' was built under R version 4.3.2
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
##
## Attaching package: 'GGally'
##
## The following object is masked from 'package:ggmosaic':
##
## happy
## Warning: package 'plotly' was built under R version 4.3.2
##
## Attaching package: 'plotly'
##
## The following object is masked from 'package:ggplot2':
##
## last_plot
##
## The following object is masked from 'package:stats':
##
## filter
##
## The following object is masked from 'package:graphics':
##
## layout
## Warning: package 'readxl' was built under R version 4.3.2
## Warning: package 'treemap' was built under R version 4.3.2
## Warning: package 'treemapify' was built under R version 4.3.2
The Data
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...7`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...17`
## • `` -> `...19`
## • `` -> `...21`
## • `` -> `...22`
## • `` -> `...24`
## • `` -> `...25`
## • `` -> `...30`
## • `` -> `...31`
## • `` -> `...34`
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
Visualisasi Besaran Data
Bar Chart
data_ghoni_2 %>%
count(R1803) %>%
slice_max(n = 10, order_by = n) %>%
ggplot() +
geom_col(aes(x = fct_reorder(as.factor(R1803), n), y = n), fill = "lightblue", width = 0.7) +
geom_text(aes(x = fct_reorder(as.factor(R1803), n), y = n, label = n),
position = position_stack(vjust = 0.5), color = "black", size = 3) +
scale_y_continuous(expand = c(0, 0)) +
ggtitle("Jenis Bukti Kepemilikan Tempat Tinggal") +
xlab("Jenis Bukti") +
ylab("") +
theme_classic() +
theme(plot.title = element_text(hjust = 0.5, size = 15)) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Pada bar chart diatas menunjukkan Banyaknya Jenis Bukti Kepemilikan
Tanah Bangunan Tempat tinggal, Dimana mayoritas jenis bukti nya adalah
SHM_ART atau Sertifikat Hak Milik atas nama ART dengan jumlah sebanyak
11266, sementara untuk jenis bukti tersedikit yaitu SHGB/SHSRS.
Lollipop Chart
data_ghoni %>%
count(R707) %>%
arrange(desc(n)) %>%
ggplot() +
geom_segment(aes(x = fct_reorder(as.factor(R707), n), xend = fct_reorder(as.factor(R707), n), y = 0, yend = n), color = "lightblue",size=1) +
geom_point(aes(x = fct_reorder(as.factor(R707), n), y = n), color = "blue", size = 2) +
geom_text(aes(x = fct_reorder(as.factor(R707), n), y = n, label = n),
position = position_stack(vjust = 0.5), color = "black", size = 2.5) +
scale_y_continuous(expand = c(0, 0)) +
coord_flip() +
ggtitle("Status/Kedudukan Pekerjaan (1 Minggu Terakhir") +
xlab("Kode Status Pekerjaan") +
ylab("jumlah penduduk") +
theme_light() +
theme(plot.title = element_text(hjust = 0.5))
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Pada lollipop chart diatas menunjukkan Status Pekerjaan (dalam 1 minggu terakhir), dimana mayoritas memilih tidak mengisi dengan jumlah mencapai 35596 penduduk. Selanjutnya, terdapat 12519 penduduk yang memiliki pekerjaan utama yaitu sebagai buruh/karyawan/pegawai.
Stacked Bar Chart
data_stacked <- data_ghoni %>%
filter(R808 %in% c("Internet", "Non_Internet")) %>%
filter(R105 %in% c("Kota", "Desa"))
ggplot(data_stacked, aes(x = as.factor(R105), y = Jumlah, fill = as.factor(R808))) +
geom_bar(stat = "identity") +
labs(fill = "Status") +
ggtitle("Rata-rata Penggunaan Internet Pada Kota dan Desa") +
xlab("Klasifikasi") +
ylab("Rata Rata") +
scale_fill_manual(values = c("Non_Internet" = "lightblue", "Internet" = "darkblue")) +
theme_minimal()
Pada stacked bar chart diatas menunjukkanRata-rata Penggunaan Internet Pada Kota dan Desa, dimana mayoritas memilih menggunakan internet baik mau didesa maupun dikota.
Visualisasi Sebaran Data
Histogram
ggplot(data_ghoni)+
geom_histogram(aes(x= R1804),fill="lightblue", color="blue", alpha=1)+
labs(title="Sebaran Luas Lantai Rumah Tinggal")+
xlab("Luas Lantai")+
ylab("Frekuesi")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 39645 rows containing non-finite outside the scale range
## (`stat_bin()`).
## <ScaleContinuousPosition>
## Range:
## Limits: -10 -- -1
Berdasarkan histogram diatas , luas rumah paling umum terdapat pada interval 0 sampai 250. Persebaran yang dimiliki histogram adalah cenderung menjulur ke kanan.
Density Plot
ggplot(data_ghoni)+
geom_density(aes(x=R1501B,fill= "Umur Hamil Pertama" ),color="black", alpha=0.4)+
geom_density(aes(x=R1502B,fill="Umur Melahirkan Pertama"), color="black", alpha=0.4)+
labs(title="Density Plot Perbandingan")+
xlab("Umur")+
ylab("Jumlah")+
xlim(10,50)+
scale_fill_manual(values = c("Umur Hamil Pertama" = "blue", "Umur Melahirkan Pertama" = "lightblue"))
## Warning: Removed 51641 rows containing non-finite outside the scale range
## (`stat_density()`).
## Warning: Removed 51758 rows containing non-finite outside the scale range
## (`stat_density()`).
Berdasarkan perbandingan density plot diatas, dapat disimpulkan bahwa
penduduk di Jawa Barat cenderung menikah terlebih dahulu sebelum
mengalami kelahiran anak pertama. Fakta ini dapat dilihat dari
distribusi yang menunjukkan tingkat kepadatan pada rentang usia yang
lebih muda untuk pernikahan pertama, dibandingkan dengan usia kelahiran
anak pertama. Selain itu, terdapat kemiripan distribusi antara usia
pernikahan pertama dan kelahiran anak pertama, di mana puncak kepadatan
terjadi pada usia sekitar 20 tahun.
Violin Plot & Box Plot
ggplot(data_ghoni, aes(x = "", y = R2208BI2)) +
geom_violin(fill = "lightblue", alpha = 0.5) +
geom_boxplot(width = 0.1, color = "darkblue", fill = "white", outlier.shape = NA) +
labs(title = "Violin Plot dan Boxplot: Distribusi Nilai Bantuan (Februari 2023)",
x = NULL,
y = "Nominal") +
coord_flip() +
theme_minimal()
## Warning: Removed 64871 rows containing non-finite outside the scale range
## (`stat_ydensity()`).
## Warning: Removed 64871 rows containing non-finite outside the scale range
## (`stat_boxplot()`).
Berdasarkan Violin Plot diatas ,nominal pemberian bantuan umum terdapat pada interval 0 sampai 250rb. Persebaran yang dimiliki histogram adalah cenderung menjulur ke kanan. Namun, perbedaan antara nilai median dan bagian yang paling lebar dalam distribusi ini kemungkinan dapat disebabkan oleh adanya pencilan (outliers) dalam data.
Visualisasi Komposisi
Pie Chart
data_pie <- data_ghoni %>%
mutate(R901 = ifelse(R901 == 1, "Ya", "Tidak")) %>%
count(R901) %>%
mutate(percentage = prop.table(n) * 100)
ggplot(data_pie, aes(x = "", y = percentage , fill = R901)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y", start = 0) +
scale_fill_manual(values = c("#4F98C4", "#C4D8F3")) +
theme_void() +
theme(legend.position = "right") +
labs(title = "Komposisi Bepergian", fill = "Keterangan") +
geom_text(aes(label = paste0(round(percentage), "%")), position = position_stack(vjust=0.5))
Grafik menunjukan komposisi warga Jawa Barat yang bepergian keluar
daerah. Dimana mayoritas warga memilih untuk tidak bepergian keluar
daerah mendominasi sebesar 42% dari data yang diambil.
Donut chart
data <- data.frame(
category=c("Memiliki", "Tidak Memiliki", "Tidak Tahu"),
count=c(41847, 23270, 4180),
colors = c('#72BCDC', '#3F8BBA', '#26456E')
)
data$fraction = data$count / sum(data$count)
data$ymax = cumsum(data$fraction)
data$ymin = c(0, head(data$ymax, n=-1))
ggplot(data, aes(ymax=ymax, ymin=ymin, xmax=4, xmin=3, fill=category)) +
geom_rect() +
scale_fill_manual(values = data$colors) +
scale_color_manual(values = data$colors) +
labs(title = "Kepemilikian Akta Kelahiran", fill = "Keterangan") +
coord_polar(theta="y") +
xlim(c(2, 4))
Grafik menunjukan status kepemilikan akta kelahiran yang didapatkan dari
kantor catatan sipil dimana, mayoritas warga Jawa Barat memiliki akta
lahir mereka.
Treemap
pendidikan <- treemap(data_ghoni,
index=c("R102", "R612", "R407"),
vSize="R709",
draw=TRUE,
title="Umur, Jam Kerja, dan Pendidikan Terakhir",
fontsize.title=20,
fontsize.labels=12,
fontcolor.labels="white")
Berdasarkan treemap tersebut, dapat disimpulkan bahwa Jam Kerja terbanyak dimiliki oleh masyarakat Kabupaten Purwakarta yang memiliki usia 49 tahun dan pendidikan terakhir yaitu SD. Selanjutnya, dari data-data yang lain, dapat disusun informasi serupa untuk setiap kategori pendidikan dan usia, sehingga dapat memperoleh pemahaman yang lebih lengkap mengenai distribusi lamanya jam kerja di masyarakat Kabupaten Purwakarta.