Tugas Visualisasi Data Individu

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(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(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

Open Library

data <- read.csv("C:/Users/Ghonniyu/Downloads/data visdat individu praktikum.csv", header = TRUE, sep=",")
str(data)
## 'data.frame':    84688 obs. of  19 variables:
##  $ JK          : int  2 2 2 1 2 1 1 2 2 1 ...
##  $ RPM         : int  0 0 0 0 0 35 49 0 0 112 ...
##  $ UHP         : int  0 23 0 0 0 0 0 22 0 0 ...
##  $ GE          : int  8 8 8 8 8 8 8 8 8 8 ...
##  $ DK          : int  2 2 2 2 1 1 2 2 2 1 ...
##  $ R102        : int  7 7 7 7 72 72 6 6 6 72 ...
##  $ ratarata_RPM: num  0.677 36.648 NA NA NA ...
##  $ DK.1        : chr  "Kota" "Desa" "" "" ...
##  $ frek_R105   : int  27482 50206 NA NA NA NA NA NA NA NA ...
##  $ JK.1        : chr  "Laki-Laki" "Perempuan" "" "" ...
##  $ frek_R405   : int  42723 41967 NA NA NA NA NA NA NA NA ...
##  $ TP          : chr  "SD/Sederajat" "Diploma" "SMA/Sederajat" "SD/Sederajat" ...
##  $ R1007       : int  5 6 7 8 NA NA NA NA NA NA ...
##  $ frek_R1007  : int  51 111 511 81983 NA NA NA NA NA NA ...
##  $ R1052       : chr  "Kota" "Pedesaan" "" "" ...
##  $ R105        : chr  "Kota" "Kota" "Desa" "Desa" ...
##  $ R405        : chr  "Laki-Laki" "Perempuan" "Laki-Laki" "Perempuan" ...
##  $ rerata_RPM  : num  33.392 0.687 43.418 0.656 NA ...
##  $ FWT         : num  455 455 455 455 172 ...

VISUALISASI BESARAN

Bar Chart

data_bar <- subset(data, select = c(TP))
data_barnoblank <- subset(data_bar, !(TP %in% c("")))
str(data_barnoblank)
## 'data.frame':    74901 obs. of  1 variable:
##  $ TP: chr  "SD/Sederajat" "Diploma" "SMA/Sederajat" "SD/Sederajat" ...
data_barnoblank%>%count(TP)%>%
  ggplot()+
  geom_col(aes(x=fct_reorder(as.factor(TP),n),y=n), fill="pink", 
           width=0.7) +
  geom_text(aes(x = fct_reorder(as.factor(TP), n), y = n, label = n),
            position = position_stack(vjust = 0.8), color = "black", size = 3) +
    scale_y_continuous(expand = c(0,0))+
    coord_flip() +
    ggtitle("Tingkat Pendidikan Warga Jabar") +
    xlab("") +
    ylab("Jumlah") +
    theme_classic() +
    theme(plot.title = element_text(hjust = .5, size = 15))

Berdasarkan grafik bar chart di atas, tingkat pendidikan “SD/Sederajat” adalah tingkat pendidikan terbanyak yang terakhir ditempuh oleh warga Jawa Barat. Sedangkan tingkat pendidikan “Profesi” adalah tingkat pendidikan telah ditempuh yang paling sedikit . Bar chart tersebut sudah diurutkan berdasarkan tingkat pendidikan yang paling banyak sudah di tempuh oleh warga Jawa Barat pada tahun 2023.

Staked Bar Chart

data_stacked <- data %>%
  filter(R405 %in% c("Laki-Laki", "Perempuan")) %>%
  filter(R105 %in% c("Kota", "Desa"))
ggplot(data_stacked, aes(x = as.factor(R105), y = rerata_RPM, fill = as.factor(R405))) +
  geom_bar(stat = "identity") +
  labs(fill = "Jenis Kelamin") +
  ggtitle("Rata-Rata Konsumsi Rokok Perminggu Berdasarkan Jenis Kelamin dan Klasifikasi Geografi") +
  xlab("Klasifikasi") +
  ylab("Rata Rata") +
  scale_fill_manual(values = c("Perempuan" = "pink", "Laki-Laki" = "lightblue")) +
  theme_minimal()

Baik pada kota maupun desa, mayoritas perokok adalah laki-laki karena terlihat dari komposisi warna biru yang mendominasi di kedua bar chart, sedangkan warna pink yang menjadi minoritas menggambarkan sedikitnya perempuan perokok. Namun, terdapat perbedaan rata-rata batang roko perminggu yang dikonsumsi antara laki-laki yang tinggal di kota dan tinggal di Desa. Perbedaan tersebut mencapai >10 batang lebih besar rata-rata batang rokok perminggu yang dikonsumsi di desa dibanding dengan kota.

VISUALISASI SEBARAN

Histogram

ggplot(data)+
  geom_histogram(aes(x= UHP),fill="pink", color="black", alpha=0.8)+
  labs(title="Histogram Sebaran Umur Hamil Pertama di Jawa Barat")+
  xlab("Umur (Tahun)")+
  ylab("Jumlah (Orang)")+
  xlim(10,40)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 66764 rows containing non-finite outside the scale range
## (`stat_bin()`).
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_bar()`).

Berdasarkan hasil histogram, umur hamil pertama paling umum terdapat pada interval 18 sampai 22 karena histogram mencapai puncak pada interval tersebut. Persebaran yang dimiliki histogram adalah cenderung menjulur ke kanan. Hal tersebut menunjukan bahwa semakin tua umur, semakin sedikit yang mengalami kehamilan pertama.

Density Plot

ggplot(data)+
  geom_density(aes(x=UHP,fill= "Jawa Barat" ),color="#e9ecef", alpha=0.4)+
  labs(title="Density Plot Sebaran Umur Hamil Pertama di Jawa Barat")+
  xlab("Umur Hamil Pertama (Tahun)")+
  ylab("")+
  xlim(10,40)
## Warning: Removed 66764 rows containing non-finite outside the scale range
## (`stat_density()`).

Interpretasi dari density plot kurang lebih sama dengan interpretasi grafik histogram. Karena pada dasarnya, kedua grafik tersebut menjelaskan persebaran dari suatu data yang sama. Namun, pada density plot, titik puncak sangat tergambar jelas, yaitu pada 20. Hal tersebut menggambarkan bahwa biasanya umur hamil pertama perempuan Jawa Barat adalah 20 tahun.

VISUALISASI KOMPOSISI

Pie Chart

data_pie <- data %>%
  mutate(DK = ifelse(DK == 1, "Kota", "Desa")) %>%
  count(DK) %>%
  mutate(percentage = prop.table(n) * 100)

ggplot(data_pie, aes(x = "", y = percentage , fill = DK)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  scale_fill_manual(values = c("pink", "lightblue")) +
  theme_void() +
  theme(legend.position = "right") +
  labs(title = "Komposisi Lokasi Tinggal Warga Jabar 2023", fill = "Lokasi") +
  geom_text(aes(label = paste0(round(percentage), "%")), position = position_stack(vjust=0.5))

Grafik menunjukan komposisi warga Jawa Barat yang tinggal di kota dan desa. Ternyata, warga yang berlokasi di kota mendominasi sebesar 68%. Menunjukan bahwa lebih banyak warga yang tinggal di kota dibadingkan dengan tinggal di desa.

Treemap

data_tree <- subset(data, select = c(TP, JK, RPM))
data_treenoblank <- subset(data_tree, !(TP %in% c("")))
str(data_treenoblank)
## 'data.frame':    74901 obs. of  3 variables:
##  $ TP : chr  "SD/Sederajat" "Diploma" "SMA/Sederajat" "SD/Sederajat" ...
##  $ JK : int  2 2 2 1 2 1 1 2 2 1 ...
##  $ RPM: int  0 0 0 0 0 35 49 0 0 112 ...
treemap(data_treenoblank, 
          index=c("TP", "JK"), 
          vSize="RPM",
          draw=TRUE,
          title="Rerata Konsumsi Rokok berdasarkan Tingkat Pendidikan dan Lokasi Tinggal",
          palette = "Blues",
          fontsize.title=15,
          fontsize.labels=,
          fontcolor.labels="black")

Pada treemap, hasil visualisasi yang diperoleh mirip dengan hasil visualisasi staked bar chart. Pada setiap tingkat pendidikan, kode satu memiliki komposisi kotak yang lebih besar. Hal tersebut menandakan bahwa rata-rata konsumsi rokok laki-laki (kode 1) sangat tinggi jika dibandingkan dengan perempuan (kode 2). Bahkan rata-rata konsumsi rokok untuk perempuan pada tingkat pendidikan diploma sampai tidak terlihat jelas.