Memasukkan Library

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 'readr' was built under R version 4.3.2
## Warning: package 'dplyr' was built under R version 4.3.2
## Warning: package 'stringr' 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.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.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)
library(GGally) 
## Warning: package 'GGally' was built under R version 4.3.2
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
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(ggplot2)
library(readxl)
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

Menambahkan library-library yang akan digunakan selama melakukan visualisasi data. # Import Data

data <- read_xlsx("C:/Users/Alista/Documents/Semester 4/Data Visdat Praktikum.xlsx", sheet = 2)

str(data)
## tibble [62,818 × 11] (S3: tbl_df/tbl/data.frame)
##  $ city : chr [1:62818] "Ciamis" "Ciamis" "Sukabumi" "Sukabumi" ...
##  $ R401 : num [1:62818] 2 3 1 2 1 2 3 1 2 3 ...
##  $ R801 : chr [1:62818] "Ya" "Ya" "Ya" "Ya" ...
##  $ R802 : chr [1:62818] "Ya" "Ya" "Ya" "Ya" ...
##  $ R808 : chr [1:62818] "Ya" "Ya" "Tidak" "Tidak" ...
##  $ R812 : chr [1:62818] "Tidak" "Ya" "Tidak" "Tidak" ...
##  $ R709 : num [1:62818] 0 0 0 0 0 48 50 0 0 97 ...
##  $ R1108: num [1:62818] 0 0 0 0 0 0 0 0 0 0 ...
##  $ R1203: num [1:62818] 0 0 0 0 0 0 0 0 0 0 ...
##  $ R1208: num [1:62818] 0 0 0 0 0 35 49 0 0 112 ...
##  $ R612 : chr [1:62818] "SD" "D4" "SMK" "SD" ...

Mengimport data dari penyimpanan kompter menggunakan fungsi read.xlsx untuk membaca data bertipe excel. Seluruh data kemudian disimpan kedalam variabel yang diinisialisasikan sebagai data.

Visualisasi Data

Besaran Data

Bar Chart

ggplot(data, aes(x = city)) +
  geom_bar(fill = "orange") +
  labs(title = "Jumlah Pengguna HP per Kota", x = "Kota", y = "Jumlah Pengguna") +
  theme_classic() +
  coord_flip()

Visualisasi besaran pertama mengunakan bar chart untuk melihat besaran jumlah pengguna telepom seluler di setiap kabupaten atau kota pada Provinsi Jawa Barat. Dapat dilihat bahwa Bekasi merupakan wilayah dengan jumlah pengguna telepon seluler terbanyak hingga menyentuh angka lebih dari 6000 pengguna disusul dengan Bandung dan Bogor. Wilayah dengan pengguna telepon seluler paling sedikit ditempati oleh kota Banjar yang kurang dari 2000 pengguna.

Lollipop Chart

data %>%
  count(city) %>%
  arrange(desc(n)) %>% 
  ggplot() +
  geom_segment(aes(x = fct_reorder(as.factor(city), n), xend = fct_reorder(as.factor(city), n), y = 0, yend = n), color = "green") +
  geom_point(aes(x = fct_reorder(as.factor(city), n), y = n), color = "red", size = 2) +
  scale_y_continuous(expand = c(0, 0)) +
  coord_flip() +
  ggtitle("Jumlah Pengguna HP Setiap Kota") +
  xlab("") +
  ylab("Jumlah Pengguna HP") +
  theme_light() +
  theme(plot.title = element_text(hjust = 0.5))

Sama halnya dengan visualisasi besaran untuk melihat jumlah pengguna telepon seluler di setiap Kab/Kota yang ada di Provinsi Jawa Barat yang telah dilakukan menggunakan bar chart. Namun, dapat dilihat bahwa dengan menggunakan lollipop chart terdapat garis batas yg signifikan sehingga dalam membaca datanya akan lebih mudah dan presisi.

Komposisi Data

Pie Chart

Menguasai_Telepon <- data$R802
### Menghitung Pengamatan untuk Setiap Kategori Penggunaan HP
Individu_counts <- table(Menguasai_Telepon)
Individu_percent <- round ((Individu_counts / sum(Individu_counts))*100, 1)

aggregated_data <- data.frame(
  Menguasai_Telepon = names(Individu_counts),
  Individu_counts = as.numeric(Individu_counts),
  Individu_percent
)
# Membuat pie chart dengan persentase nilai
colors <- c("lightblue", "lightpink")

ggplot(data = aggregated_data, aes(x = "", y = Individu_percent, fill = Menguasai_Telepon)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  labs(title = "Persentase Individu Menguasai Pemakaian HP di Jawa Barat 2023",
       fill = "Kecakapan Menggunakan HP") +
  theme_void() +
  geom_text(aes(label = paste0(Individu_percent, "%")), 
            position = position_stack(vjust = 0.5),
            size=3.5)+
  theme(plot.title = element_text(size = 10, hjust = 0.5, face="bold", color="black"),
        legend.text = element_text(size = 10), legend.position = "left")+
  scale_fill_manual(values=colors)
## Don't know how to automatically pick scale for object of type <table>.
## Defaulting to continuous.

Untuk melihat komposisi dari data masyarakat pengguna telepon seluler yang merasa menguasai telepon seluler di Provinsi Jawa Barat dilakukan menggunakan pie chart. Pie chart digunakan untuk menampilkan total persentase yang harus mencapai 100%. Potongan berwarna pink menggambarkan masyarakat yang merasa memiliki kecakapan yang baik dalam menggunakan HP dan bagian berwarna biru mewakili masyarakat yang tidak merasa menguasai penggunaan HP. Dapat diketahui dari grafik di atas bahwa diduga sebanyak 84% penduduk Jawa Barat merasa mereka sudah menguasai penggunaan HP dan sisanya sebanyak 16% merasa bahwa tidak menguasai penggunaan HP.

Treemap Chart

treemap(data, 
        index=c("city", "R612", "R709"), 
        vSize="R1208",
        draw=TRUE,
        title="Treemap: Banyak Konsumsi Rokok Berdasarkan Wilayah, Pendidikan Terakhir, dan Lama Jam Kerja",
        fontsize.title=20,
        fontsize.labels=12,
        fontcolor.labels="white")

Dilihat dari besaran kotak yang dihasilkan dari treemap didapatkan bahwa 3 kota teratas yang banyak mengonsumsi rokok per minggunya adalah kota Bekasi, Bandung, dan Bogor. Mayoritas masyarakat yang mengonsumsi rokok di kota bekasi memiliki jenjang pendidikan terakhir SD, SMP, SMA, SMK dan lama jam kerja di angka 48 jam. Di kota Bandung mayoritas masyarakat yang mengonsumsi rokok memiliki pendidikan terakhir pada jenjang SMP, SMA, SD, SMK dean jam kerja 48-70 jam per minggunya. Selain itu, 3 kota dengan konsumsi tingkat rokok terendah diantaranya Kuningan, Pangandaran, dan kota Banjar. Hal ini dapat dilihat dari besaran kotak yang menunjukkan setiap wilayahnya.

Sebaran Data

Histogram

JamKerja <- data$R709

ggplot(data)+
  geom_histogram(aes(x=JamKerja),fill="#69b3a2", color="#e9ecef", alpha=0.8)+
  labs(title="Histogram Sebaran Jam Kerja Masyarakat")+
  xlab("Lama Jam Kerja")+
  ylab("Jumlah")+
  xlim(1,100)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 32295 rows containing non-finite values (`stat_bin()`).
## Warning: Removed 2 rows containing missing values (`geom_bar()`).

Untuk melihat sebaran jam kerja keseluruhan masyarakat per minggu pada kali ini divisualisasikan menggunakan histogran. Dari grafik histogram di atas, dapat dilihat bahwa terdapat banyak puncak yang diduga mengindikasikan ada beberapa kelompok selang lama kerja pada masyarakat di Provinsi Jawa Barat sehingga histogram dihasilkan termasuk ke dalam multimodal.

Density Plot

ggplot(data)+
  geom_density(aes(x=R1208,fill= "Rokok" ),color="#e9ecef", alpha=0.4)+
  labs(title="Density Plot Sebaran Pemakaian Rokok")+
  xlab("Batang Rokok")+
  ylab("Jumlah")+
  xlim(1,100)
## Warning: Removed 48461 rows containing non-finite values (`stat_density()`).

Density plot yang dihasilkan menghasilkan bahwa sebaran data jumlah rokok yang dikonsumsi oleh masyarakat di Provinsi Jawa Barat per minggu menyebar bimodal. Hal ini dapat dilihat dengan adanya dua puncak yang mengindikasikan dua kelompok mayoritas masyarakat yang mengonsumsi batang rokok dengan jumlah tertentu, yakni pada angka sekitar 40 dan 85 batang rokok per minggu.