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

Visualisasi Besaran

Bar Chart

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("Kabupaten Jawa Barat dgn Pengeluaran Non Makanan Terbanyak") +
  xlab("") +
  ylab("NONFOOD") +
  theme_classic() +
  theme(plot.title = element_text(hjust = 0.5, size = 15))

Interpretasi Bar Chart

Dengan menggunakan data Non Food sebagai sumbu X dan data Kabupaten/Kota sebagai sumbu Y, dapat divisualisasikan menggunakan bar chart dengan hasil seperi di atas.

Hasil tersebut mengatakan bahwa Kabupaten Bogor memeringkati peringkat pertama (jumlah = 1294) dengan pengeluaran selain konsumsi makanan lalu diikuti Kabupatem Bekasi (jumlah = 1169) dan pada urutan ketiga diisi oleh Kabupaten Bandung (jumlah = 1166).

Lollipop Chart

ggplot(data_house,
  mapping = aes(x = reorder(KAB.KOTA, EXPEND), y = EXPEND)) +
  geom_segment(aes(x = reorder(KAB.KOTA, EXPEND), xend = reorder (KAB.KOTA, EXPEND), y = 0 , yend = EXPEND), color = "red") +
  geom_point(color = "blue", sie = 4, alpha = 0.6) +
  coord_flip() +
  theme_classic()
## Warning in geom_point(color = "blue", sie = 4, alpha = 0.6): Ignoring unknown
## parameters: `sie`

Interpretasi Lollipop Chart

Dengan menggunakan data Expend dan data Kabupaten/Kota, dapat divisualisasikan menggunakan lollipop chart dengan hasil seperi di atas.

Hasil tersebut mengatakan bahwa Kabupaten Bekasi memeringkati peringkat pertama dengan pengeluaran secara keseluruhan selama 2023 lalu diikuti Kabupatem Bogor diurutan kedua dan pada urutan ketiga diisi oleh Kabupaten Indramayu.

Visualisasi Sebaran

Violin Plot

ggplot(data_house, aes(x = "", y = EXPEND)) +
  geom_violin(fill = "skyblue") +
  labs(title = "Violin Plot: Distribusi Pengeluaran Konsumsi Di Jawa Barat",
       x = NULL,
       y = "EXPEND") +
  theme_minimal()

Interpretasi Violin Plot

Dengan menggunakan data EXPEND maka bisa didapati hasil violin plot seperti gambar di atas. Violin plot di atas menunjukkan bahwa sebaran data menyebar pada pengeluaran (expend) di antara 0.0e+00 sampai 5.0e+07. Salah satu kelebihan violin plot adalah kita dapat langsung melihat sebaran data nya menyebar dimana dengan melihat bagain yang berbentuk violin atau menggembung nya.

Box Plot

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 = EXPEND, fill = as.factor(KAB.KOTA)), show.legend = FALSE) +
  ggtitle("Sebaran Pengeluaran di 10 Kabupaten") +
  ylab("Kabupaten") +
  xlab("Pengeluaran") +
  theme(plot.title = element_text(hjust = 0.5)) +
  theme_bw()

Interpretasi Box Plot

Dengan menggunakan data EXPEND 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.

Pada gambar di atas salah satu yang dapat dilihat yaitu terdapat pencilan pengeluaran paling jauh di Kabupaten Bogor diperingkat pertama, lalu diikuti dengan Kabupaten Cirebon diperingkat kedua, dan pada peringkat ketiga terdapat Kabupaten Garut.

Lain-lainnya sulit untuk diamati dikarenakan keterbatasan pengamat dalam membaca sebaran pengeluarannya.

Visualisasi Komposisi

Mosaic Plot

# Data simulasi
set.seed(123) 
n <- 100  # Jumlah observasi
bahan <- sample(c("Asbes", "Bambu", "Genteng"), n, replace = TRUE) # Define bahan
Kab_Kota <- sample(c("Kab. Bandung", "Kab.Bogor", "Kab.Purwakarta"), n, replace = TRUE) # Define Kabupaten dan Kota
data_simulasi <- data.frame(bahan = bahan, Kab_Kota = Kab_Kota)

# Plot
ggplot(data_simulasi) +
  geom_mosaic(aes(x = product(bahan, Kab_Kota), fill_alpha=bahan)) +
  scale_fill_brewer(palette = "Set2") +
  labs(title = "Mosaic Plot: Kabupaten/Kota vs Bahan Atap", 
       x = "Jenis Bahan Atap", y = "Kabupaten") +
  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.

Interpretasi Mosaic Plot

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 genteng lebih banyak proporsinya dibandingkan menggunakan jenis atap bambu dan asbes. Lalu pada Kabupaten Bandung serta Kabupaten Purwakarta yang menggunakan jenis atap Bambu lebih banyak proporsinya dibandingkan yang menggunakan jenis atap asbes dan genteng.

Diagram Donat

data <- data.frame(
  JenisBahanAtap=c("Jerami/ijuk/daun-daunan/rumbia", "Beton", "Bambu", "Lainnya"),
  count=c(7, 402, 114, 16)
)
 
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=3, fill=JenisBahanAtap)) +
    geom_rect() +
    coord_polar(theta="y") +
    xlim(c(2, 4)) +
    theme_classic()

Interpretasi Diagram Donat

Dengan menggunakan data jenis bahan atap yang banyak digunakan oleh rumah tangga di Kab/Kota Jawa Barat dapat dilihat komposisi nya menggunakan Diagram Donat.

Dengan komposisi paling banyak diraih oleh atap jenis Beton, lalu Bambu diurutan kedua terbanyak, dan Lainnya diurutan ketiga terbanyak.