Tugas Praktikum Visdat-P1

Installation

library(tidyverse)
## 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
library(ggridges)
## Warning: package 'ggridges' was built under R version 4.3.2
library(ggmosaic)
## Warning: package 'ggmosaic' was built under R version 4.3.2
library(GGally) 
## 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
library(plotly) 
## 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
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.2
library(treemap)
## Warning: package 'treemap' was built under R version 4.3.2
library(treemapify)
## Warning: package 'treemapify' was built under R version 4.3.2

The Data

data_ghoni <- read_excel("C:/Users/Ghonniyu/Downloads/Data_Ghonniyu.xlsx")
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...7`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...17`
## • `` -> `...19`
## • `` -> `...21`
## • `` -> `...22`
## • `` -> `...24`
## • `` -> `...25`
## • `` -> `...30`
## • `` -> `...31`
## • `` -> `...34`
data_ghoni_2 <- read_excel("C:/Users/Ghonniyu/Downloads/Data_Ghonniyu_2.xlsx")
## 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()`).

  xlim(10,1)
## <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.