Hubungan antar variabel dalam data dapat divisualisasikan menggunakan berbagai teknik yang membantu memahami korelasi dan pola tersembunyi.
6.1 Scatterplot
Scatterplot digunakan untuk menunjukkan hubungan antara dua variabel numerik.
Code
# Pilih 3 mobil yang akan di-highlightlabel_cars <-bind_rows(# Mobil paling irit data_cars %>%slice_max(mpg, n =1, with_ties =FALSE), # Mobil menengah data_cars %>%mutate(dist_to_median =abs(mpg -median(mpg))) %>%slice_min(dist_to_median, n =1, with_ties =FALSE) %>%select(-dist_to_median), # Mobil paling boros data_cars %>%slice_min(mpg, n =1, with_ties =FALSE) ) %>%arrange(desc(mpg)) colors <-c("#21637b", "#967349", "#ad0c1b")
6.1.1 Advanced
Code
# vizchart <-ggplot(data_cars,aes(x = cc, y = mpg, fill =factor(cyl), color =factor(cyl), shape =factor(trans), size = hp)) +# Scatterplotgeom_point(stroke =1, alpha =0.5) +# Aesscale_shape_manual(values =c(21, 23)) +scale_size_continuous(range =c(1, 10)) +scale_fill_manual(values = colors) +scale_color_manual(values = colors) +# Labelgeom_text_repel(data = label_cars, aes(label = car_name), size =6, fontface ="bold", color ="black", box.padding =0.5, point.padding =0.5, nudge_x =15, nudge_y =2,segment.color ="black", segment.size =0.5, arrow =arrow(length =unit(0.01, "npc")) ) +# Setting labs(title ="Efek Mesin & Transmisi terhadap Efisiensi BBM",subtitle ="(Ukuran simbol menunjukkan tenaga mesin (hp))",x ="Kapasitas Mesin (cc)",y ="← Boros Efisiensi BBM Irit →",color ="Jumlah Silinder") +guides(size ="none", fill ="none",shape =guide_legend(title =NULL) ) +theme_minimal(base_size =35) +# Global Font sizetheme(axis.title.y =element_text(size =30, face ="bold"),axis.text.y =element_text(hjust =1, face ="bold", margin =margin(r =1)),plot.title =element_text(hjust =-0.2, face ="bold",margin =margin(b =5)),plot.subtitle =element_text(hjust =-0.115, size=25),# Garispanel.grid.major.y =element_blank(),panel.grid.minor.y =element_blank(),panel.grid.major.x =element_blank(),panel.grid.minor.x =element_blank(),axis.line =element_line(linewidth =0.5, colour ="black"),# Legendlegend.title =element_text(size =30),legend.position ="top",legend.direction ="horizontal",legend.justification =c(-0.25, 0),legend.margin =margin(t =-10, b =-25), legend.text =element_text(margin =margin(r =-1, l =-1)) ) chart
ggplot(data_cars, aes(x = cc, y = mpg)) +# Scatterplotgeom_point() +theme_gray(base_size =35) #efek pake font google
6.2 Parallel Coordinates Plot
Visualisasi ini digunakan untuk menganalisis hubungan beberapa variabel numerik sekaligus.
Code
# Pilih kolomselected_columns <-c("mpg", "hp", "drat", "wt", "qsec", "cc")new_labels <-c("Efisiensi BBM", "Tenaga", "Rasio Driveshaft", "Berat Mobil", "Waktu 1/4 Mil", "Kapasitas Mesin")# HIGHTLIGHT---------------------------------highlight_cars <-function(data, col) { selected <-bind_rows(# Mobil dengan nilai tertinggi data %>%slice_max({{col}}, n =1, with_ties =FALSE), # Mobil dengan nilai median terdekat data %>%mutate(dist_to_median =abs({{col}} -median({{col}}))) %>%slice_min(dist_to_median, n =1, with_ties =FALSE) %>%select(-dist_to_median), # Mobil dengan nilai terendah data %>%slice_min({{col}}, n =1, with_ties =FALSE) ) %>%arrange(desc({{col}})) return(selected)}# Pilih 3 mobil yang akan di-highlightlabel_cars <-highlight_cars(data_cars, mpg) # Berdasarkan efisiensi BBM# Tambahkan kolom highlight dan alpha transparansidata_cars <- data_cars %>%mutate(highlight =ifelse(car_name %in% label_cars$car_name, car_name, "Lainnya"),highlight =factor(highlight, levels =c(label_cars$car_name, "Lainnya")),alpha_val =ifelse(highlight =="Lainnya", 0.2, 1) )# Warna khusus: 3 mobil utama + lainnya dalam warna abu-abuhighlight_colors <-c("#21637b", "#967349", "#ad0c1b", "#E8E8E8") color_mapping <-setNames(highlight_colors, levels(data_cars$highlight))# NORMALISASI DATA ---------------------------------# **Normalisasi data ke skala 0-1 secara manual**data_cars_norm <- data_cars %>%mutate(across(all_of(selected_columns), rescale))# **Pastikan label_positions memiliki skala yang sudah dinormalisasi**label_positions <- data_cars_norm %>% dplyr::filter(car_name %in% label_cars$car_name) %>%select(car_name, cc, highlight) # Tambahkan highlight agar sesuai dengan warnax_max <-length(selected_columns) +0.3# Posisi label di ujung sumbu
6.2.1 Advanced 1
Highlight 3 mobil berdasarkan Efisiensi bahan bakar.
Code
# PLOTchart <-ggparcoord(data_cars_norm, columns =match(selected_columns, colnames(data_cars_norm)), groupColumn ="highlight", scale ="uniminmax", showPoints =TRUE, alphaLines =0.6) +# Warnascale_color_manual(values = color_mapping, guide ="none") +scale_alpha_identity() +# TEXT ----------------# Judullabs(title ="Perbandingan Karakteristik Mobil Berdasarkan Efisiensi BBM",x =NULL, y =NULL) +# Ganti label sumbu xscale_x_discrete(labels = new_labels) +# **Tambahkan label di ujung garis & geser lebih ke kiri**geom_text(data = label_positions, aes(x = x_max -0.2, y = cc, label = car_name, color = highlight), fontface ="bold", size =8, hjust =0, inherit.aes =FALSE) +# THEME -------------------# Hapus Legendguides(color ="none") +# **Styling tema**theme_minimal(base_size =35) +theme(axis.title.y =element_text(size =24, face ="bold"),axis.text.y =element_text(hjust =1, face ="bold", margin =margin(r =-30), size =22),plot.title =element_text(hjust =0, face ="bold", size =30),# **Pertebal grid utama**panel.grid.major =element_line(linewidth =0.5), panel.grid.minor =element_line(linewidth =0.3),panel.grid.major.y =element_blank(),panel.grid.minor.y =element_blank() ) +coord_cartesian(clip ="off")chart
# Pilih 3 mobil yang akan di-highlightlabel_cars <-highlight_cars(data_cars, hp) # Berdasarkan tenaga# Tambahkan kolom highlight dan alpha transparansidata_cars <- data_cars %>%mutate(highlight =ifelse(car_name %in% label_cars$car_name, car_name, "Lainnya"),highlight =factor(highlight, levels =c(label_cars$car_name, "Lainnya")),alpha_val =ifelse(highlight =="Lainnya", 0.2, 1) )# Warna khusus: 3 mobil utama + lainnya dalam warna abu-abuhighlight_colors <-c("#21637b", "#967349", "#ad0c1b", "#E8E8E8") color_mapping <-setNames(highlight_colors, levels(data_cars$highlight))# NORMALISASI DATA ---------------------------------# **Normalisasi data ke skala 0-1 secara manual**data_cars_norm <- data_cars %>%mutate(across(all_of(selected_columns), rescale))# **Pastikan label_positions memiliki skala yang sudah dinormalisasi**label_positions <- data_cars_norm %>% dplyr::filter(car_name %in% label_cars$car_name) %>%select(car_name, cc, highlight) # Tambahkan highlight agar sesuai dengan warnax_max <-length(selected_columns) +0.3# Posisi label di ujung sumbu
Code
# PLOTchart <-ggparcoord(data_cars_norm, columns =match(selected_columns, colnames(data_cars_norm)), groupColumn ="highlight", scale ="uniminmax", showPoints =TRUE, alphaLines =0.6) +# Warnascale_color_manual(values = color_mapping, guide ="none") +scale_alpha_identity() +# TEXT ----------------# Judullabs(title ="Perbandingan Karakteristik Mobil Berdasarkan Tenaga",x =NULL, y =NULL) +# Ganti label sumbu xscale_x_discrete(labels = new_labels) +# **Tambahkan label di ujung garis & geser lebih ke kiri**geom_text(data = label_positions, aes(x = x_max -0.2, y = cc, label = car_name, color = highlight), fontface ="bold", size =8, hjust =0, inherit.aes =FALSE) +# THEME -------------------# Hapus Legendguides(color ="none") +# **Styling tema**theme_minimal(base_size =35) +theme(axis.title.y =element_text(size =24, face ="bold"),axis.text.y =element_text(hjust =1, face ="bold", margin =margin(r =-30), size =22),plot.title =element_text(hjust =0, face ="bold", size =30),# **Pertebal grid utama**panel.grid.major =element_line(linewidth =0.5), panel.grid.minor =element_line(linewidth =0.3),panel.grid.major.y =element_blank(),panel.grid.minor.y =element_blank() ) +coord_cartesian(clip ="off")chart
install.packages("C:/Users/NAMA_USER/Downloads/circlize_0.4.16.zip", repos = NULL, type = "win.binary")
Code
# Install dan load library jika belum ada# install.packages("circlize")# Kalo gak bisa, coba ini# install.packages("C:/Users/NAMA_USER/Downloads/circlize_0.4.16.zip", repos = NULL, type = "win.binary")library(circlize)# Load datasetdata("mtcars")# Membuat data hubungan antara jumlah silinder dan jenis transmisimtcars$group <-as.character(mtcars$cyl) # Mengubah cyl menjadi faktor karaktermtcars$transmission <-ifelse(mtcars$am ==0, "Automatic", "Manual")# Hitung frekuensi kombinasichord_data <-as.data.frame(table(mtcars$group, mtcars$transmission))# Ubah nama kolom agar lebih mudah dipahamicolnames(chord_data) <-c("Cylinders", "Transmission", "Count")# Buat chord diagramchordDiagram(chord_data, transparency =0.5, col =c("red", "blue", "green"))
6.5 Arc Chart
Menampilkan koneksi antar elemen dalam dataset dengan menggunakan kurva.
6.6 Correlation Matrix
Digunakan untuk menunjukkan hubungan antara banyak variabel dalam bentuk matriks.
6.7 Network Diagrams
Visualisasi hubungan antar entitas dalam bentuk jaringan.