library(tidyverse) 
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ 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)
library(GGally) 
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
library(plotly) 
## 
## 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)
data.p <- read_xlsx("C:/semester 4/visdat/data tugas prak visdat.xlsx")
## New names:
## • `` -> `...3`
## • `` -> `...6`
## • `` -> `...8`
data.p
## # A tibble: 84,688 × 9
##    `Pendidikan Terakhir` `Pendidikan Prasekolah`   ...3   Umur `Jam kerja` ...6 
##    <chr>                 <chr>                     <lgl> <dbl>       <dbl> <lgl>
##  1 SD                    Tidak Mengikut Pendidika… NA       68           0 NA   
##  2 D3                    Tidak Mengikut Pendidika… NA       46           0 NA   
##  3 SMK                   Tidak Mengikut Pendidika… NA       16           0 NA   
##  4 SD                    Taman Kanak-kanak         NA        6           0 NA   
##  5 SD                    Tidak Mengikut Pendidika… NA       62           0 NA   
##  6 SD                    Tidak Mengikut Pendidika… NA       38          48 NA   
##  7 SMA                   Tidak Mengikut Pendidika… NA       54          50 NA   
##  8 SMP                   Tidak Mengikut Pendidika… NA       41           0 NA   
##  9 SD                    Tidak Mengikut Pendidika… NA       10           0 NA   
## 10 SMP                   Tidak Mengikut Pendidika… NA       40          48 NA   
## # ℹ 84,678 more rows
## # ℹ 3 more variables: `Status pekerjaan` <chr>, ...8 <lgl>,
## #   `Penerima PIP` <chr>

Visualisasi Besaran

data.p %>%
  count(`Pendidikan Terakhir`) %>%
  arrange(desc(n)) %>%
  ggplot() +
  geom_segment(aes(x = fct_reorder(as.factor(`Pendidikan Terakhir`), n), xend = fct_reorder(as.factor(`Pendidikan Terakhir`), n), y = 0, yend = n), color = "lightpink") +
  geom_point(aes(x = fct_reorder(as.factor(`Pendidikan Terakhir`), n), y = n), color = "lightgreen", size = 2) +
  scale_y_continuous(expand = c(0, 0)) +
  coord_flip() +
  ggtitle("Pendidikan Terakhir") +
  xlab("") +
  ylab("Frekuensi") +
  theme_light() +
  theme(plot.title = element_text(hjust = 0.5))

Pendidikan terakhir dari responden divisualisasikan menggunakan Lollipop Chart. Dari chart tersebut dapat dilihat paling banyak responden memiliki pendidikan terakhir SD. Disusul oleh SMA dan SMP dimana jumlahnya hampir sama disekitar 10,000-15,000. Hampir 10,000 responden tidakbersekolah. Paling sedikit reaponden memiliki pendidikan terakhir SPM/PDF Wustha

Dari responden yang memiliki pendidiakan prasekolah, paling banyak mengikuti taman kanak-kanak dengan jumlah lebih dari 3,000 responden. Paling sedikit yaitu Taman Penitipan Anak, jumlahnya tidak sampa 1,000, berbeda jauh dengan taman kanak-kanak

Visualisasi Sebaran

ggplot(data.p)+
  geom_density(aes(x=Umur,fill= "umur" ),color="lightpink", alpha=0.4)+
  labs(title="Density Plot Sebaran Umur")+
  xlab("Umur")+
  ylab("density")+
  xlim(0,100)

Sebaran uumur dari responden menunjukkan distribusi bimodal atau memiliki 2 puncak yang menunjukkan modus. Pertama ada di sekitar 0-13 tahun. Kedua sekitar 38-50 tahun. Responden paling sedkit memiliki umur antara 75-100.

data.p2 <- data.p %>%
  filter(`Jam kerja` > 0)

ggplot(data.p2) +
  geom_boxplot(aes(y=`Jam kerja`)) +
  labs(title="Boxplot Sebaran Jam Kerja")

Boxplot bagi responden yang sudah bekerja jam kerja menunjukkan distribusi data Condong ke atas artinya, sebagian besar data terkonsentrasi di bagian bawah nilai-nilai yang lebih rendah ini juga disebabkan oleh terdapat beberapa outlier atas. Berarti kebanyakan responden bekerja untuk waktu yang lama

Visualisasi Komposisi

library(treemap)

treemap(data.p, 
        index=c("Status pekerjaan"), 
        vSize="Umur",
        draw=TRUE,
        title="Treemap: Status Pekerjaan",
        fontsize.title=20,
        fontsize.labels=12,
        fontcolor.labels="black",
        palette = blues9)

Treemap tersebut menunjukkan paling banyak responden yang belum bekerja, kedua terbanyak yaitu yang bekerja sebagai buruh/karyawan/pegawai. Dan paling sedikit reponden yang memiliki status pekerjaan Berusaha dibantu tetap

library(ggplot2)

# Hitung frekuensi
data_count <- count(data.p, `Penerima PIP`)

ggplot(data_count, aes(x = "", y = n , fill = `Penerima PIP`)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  scale_fill_brewer(palette = "Blues") +
  theme_void() +
  theme(legend.position = "right") +
  labs(title = "Komposisi Penerima PIP", fill = "Kamar Tidur") +
  geom_text(aes(label = n), position = position_stack(vjust = 0.5))

Pie chart tersebut menunjukkan komposisi penerima PIP (Program Indonesia Pintar). Paling banyak yaitu responden yang tidak menjawab sebanyak 53,620. Keuda, tidak menerima PIP sebanyak 26,997, terakhir penerima PIP sebanyak 3.091 oarang