Tugas Praktikum Visualisasi Data

1. Visualisasi antar peubah numerik

Data

library(readxl)
databahagia21 <- read_xlsx("C:/Users/mivir/Downloads/Dimensi Kepuasan Hidup Indeks Kebahagiaan, 2017-2021.xlsx") 
str(databahagia21)
## tibble [35 × 14] (S3: tbl_df/tbl/data.frame)
##  $ Provinsi                      : chr [1:35] "ACEH" "SUMATERA UTARA" "SUMATERA BARAT" "RIAU" ...
##  $ Pendidikan                    : num [1:35] 63 61.6 62.6 61 64.3 ...
##  $ Pekerjaan                     : num [1:35] 72.9 70.8 71.3 72.8 74.5 ...
##  $ Pendapatan Rumah Tangga       : num [1:35] 67.4 64.8 66.1 67 69.8 ...
##  $ Kesehatan                     : num [1:35] 75.5 76 75.8 76.6 77 ...
##  $ Kondisi Rumah dan Aset        : num [1:35] 71.6 73 73.1 74.1 74.5 ...
##  $ Personal (Total)              : num [1:35] 70 69 69.6 70.2 72 ...
##  $ Hubungan Sosial               : num [1:35] 80.9 79.2 77.9 79.8 80.2 ...
##  $ Keadaan Lingkungan            : num [1:35] 81.3 80.9 81.5 81.8 82.6 ...
##  $ Kondisi Keamanan              : num [1:35] 81.6 78.9 80.5 81.1 81.5 ...
##  $ Keharmonisan Keluarga         : num [1:35] 84.3 82.6 82.6 84.6 85.1 ...
##  $ Ketersediaan Waktu Luang      : num [1:35] 76.8 75.3 74.1 77.4 77.7 ...
##  $ Sosial (Total)                : num [1:35] 81 79.4 79.3 81 81.4 ...
##  $ Dimensi Kepuasan Hidup (Total): num [1:35] 75.5 74.2 74.5 75.6 76.7 ...

Scatter Plot

plot(databahagia21$`Keharmonisan Keluarga`~databahagia21$`Pendapatan Rumah Tangga`, 
     pch = 19, col = "darkblue",
     ylab = "Keharmonisan Keluarga",
     xlab = "Pendapatan Rumah Tangga",
     main = "Hubungan Antara Pendapatan RT dengan Keharmonisan Keluarga")

Hubungan antara pendapatan rumah tangga dengan keharmonisan keluarga cenderung linear. Semakin banyak pendapatan yang dihasilkan dalam suatu rumah tangga, maka akan semakin tinggi keharmonisan di dalam keluarga tersebut.

Correlogram

library(reshape2)
library(ggplot2)

datanum <- databahagia21[,-1]
kor <- cor(datanum)
meltnum <- melt(kor)

ggplot(meltnum, aes(Var1, Var2, fill = value)) +
  geom_tile(color = "white") +
  scale_fill_gradient2(low = "darkslategrey", mid = "white", high = "darkorange", midpoint = 0, limits = c(-1,1), name="Nilai Korelasi") +
  labs(title = "Korelasi antar Peubah") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))

Semua peubah pada data berkorelasi positif. Setiap peubah dimensi personal memiliki korelasi yang kuat dengan sesamanya, sedangkan korelasinya dengan peubah pada dimensi sosial kurang kuat. Beberapa peubah yang tergabung dalam dimensi sosial memiliki korelasi yang cukup kuat dengan peubah dalam dimensi personal

2. Visualisasi Spasial

Data

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.0
## ── 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
olympic <- read.csv("C:/Users/mivir/Downloads/olympic-medals-by-country-2024.csv")
olympic <- olympic[-147,c(1,2)]
olympic <- olympic %>% filter(!is.na(OlympicMedalsTotal))
str(olympic)
## 'data.frame':    138 obs. of  2 variables:
##  $ country           : chr  "India" "China" "United States" "Indonesia" ...
##  $ OlympicMedalsTotal: int  35 713 2985 37 10 27 150 551 58 72 ...
world <- map_data("world")
olympic <- olympic %>% rename(region = country)
dataolymp <- left_join(world, olympic, by="region")
datamedal <- dataolymp %>% filter(!is.na(dataolymp$Olympic))
str(datamedal)
## 'data.frame':    72589 obs. of  7 variables:
##  $ long              : num  74.9 74.8 74.8 74.7 74.7 ...
##  $ lat               : num  37.2 37.2 37.2 37.3 37.3 ...
##  $ group             : num  2 2 2 2 2 2 2 2 2 2 ...
##  $ order             : int  12 13 14 15 16 17 18 19 20 21 ...
##  $ region            : chr  "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
##  $ subregion         : chr  NA NA NA NA ...
##  $ OlympicMedalsTotal: int  2 2 2 2 2 2 2 2 2 2 ...
tertinggi <- datamedal %>%
  arrange(desc(OlympicMedalsTotal)) %>%
  slice(1)

terendah <- datamedal %>%
  arrange(OlympicMedalsTotal) %>%
  slice(1)

ggplot(datamedal, aes(x = long, y = lat, group = group)) +
  geom_polygon(aes(fill = OlympicMedalsTotal), color = "black") + 
  scale_fill_gradient(name = "Score", low = "lightcyan", high =  "maroon3", na.value = "white") +
  theme(axis.text.x = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks = element_blank(),
        axis.title.y = element_blank(),
        axis.title.x = element_blank(),
        rect = element_blank()) +
  geom_text(data = rbind(tertinggi, terendah), aes(label = region), size = 3, color = "black")

Visualisasi geospasial di atas menggambarkan sebaran total jumlah medali olimpiade yang didapatkan oleh setiap negara di dunia. Pada data diatas terlihat Jerman menduduki posisi dengan jumlah medali olimpiade terbanyak, sedangkan Burkina Faso menempati posisi terbawah.

Visualisasi Time Series

Data

library(zoo)
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
medalseag <- read_xlsx("C:/Users/mivir/Downloads/medali sea games indo.xlsx")
medalseag$Tahun <- as.yearmon(medalseag$Tahun)
medalseag
## # A tibble: 7 × 4
##   Tahun      Emas Perak Perunggu
##   <yearmon> <dbl> <dbl>    <dbl>
## 1 Nov 2011    182   151      143
## 2 Dec 2013     64    84      110
## 3 Jun 2015     47    61       74
## 4 Aug 2017     38    63       90
## 5 Dec 2019     72    84      111
## 6 May 2021     69    90       81
## 7 May 2023     87    80      109
ggplot(medalseag, aes(x = Tahun)) +
  geom_line(aes(y = Emas), col = "darkgoldenrod1", size = 1.5, linetype = "dashed") +
  geom_point(aes(y = Emas), col = "darkgoldenrod3", size = 2.5) +
  geom_line(aes(y = Perak), col = "steelblue", size = 1.5, linetype = "dashed") +
  geom_point(aes(y = Perak), col = "lightskyblue4", size = 2.5) +
  geom_line(aes(y = Perunggu), col = "darkorange", size = 1.5, linetype = "dashed") +
  geom_point(aes(y = Perunggu), col = "darkorange3", size = 2.5) +
  labs(title = "Perolehan Medali Sea Games Indonesia 2011-2023",
       x = "Tahun",
       y = "Jumlah Medali") +
  theme_bw()

Plot time series di atas menggambarkan jumlah medali yang didapatkan Indonesia dari tahun 2011 sampai 2023. Total medali tertinggi diraih Indonesia pada tahun 2011. Hal tersebut mungkin memiliki kaitan dengan peran Indonesia sebagai tuan rumah Sea Games tahun 2011. Perolehan medali Indonesia terlihat menurun dari tahun 2011-2015, kemudian naik sampai tahun 2019 dan berfluktuasi setelah itu.