library(dplyr)
##
## 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
library(tidyverse) #Include beberapa packages termasuk ggplot
## Warning: package 'tidyverse' was built under R version 4.3.2
## Warning: package 'ggplot2' was built under R version 4.3.2
## Warning: package 'readr' was built under R version 4.3.2
## Warning: package 'forcats' 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 ──
## ✔ forcats 1.0.0 ✔ readr 2.1.5
## ✔ ggplot2 3.4.4 ✔ stringr 1.5.0
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.0
## ── 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(ggmosaic)
## Warning: package 'ggmosaic' 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
library(ggridges)
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
Datavisdat<-read_xlsx("D:/Semester 4/Visualisasi Data/Praktikum.xlsx")
str(Datavisdat)
## tibble [84,689 × 9] (S3: tbl_df/tbl/data.frame)
## $ Kabupaten : num [1:84689] 7 7 7 7 72 72 6 6 6 72 ...
## $ Kota/Desa : num [1:84689] 2 2 2 2 1 1 2 2 2 1 ...
## $ Umur : num [1:84689] 68 46 16 6 62 38 54 41 10 40 ...
## $ Jenis_Kelamin : num [1:84689] 2 2 2 1 2 1 1 2 2 1 ...
## $ Kegiatan_Waktu_Terbanyak : num [1:84689] 3 3 3 0 3 1 1 3 2 1 ...
## $ Status_Kedudukan_Pekerjaan : num [1:84689] 0 0 0 0 0 5 1 0 0 4 ...
## $ Jumlah_jamkerja_Utama : num [1:84689] 0 0 0 0 0 48 50 0 0 48 ...
## $ Jumlah_Jamkerja_keseluruhan: num [1:84689] 0 0 0 0 0 48 50 0 0 97 ...
## $ Menggunakan_teleponseluler : num [1:84689] 5 1 1 5 1 1 1 1 1 1 ...
DataKegiatan <- data.frame(kode = c(1,2,3,4), Kegiatan = c("Bekerja", "Sekolah", "Mengurus Rumah Tangga", "Lainnya selain kegiatan Pribadi"))
DataVisdat2 <- left_join(Datavisdat, DataKegiatan, by = c("Kegiatan_Waktu_Terbanyak"= "kode"))
str(DataVisdat2)
## tibble [84,689 × 10] (S3: tbl_df/tbl/data.frame)
## $ Kabupaten : num [1:84689] 7 7 7 7 72 72 6 6 6 72 ...
## $ Kota/Desa : num [1:84689] 2 2 2 2 1 1 2 2 2 1 ...
## $ Umur : num [1:84689] 68 46 16 6 62 38 54 41 10 40 ...
## $ Jenis_Kelamin : num [1:84689] 2 2 2 1 2 1 1 2 2 1 ...
## $ Kegiatan_Waktu_Terbanyak : num [1:84689] 3 3 3 0 3 1 1 3 2 1 ...
## $ Status_Kedudukan_Pekerjaan : num [1:84689] 0 0 0 0 0 5 1 0 0 4 ...
## $ Jumlah_jamkerja_Utama : num [1:84689] 0 0 0 0 0 48 50 0 0 48 ...
## $ Jumlah_Jamkerja_keseluruhan: num [1:84689] 0 0 0 0 0 48 50 0 0 97 ...
## $ Menggunakan_teleponseluler : num [1:84689] 5 1 1 5 1 1 1 1 1 1 ...
## $ Kegiatan : chr [1:84689] "Mengurus Rumah Tangga" "Mengurus Rumah Tangga" "Mengurus Rumah Tangga" NA ...
StatuKedudukan <- data.frame(kode_kedudukan = c(1,2,3,4,5,6), Kedudukan = c("Berusaha Sendiri", "Berusaha dibantu buruh tidak tetap/buruh tidak dibayar", "Berusaha dibantu buruh tetap/Buruh dibayar", "Buruh/Karyawan/pegawai", "Pekerja bebas", "Pekerja keluarga atau tidak dibayar"))
Kedudukan <- left_join(DataVisdat2, StatuKedudukan, by = c("Status_Kedudukan_Pekerjaan"= "kode_kedudukan"))
str(Kedudukan)
## tibble [84,689 × 11] (S3: tbl_df/tbl/data.frame)
## $ Kabupaten : num [1:84689] 7 7 7 7 72 72 6 6 6 72 ...
## $ Kota/Desa : num [1:84689] 2 2 2 2 1 1 2 2 2 1 ...
## $ Umur : num [1:84689] 68 46 16 6 62 38 54 41 10 40 ...
## $ Jenis_Kelamin : num [1:84689] 2 2 2 1 2 1 1 2 2 1 ...
## $ Kegiatan_Waktu_Terbanyak : num [1:84689] 3 3 3 0 3 1 1 3 2 1 ...
## $ Status_Kedudukan_Pekerjaan : num [1:84689] 0 0 0 0 0 5 1 0 0 4 ...
## $ Jumlah_jamkerja_Utama : num [1:84689] 0 0 0 0 0 48 50 0 0 48 ...
## $ Jumlah_Jamkerja_keseluruhan: num [1:84689] 0 0 0 0 0 48 50 0 0 97 ...
## $ Menggunakan_teleponseluler : num [1:84689] 5 1 1 5 1 1 1 1 1 1 ...
## $ Kegiatan : chr [1:84689] "Mengurus Rumah Tangga" "Mengurus Rumah Tangga" "Mengurus Rumah Tangga" NA ...
## $ Kedudukan : chr [1:84689] NA NA NA NA ...
DataVisdat3 <- Kedudukan
str(DataVisdat3)
## tibble [84,689 × 11] (S3: tbl_df/tbl/data.frame)
## $ Kabupaten : num [1:84689] 7 7 7 7 72 72 6 6 6 72 ...
## $ Kota/Desa : num [1:84689] 2 2 2 2 1 1 2 2 2 1 ...
## $ Umur : num [1:84689] 68 46 16 6 62 38 54 41 10 40 ...
## $ Jenis_Kelamin : num [1:84689] 2 2 2 1 2 1 1 2 2 1 ...
## $ Kegiatan_Waktu_Terbanyak : num [1:84689] 3 3 3 0 3 1 1 3 2 1 ...
## $ Status_Kedudukan_Pekerjaan : num [1:84689] 0 0 0 0 0 5 1 0 0 4 ...
## $ Jumlah_jamkerja_Utama : num [1:84689] 0 0 0 0 0 48 50 0 0 48 ...
## $ Jumlah_Jamkerja_keseluruhan: num [1:84689] 0 0 0 0 0 48 50 0 0 97 ...
## $ Menggunakan_teleponseluler : num [1:84689] 5 1 1 5 1 1 1 1 1 1 ...
## $ Kegiatan : chr [1:84689] "Mengurus Rumah Tangga" "Mengurus Rumah Tangga" "Mengurus Rumah Tangga" NA ...
## $ Kedudukan : chr [1:84689] NA NA NA NA ...
DataVisdat3 %>%
count(Kegiatan) %>%
ggplot()+
geom_col(aes(x=fct_reorder(as.factor(Kegiatan),n),y=n), fill="skyblue",
width=0.4) +
geom_text(aes(x = fct_reorder(as.factor(Kegiatan), n), y = n, label = n),
position = position_stack(vjust = 0.5), color = "black", size = 3) +
scale_y_continuous(expand = c(0,0))+
coord_flip() +
ggtitle("Banyaknya Jenis Kegiatan") +
xlab("") +
ylab("Jumlah") +
theme_classic() +
theme(plot.title = element_text(hjust = .5, size = 10))
Berdasarkan Grafik tersebut, dapat dilihat bahwa jenis kegiatan yang menggunakan waktu paling banyak adalah bekerja, lalu di posisi kedua adalah Mengurus Rumah Tangga, kegita Sekolah, dan di posisi terakhir Kegiatan lain selain kegiatan pribadi. Selain itu dapat terlihat juga pada grafik bahwa banyak data yang NA hal ini mungkin disebabkan karena responden yang mengisi survei tidak menjawab pertanyaan sesuai dengan pilihan yang ada di survei misalnya ada responden yang menjawab 0(dimana 0 ini tidak memiliki arti pada kuisioner), sementara pilihan jawabann yang ada yaitu pilihan angka 1 sampai 6.
DataVisdat3 %>%
count(Kedudukan) %>%
arrange(desc(n)) %>% # gunakan arrange(n) untuk mengurutkan sebaliknya
ggplot() +
geom_segment(aes(x = fct_reorder(as.factor(Kedudukan), n), xend = fct_reorder(as.factor(Kedudukan), n), y = 0, yend = n), color = "darkblue") +
geom_point(aes(x = fct_reorder(as.factor(Kedudukan), n), y = n), color = "red", size = 2) +
scale_y_continuous(expand = c(0, 0)) +
coord_flip() +
ggtitle("Banyaknya Status Kedudukan Pekerja") +
xlab("") +
ylab("Jumlah") +
theme_light() +
theme(plot.title = element_text(hjust = 0.5))
Berdasarkan Grafik tersebut, dapat dilihat bahwa Kedudukan yang menggunakan paling banyak adalah Buruh/Karyawan/pegawai, posisi kedua Berusaha Sendiri,posisi ketiga Pekerja Bebas, posisi Keempat Buruh Tidak Dibayar, Posisi Kelima Pekerja keluarga, dan posisi terakhir Buruh Dibayar. Selain itu dapat terlihat juga pada grafik bahwa banyak data yang NA hal ini mungkin disebabkan karena responden yang mengisi survei tidak menjawab pertanyaan sesuai dengan pilihan yang ada di survei misalnya ada responden yang menjawab 0, sementara pilihan jawabann yang ada yaitu pilihan angka 1 sampai 6.
data_bekerja <- subset(DataVisdat3, Kegiatan == "Bekerja")
data_bekerja
## # A tibble: 35,135 × 11
## Kabupaten `Kota/Desa` Umur Jenis_Kelamin Kegiatan_Waktu_Terbanyak
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 72 1 38 1 1
## 2 6 2 54 1 1
## 3 72 1 40 1 1
## 4 11 2 69 1 1
## 5 11 2 42 2 1
## 6 10 2 67 1 1
## 7 1 1 39 1 1
## 8 2 1 68 2 1
## 9 2 1 45 1 1
## 10 16 1 32 1 1
## # ℹ 35,125 more rows
## # ℹ 6 more variables: Status_Kedudukan_Pekerjaan <dbl>,
## # Jumlah_jamkerja_Utama <dbl>, Jumlah_Jamkerja_keseluruhan <dbl>,
## # Menggunakan_teleponseluler <dbl>, Kegiatan <chr>, Kedudukan <chr>
Pie_chart <- data.frame(
Jenis_Kelamin = c("Laki-laki", "Perempuan"),
count = table(cut(data_bekerja$Jenis_Kelamin, breaks=c(-Inf,1,2), labels=c("Laki-laki", "Perempuan")))
)
Pie_chart
## Jenis_Kelamin count.Var1 count.Freq
## 1 Laki-laki Laki-laki 24323
## 2 Perempuan Perempuan 10812
ggplot(Pie_chart, aes(x = "", y = count.Freq , fill = Jenis_Kelamin )) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y", start = 0) +
scale_fill_brewer("Blues")+
theme_void() +
theme(legend.position = "right") +
labs(title = "Komposisi Jenis Kelamin", fill = "Laki2/Perempuan") +
geom_text(aes(label = count.Freq), position = position_stack(vjust = 0.5))
Dari diagram Pie Chart tersebut, dapat dilihat bahwa Jumlah laki laki yang bekerja sebanyak 24.323 dan perempuan sebanyak 10.812 orang.
treemap(DataVisdat3,
index=c("Jumlah_jamkerja_Utama", "Kota/Desa"),
vSize="Jumlah_jamkerja_Utama",
draw=TRUE,
title="Treemap: Waktu kerja utama dan daerahnya ",
fontsize.title=20,
fontsize.labels=12,
fontcolor.labels="black", palette = "Blues")
Berdasarkan tree map diatas, dapat dilihat bahwa daerah perkotaan memiliki proporsi yang lebih besar dibandingkan daerah perdesaan pada sebagian besar kategori jumlah jam kerja utama. Namun terdapat juga beberapa kategori jam kerja utama yang memiliki komposisi hampir sama antara daerah perdesaan dan perkotaan seperti pada kategori 30 jam dan 36 jam. Dari tree map itu juga kita dapat mengetahui bahwa kategori 48 jam memiliki komposisi paling banyak diantara komposisi kategori jam kerja lainnya.
DataVisdat4 <- na.omit(DataVisdat3)
str(DataVisdat4)
## tibble [38,782 × 11] (S3: tbl_df/tbl/data.frame)
## $ Kabupaten : num [1:38782] 72 6 72 77 11 11 10 1 2 2 ...
## $ Kota/Desa : num [1:38782] 1 2 1 1 2 2 2 1 1 1 ...
## $ Umur : num [1:38782] 38 54 40 52 69 42 67 39 68 45 ...
## $ Jenis_Kelamin : num [1:38782] 1 1 1 2 1 2 1 1 2 1 ...
## $ Kegiatan_Waktu_Terbanyak : num [1:38782] 1 1 1 3 1 1 1 1 1 1 ...
## $ Status_Kedudukan_Pekerjaan : num [1:38782] 5 1 4 2 6 2 1 5 1 1 ...
## $ Jumlah_jamkerja_Utama : num [1:38782] 48 50 48 35 14 70 56 56 36 60 ...
## $ Jumlah_Jamkerja_keseluruhan: num [1:38782] 48 50 97 35 18 72 56 58 36 60 ...
## $ Menggunakan_teleponseluler : num [1:38782] 1 1 1 1 1 1 5 1 5 1 ...
## $ Kegiatan : chr [1:38782] "Bekerja" "Bekerja" "Bekerja" "Mengurus Rumah Tangga" ...
## $ Kedudukan : chr [1:38782] "Pekerja bebas" "Berusaha Sendiri" "Buruh/Karyawan/pegawai" "Berusaha dibantu buruh tidak tetap/buruh tidak dibayar" ...
## - attr(*, "na.action")= 'omit' Named int [1:45907] 1 2 3 4 5 8 9 11 12 13 ...
## ..- attr(*, "names")= chr [1:45907] "1" "2" "3" "4" ...
nrow(DataVisdat4)
## [1] 38782
ggplot(DataVisdat4)+
geom_histogram(aes(x=Jumlah_jamkerja_Utama),fill="#1E90FF", color="#e9ecef", alpha=0.8)+
labs(title="Histogram Sebaran Waktu pada Pekerjaan Utama")+
xlab("Waktu")+
ylab("Jumlah")+
xlim(0,100)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 2 rows containing missing values (`geom_bar()`).
ggplot(DataVisdat4)+
geom_density(aes(x=Jumlah_jamkerja_Utama, fill = "Waktu"), color = "#e9ecef", alpha = 0.4)+
labs(title="Density Plot Sebaran Waktu pada Pekerjaan Utama")+
xlab("Waktu")+
ylab("Jumlah")+
xlim(0,100) +
scale_fill_manual(values = c("blue"))
Berdasarkan Histogram diastas, dapat dilihat bahwa modus dari data tersebut berada diantara selang (25-100) dengan frekuensi tertinggi nya sekitar nilai waktu 40-50 jam an. Di Histogram itu juga terlihat ada 2 pencilan di bagian sebelah kanannya. Selain itu sebaran dari nilai waktu pada Pekerjaan Utama yaitu menjulur kekanan (meskipun dalam histogram ini tidak terlihat jelas) karena dapat dilihat bahwa sebaran data di sebelah kiri puncaknya lebih besar dibandingkan sebelah kanannya. Sebaran dari nilai waktu Pekerjaan Utama ini terlihat lebih jelas menjulur ke kanan saat divisualisasi kan dengan menggunakan density plot seperti grafik diatas. Dengan demikian, sebaran yang menjulur kekanan ini dapat diinterpretasikan bahwa total waktu pada pekerjaan utama lebih banyak menyebar di waktu yang lebih kecil dari 50 jam.
ggplot(DataVisdat4)+
geom_histogram(aes(x=Jumlah_Jamkerja_keseluruhan),fill="#1E90FF", color="#e9ecef", alpha=0.8)+
labs(title="Histogram Sebaran Waktu pada Total Pekerjaan")+
xlab("Waktu")+
ylab("Jumlah")+
xlim(0,100)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 2 rows containing missing values (`geom_bar()`).
ggplot(DataVisdat4)+
geom_density(aes(x=Jumlah_Jamkerja_keseluruhan, fill = "Waktu"), color = "#e9ecef", alpha = 0.4)+
labs(title="Density Plot Sebaran Waktu pada Pekerjaan Utama")+
xlab("Waktu")+
ylab("Jumlah")+
xlim(0,100) +
scale_fill_manual(values = c("blue"))
Berdasarkan Histogram diastas, dapat dilihat bahwa modus dari data tersebut berada diantara selang (25-50) dengan frekuensi tertinggi nya sekitar nilai waktu 40-50 jam an. Di Histogram itu juga terlihat ada 2 pencilan di bagian sebelah kanannya. Selain itu sebaran dari nilai waktu pada total pekerjaan yaitu menjulur kekanan (meskipun dalam histogram ini tidak terlihat jelas) karena dapat dilihat bahwa sebaran data di sebelah kiri puncaknya lebih besar dibandingkan sebelah kanannya. Sebaran dari nilai waktu total pekerjaan ini terlihat lebih jelas menjulur ke kanan saat divisualisasi kan dengan menggunakan density plot seperti grafik diatas. Dengan demikian, sebaran yang menjulur kekanan ini dapat diinterpretasikan bahwa total waktu pada seluruh pekerjaan lebih banyak menyebar di waktu yang lebih kecil dari 50 jam.