tuition_cost <- read.csv("data_input/tuition_cost.csv")
salary_potential <- read.csv("data_input/salary_potential.csv")
historical_tuition <- read.csv("data_input/historical_tuition.csv")
head(historical_tuition)library(shiny)
library(shinydashboard)
library(dplyr)
library(tidyverse)
library(ggplot2)
library(scales)
library(plotly)
library(highcharter)
library(DT)
library(glue)## [1] TRUE
## [1] TRUE
## [1] FALSE
Nilai NA pada data tuition_cost terdapat pada kolom room_and_board yang menjelaskan keberadaan/ketersediaan tempat tinggal dari suatu universitas. Nantinya nilai NA itu akan diganti saat proses wrangling dan visualisasi dengan variabel karakter: “Unavailable”.
Data tabular historical_tuition merekam biaya perkuliahan yang terbagi menjadi 2 jenis, yaitu private dan public dari tahun 1985. Namun karena data tiap tahunnya tidak terisi lengkap, maka data yang akan digunakan hanya dari tahun 2000 hingga 2016. Visualisasi data ini bertujuan untuk membandingkan rata-rata kenaikan dan perbedaan harga dari 2 jenis kelas di universitas Amerika Serikat dalam kurun waktu tertentu.
'%not_in%' <- Negate('%in%')
# wrangling Data -------------------------------------------
hist <- historical_tuition %>%
select(-tuition_type) %>%
filter(type != "All Institutions") %>%
group_by(year, type) %>%
summarise(cost_average = mean(tuition_cost)) %>%
ungroup() %>%
mutate(text = paste(year, ":", comma(round(cost_average,2)), "USD")) %>%
separate(col = year, into = str_c("year"), 1:2, sep = "-") %>%
mutate(year = as.numeric(year))
hist2 <- hist %>%
filter(!year %in% c("1985", "1995"))
# highchart -------------------------------------------------
hchart(hist2, "area", hcaes(year, cost_average, group = type)) %>%
hc_title(text = "Public VS Private School in USA",
style = list(color = "#383838", fontSize = 20)) %>%
hc_subtitle(text = "Tuition Cost From 2000 - 2016") %>%
hc_xAxis(title = list(text = "Year",
style = list(fontWeight = "bold"))) %>%
hc_yAxis(title = list(text = "Cost Average",
style = list(fontWeight = "bold"))) %>%
hc_tooltip(pointFormat = ': {point.y:.1f} USD') %>%
hc_colors(colors = c("#4f71b0", "#68edad")) %>%
hc_add_theme(hc_theme_gridlight())Dengan menggunakan data tuition_cost, kita akan menampilkan 10 kota/negara bagian mana saja yang rata-rata biaya kuliahnya paling tinggi. Informasi yang ditampilkan terbagi menjadi 2 kelompok, yaitu instate berlaku untuk pelajar dari dalam kota/negara bagian tersebut dan outstate, biaya untuk pelajar dari kota/luar negara bagian.
names(tuition_cost)[1] <- "school"
tcost <- tuition_cost %>%
select(school, state, in_state_tuition, out_of_state_tuition) %>%
group_by(state) %>%
mutate(instate_tuition = mean(in_state_tuition),
outstate_tuition = mean(out_of_state_tuition)) %>%
ungroup() %>%
pivot_longer(-c(state, school),
names_to = "metric") %>%
filter(metric != "in_state_tuition") %>%
filter(metric != "out_of_state_tuition") %>%
mutate(text = paste(comma(round(value,2)), "USD")) %>%
head(20)
tcost_plot <- ggplot(tcost, aes(x = value,
y = reorder(state, value),
text = text)) +
geom_col(aes(fill = metric), position = "dodge") +
labs(title = "The Amount You Must Prepare For Having Collage in USA",
subtitle = "Based on State" ,
x = "Cost",
y = "State") +
theme(legend.title = element_text(size = 9)) +
theme_minimal() +
theme(plot.background = element_rect(fill = "#fcf8f5")) +
scale_fill_manual(labels = c("In State", "Out of State"),
values = c("#9eb8ac", "#637ec2"))
ggplotly(tcost_plot, tooltip = "text") %>%
config(displayModeBar = F)Mengacu pada visualisasi di atas, diperoleh informasi bahwa New York adalah kota dengan biaya sekolah termahal. Selanjutnya, kita akan menampilkan rekomendasi universitas di suatu kota dengan rata-rata biaya yang paling terjangkau, tanpa tempat tinggal dari universitas, tipe sekolah public, dan proses kuliah 4 tahun. Dalam kasus ini, kita memilih negara bagian Texas yang akan ditampilkan rekomendasi universitas/sekolah. Pada tahap berikut, kita juga memberi perlakuan terhadap nilai NA, yakni menggantinya dengan karakter “Unavailable”.
names(tuition_cost)[1] <- "school"
schoolrec <- tuition_cost %>%
mutate(room_and_board = replace_na(room_and_board, "Unavailable")) %>%
filter(state == "Texas",
type == "Public",
room_and_board == "Unavailable",
degree_length == "4 Year") %>%
select(-c(in_state_tuition, in_state_total)) %>%
arrange((out_of_state_total))
schoolrec2 <- schoolrec %>%
mutate(school = as.character(school)) %>%
mutate(school = factor(school, levels = c(schoolrec$school[1], schoolrec$school[2], schoolrec$school[3], schoolrec$school[4], schoolrec$school[5])))
hchart(schoolrec2, "column",
hcaes(y = out_of_state_total, x = school, group = school),
borderWidth = 1,
borderColor = "#050000",
pointWidth = 25) %>%
hc_yAxis(title = list(text = "Total Tuition", style = "bold"),
labels = list(color = "#f542e0")) %>%
hc_xAxis(title = list(text = "School", style = "bold"),
labels = list(color = "#f50c0c")) %>%
hc_title(text = "School Recommendation",
style = list(color = "#1a451f", position = "center")) %>%
hc_subtitle(text = "In New York, Private, No Room and Board, 2 Years") %>%
hc_legend(FALSE) %>%
hc_add_theme(hc_theme_gridlight())make_world_better_percent yang menjelaskan keyakinan mereka untuk bisa membuat dunia lebih baik. Lalu variabel tersebut juga akan disandingkan dengan pendapatan yang akan diperoleh di awal karir/setelah lulus kuliah.
names(salary_potential)[2] <- "school"
salary_potential <- salary_potential %>%
drop_na()
selfcon <- salary_potential %>%
filter(state_name == "Texas") %>%
select(-c(stem_percent, mid_career_pay, state_name)) %>%
mutate(earlywage = early_career_pay / 1000) %>%
pivot_longer(-c(rank, school, early_career_pay),
names_to = "metric") %>%
mutate(value = ifelse(metric == "make_world_better_percent", value, -1*value),
text = paste(abs(value))) %>%
arrange(school, rank) %>%
head(20)
breaks_values <- pretty(selfcon$value)
selfcon_plot <- ggplot(selfcon, aes(y = value, x = school, fill = metric, text = text)) +
geom_bar(stat = "identity") +
coord_flip() +
scale_y_continuous(breaks = breaks_values,
labels = abs(breaks_values)) +
labs(title = "Self Confidence of Alumni",
subtitle = "From Top Ranked School",
x = "School",
y = "Value",
fill = NULL) +
theme_classic()+
theme(legend.position = "bottom") +
# scale_fill_discrete(name = NULL, labels = c("Early Career Pay", "Self Confidence")) +
# MANUAL sm DISCRETE GA BISA DIGABUNG. BAPUK
scale_fill_manual(labels = c("Early Career Pay (k USD)", "Self Confidence (%)"),
values = c("#ff9a47", "#c3e6a1"))
ggplotly(selfcon_plot, tooltip = "text", sourceData = TRUE,
width = 900,
height = 400) %>%
config(displayModeBar = F)Visualisasi data membantu kita memahami data tabular secara menyeluruh. Dalam kasus sekolah/universitas di Amerika Serikat , kita bisa tahu ada beberapa kota yang termasuk mahal untuk dijadikan destinasi studi. Di sisi lain, ini juga bisa menjadi ancang-ancang bagi para pelajar yang ingin meneruskan studi di Negeri Paman Sam untuk bisa menyiapkan dana seberapa banyak agar bisa belajar dengan baik. Terlebih lagi, kita bisa mengetahui seberapa menjanjikan suatu almamater universitas dalam meningkatkan kepercayaan diri alumnus dan peluang gaji setelah lulus masa studi.Tingkat kepercayaan diri alumnus dan nilai gaji yang diperoleh di awal karir cenderung berada pada range nilai yang berdekatan, artinya kedua variabel ini bisa disebut linear/berjalan beriringan.
Namun perlu dipahami bahwa visualisasi ini tidak bersifat rigid. Semuanya dapat disesuaikan dengan kebutuhan, target, dan kelengkapan variabel dari data yang digunakan. Tujuan penting dari visualisasi data adalah untuk menyajikan informasi dengan lebih menarik dan terstruktur, juga memberi rekomendasi tertentu kepada target audience.