library(tidyverse)
## Warning: package 'tidyverse' 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.4
## ✔ 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(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)
## 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
##
## 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(dplyr)
data_house <- read.csv("C:\\Users\\Lusi Oktaviani\\OneDrive\\Statistics and Data Science\\Semester 4\\Visualisasi Data\\Praktikum\\2023 Maret JABAR - SUSENAS KP BP 4.3.csv", header = TRUE, sep=",")
str(data_house)
## 'data.frame': 18391 obs. of 20 variables:
## $ X : int 16 20 22 44 65 66 76 84 93 95 ...
## $ URUT : int 500017 500021 500023 500045 500066 500067 500077 500085 500094 500096 ...
## $ R101 : int 32 32 32 32 32 32 32 32 32 32 ...
## $ KAB.KOTA : chr "Kab. Bandung" "Kab. Bandung" "Kab. Bandung" "Kab. Bandung" ...
## $ R105 : int 1 1 1 2 1 1 1 1 1 1 ...
## $ R301 : int 6 2 4 2 2 8 4 2 5 1 ...
## $ FOOD : num 2528700 992143 3475286 3128571 2108829 ...
## $ NONFOOD : num 1081051 623500 3426500 1256667 1358500 ...
## $ EXPEND : num 3609751 1615643 6901786 4385238 3467329 ...
## $ KAPITA : num 601625 807821 1725446 2192619 1733664 ...
## $ KALORI_KAP: num 1848 2105 2025 1995 2487 ...
## $ PROTE_KAP : num 48.7 74.7 57.4 56.1 57.8 ...
## $ LEMAK_KAP : num 45 43.1 57.4 55.1 60.7 ...
## $ KARBO_KAP : num 272 303 260 303 345 ...
## $ WERT : num 676.34 478.6 489.24 3.48 558.63 ...
## $ WEIND : num 4058.01 957.19 1956.97 6.95 1117.25 ...
## $ PSU : int 7177 8666 6732 7985 8572 6732 6878 6739 6666 6950 ...
## $ SSU : int 71198 85915 66771 79169 84972 66772 68223 66843 66114 68948 ...
## $ WI1 : int 7164 8653 6719 7972 8559 6719 6865 6726 6653 6937 ...
## $ WI2 : int 71183 85900 66756 79154 84957 66757 68208 66828 66099 68933 ...
data_house %>%
count(KAB.KOTA) %>%
slice_max(n = 10, order_by = n) %>% # gunakan arrange(n) untuk mengurutkan sebaliknya
ggplot() +
geom_col(aes(x = fct_reorder(as.factor(KAB.KOTA), n), y = n), fill = "steelblue", width = 0.4) +
geom_text(aes(x = fct_reorder(as.factor(KAB.KOTA), n), y = n, label = n),
position = position_stack(vjust = 0.5), color = "white", size = 3) +
scale_y_continuous(expand = c(0, 0)) +
coord_flip() +
ggtitle("Top 10 Kabupaten dengan Responden Terbanyak") +
xlab("") +
ylab("Jumlah Responden") +
theme_classic() +
theme(plot.title = element_text(hjust = 0.5, size = 15))
Dari Bar Chart di atas, kita dapat melihat 10 Kabupaten di Jawa Barat pada tahun 2023 dengan responden terbanyak. Bar Chart di atas diarahkan untuk menuliskan jumlah repsonden di dalam bar nya . Kabupaten Bogor menjadi kabupaten dengan responden terbanyak sejumlah 1294 orang.Diikuti oleh Kabupaten Bekasi, Kabupaten Bandung, dst.
data_house %>%
count(KAB.KOTA) %>%
arrange(desc(n)) %>% # gunakan arrange(n) untuk mengurutkan sebaliknya
ggplot() +
geom_segment(aes(x = fct_reorder(as.factor(KAB.KOTA), n), xend = fct_reorder(as.factor(KAB.KOTA), n), y = 0, yend = n), color = "navy") +
geom_point(aes(x = fct_reorder(as.factor(KAB.KOTA), n), y = n), color = "red", size = 2) +
scale_y_continuous(expand = c(0, 0)) +
coord_flip() +
ggtitle("Jumlah responden setiap Kota/Kabupaten") +
xlab("") +
ylab("Jumlah responden") +
theme_light() +
theme(plot.title = element_text(hjust = 0.5))
Tidak terlalu berbeda dengan Bar Chart sebelumnya, Lollipop Chart ini juga menunjukkan besaran responden yang ada di kabupaten-kabupaten yang terdapat di Provinsi Jawa Barat pada SUSENAS 2023. Chart di atas di arahkan untuk menunjukkan urutan dari kabupaten yang memiliki responden paling sedikit ke yang terbanyak. Kabupaten dengan responden paling sedikit yaitu Kabupaten Pangandaran dan yang terbanyak adalah Kabupaten Bogor.
ggplot(data_house, aes(x = factor(KAB.KOTA), y = KAPITA)) +
geom_violin(fill = "green") +
labs(title = "Violin Plot: Sebaran Kota/Kabupaten Berdasarkan Kapita",
x = "Kabupaten",
y = "Kapita") +
theme_minimal()
Violin Plot diatas menunjukkan sebaran kapita di 18 kabupaten yang ada di Jawa Barat pada SUSENAS 2023. Dapat dilihat bahwa sebaran yang tertingi berdasarkan kapita ada di Kabupaten Indramayu.
data_house %>%
filter(KAB.KOTA %in% c("Kab. Bogor", "Kab. Sukabumi", "Kab. Cianjur", "Kab.Bandung", "Kab. Garut", "Kab. Tasikmalaya", "Kab. Ciamis", "Kab. Kuningan", "Kab. Cirebon", "Kab. Majalengka")) %>%
ggplot() +
geom_boxplot(aes(y = as.factor(KAB.KOTA), x = NONFOOD, fill = as.factor(KAB.KOTA)), show.legend = FALSE) +
ggtitle("Sebaran Pengeluaran di 10 Kabupaten") +
ylab("Kabupaten") +
xlab("Pengeluaran Selain Makanan") +
theme(plot.title = element_text(hjust = 0.5)) +
theme_bw()
Dengan menggunakan data NONFOOD sebagai sumbu X dan data Kabupaten/Kota sebagai sumbu Y serta menggunakan visualisasi sebaran dengan jenis Box Plot maka didapati hasil seperti gambar di atas. Boxplot di atas menunjukkan sebaran pengeluaran selaib makanan bagi responden berdasarkan 10 Kabupaten yang dipilih. Terdapat banyak pencilan untuk setiap kabupaten nya. Dengan pencilan terjauh terlihat di Kabupaten Bogor. Lain-lainnya sulit untuk diamati dikarenakan keterbatasan pengamat dalam membaca sebaran pengeluarannya.
# Data simulasi
set.seed(123)
n <- 175
bahan <- sample(c("Beton", "Genteng", "Seng"), n, replace = TRUE) # Define bahan
Kabupaten <- sample(c("Bogor", "Kuningan", "Subang"), n, replace = TRUE)
data_simulasi <- data.frame(bahan = bahan, Kabupaten = Kabupaten)
# Plot
ggplot(data_simulasi) +
geom_mosaic(aes(x = product(bahan, Kabupaten), fill_alpha=bahan)) +
scale_fill_brewer(palette = "Set3") +
labs(title = "Mosaic Plot: Jenis Bahan Atap vs Kabupaten",
x = "Kabupaten", y = "Jenis Bahan Atap") +
theme_classic()
## Warning: `unite_()` was deprecated in tidyr 1.2.0.
## ℹ Please use `unite()` instead.
## ℹ The deprecated feature was likely used in the ggmosaic package.
## Please report the issue at <https://github.com/haleyjeppson/ggmosaic>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Dengan menggunakan data Kabupaten/Kota dan Jenis Bahan Atap Rumah Tangga dapat dilihat proporsinya menggunakan Mosaic Plot.
Lebar atau tinggi dari setiap blok dalam mosaic plot menunjukkan proporsi atau frekuensi relatif dari kategori. Jadi, dapat disimpulkan bahwa pada Kabupaten Bogor yang menggunakan jenis atap beton lebih banyak proporsinya dibandingkan menggunakan jenis atap genteng dan seng. Lalu pada Kabupaten Kuningan serta Kabupaten Subang yang menggunakan jenis atap seng lebih banyak proporsinya dibandingkan yang menggunakan jenis atap beton dan genteng.
data_baru <- read.csv("C:\\Users\\Lusi Oktaviani\\OneDrive\\Statistics and Data Science\\Semester 4\\Visualisasi Data\\Praktikum\\2023 Maret JABAR - SUSENAS KOR Rumah Tangga FIXX.csv", header = TRUE, sep=",")
str(data_baru)
## 'data.frame': 18391 obs. of 199 variables:
## $ X : int 9 12 23 70 97 124 131 134 142 149 ...
## $ URUT : int 500010 500013 500024 500071 500098 500125 500132 500135 500143 500150 ...
## $ PSU : int 114 856 1815 59 1459 2119 42 166 484 1617 ...
## $ SSU : int 1020 8402 17935 468 14389 20970 301 1538 4706 16031 ...
## $ WI1 : int 101 843 1802 46 1446 2106 29 153 471 1604 ...
## $ WI2 : int 1005 8387 17920 453 14374 20955 286 1523 4691 16016 ...
## $ R101 : int 32 32 32 32 32 32 32 32 32 32 ...
## $ KAB.KOTA : chr "Kab. Bogor" "Kab. Bogor" "Kab. Bogor" "Kab. Bogor" ...
## $ R105 : int 1 1 1 1 1 2 1 1 1 2 ...
## $ NUINFORT : int 2 1 2 1 2 2 2 2 1 1 ...
## $ R1701 : int 5 5 1 5 5 5 5 5 1 5 ...
## $ R1702 : int 5 5 1 5 5 5 5 5 1 5 ...
## $ R1703 : int 5 5 1 5 5 5 5 5 1 5 ...
## $ R1704 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1705 : int 5 5 5 5 5 5 5 5 1 5 ...
## $ R1706 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1707 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1708 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ NUINFORT1 : int 2 1 2 1 2 2 2 2 1 1 ...
## $ R1801 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R1802 : int 1 1 1 2 3 3 1 1 1 3 ...
## $ R1803 : int 5 1 5 0 0 0 5 4 6 0 ...
## $ R1804 : int 80 96 60 30 100 30 54 100 40 20 ...
## $ R1805 : int 1 5 5 5 5 5 5 5 5 5 ...
## $ BahanAtap : chr "" "Genteng" "Asbes" "Genteng" ...
## $ R1807 : int 1 1 1 1 1 1 1 1 1 4 ...
## $ R1808 : int 2 2 2 2 4 2 2 2 2 6 ...
## $ R1809A : int 1 1 1 1 1 1 1 1 4 1 ...
## $ R1809B : int 1 1 1 1 1 1 1 1 0 4 ...
## $ R1809C : int 1 1 3 1 1 3 3 1 0 3 ...
## $ R1809D : int 8 12 0 98 98 0 0 98 0 0 ...
## $ R1809E : int 7 7 0 7 7 0 0 7 0 0 ...
## $ R1810A : int 5 2 6 4 4 8 5 2 4 7 ...
## $ R1810B : int 1 0 1 2 2 1 1 0 2 2 ...
## $ R1811A : int 1 2 1 1 1 1 1 2 2 1 ...
## $ R1811B : int 0 7 0 0 0 0 0 5 3 0 ...
## $ R1812 : int 5 5 5 5 1 5 5 5 5 5 ...
## $ R1813A : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1813B : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1813C : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1813D : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1813E : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1814A : int 5 5 6 4 4 8 5 5 4 7 ...
## $ R1814B : int 1 1 1 2 2 1 1 1 2 2 ...
## $ R1815A : int 2 1 1 3 1 1 1 1 2 2 ...
## $ R1815B : int 1 1 1 0 1 1 1 1 1 1 ...
## $ R1815C : int 1 1 1 0 1 1 1 1 1 1 ...
## $ R1816 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R1816B1 : int 1 1 1 1 1 1 2 1 1 1 ...
## $ R1816B2 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R1816B3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R1817 : int 4 4 4 4 4 4 4 4 4 10 ...
## $ R1901A : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901B : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901C : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901D : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901E : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901F : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901G : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901H : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901I : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901J : int 5 5 1 5 5 5 5 5 5 5 ...
## $ R2001A : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2001B : int 5 1 1 5 5 1 1 1 5 5 ...
## $ R2001C : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2001D : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2001E : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2001F : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2001G : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2001H : int 1 1 1 5 1 1 1 1 5 5 ...
## $ R2001I : int 5 5 5 5 5 5 1 5 5 5 ...
## $ R2001J : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2001K : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2001L : int 5 5 5 5 5 5 1 5 5 5 ...
## $ R2001M : int 5 1 1 5 5 5 1 5 5 5 ...
## $ R2002_A : chr "" "A" "A" "" ...
## $ R2002_B : chr "" "" "" "" ...
## $ R2002_C : chr "" "" "" "" ...
## $ R2002_D : chr "" "" "" "" ...
## $ R2101A : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R2101B : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R2101C : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R2201A2 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2201A3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R2201B2 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2201B3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R2201C2 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2201C3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R2201D2 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2201D3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R2201E2 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2201E3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R2201F2 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2201F3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R2202 : int 5 5 2 5 5 2 5 5 5 1 ...
## $ R2203 : int 5 5 1 5 5 1 5 5 5 5 ...
## $ R2204A : int 0 0 1 0 0 8 0 0 0 0 ...
## $ R2204B : int 0 0 5 0 0 0 0 0 0 0 ...
## $ R2204C_A : chr "" "" "A" "" ...
## [list output truncated]
data <- data.frame(
BahanAtap=c("Beton","Genteng","Seng","Asbes","Bambu","Kayu/sirap"),
count=c(402, 16016, 168, 1616, 114, 3)
)
data$fraction = data$count / sum(data$count)
data$ymax = cumsum(data$fraction)
data$ymin = c(0, head(data$ymax, n=-1))
ggplot(data, aes(ymax=ymax, ymin=ymin, xmax=4, xmin=2, fill= BahanAtap)) +
geom_rect() +
coord_polar(theta="y") +
xlim(c(2, 4)) +
theme_classic()
Dengan menggunakan data SUSENAS 2023, dapat diketahui jenis bahan atap yang banyak digunakan oleh rumah tangga di Kab/Kota Jawa Barat menggunakan Pie Chart. Jenis bahan atap terbanyak yang dipakai oleh responden pada yaitu bahan genteng, disusul terbanyak kedua asbes, dst.