Tugas Visualisasi Data Individu
## 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
## Warning: package 'ggridges' was built under R version 4.3.2
## Warning: package 'GGally' was built under R version 4.3.2
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
## 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
## Warning: package 'treemap' was built under R version 4.3.2
## 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.