Data visualization using ggplot2 and plotly in R

Halima Tusyakdiah
3 min readApr 11, 2019

--

Assalamualaikum Warahmatullahi Wabarakatuh

Pada kesempatan ini saya akan membuat suatu animasi bergerak menggunakan packages ggplot2 dan plotly. ggplot2 adalah salah satu paket tidyverse paling populer digunakan untuk visualisasi data, sintaksinya yang konsisten dan efisiensi dapat digunakan untuk membuat visualisasi data yang berkualitas tinggi. Jika ingin lebih menghidupkan data dengan tampilan plot lebih menarik dapat menggunakan packages plotlysehingga grafik ggplot2 berubah menjadi grafik plotly dengan animasi plot bergerak.

Data yang akan digunkan dapat didownload disini

Data dengan nama gapminder.xlsx memiliki 4 sheet, kita akan menggabungkan gdp, population, years, life Expectancy, dan region menjadi satu tampilan dataset. Maka kita akan menggabungkan 4 sheet tersebut menjadi bentuk data panel.

Let’s create an animated visualization of the data panel

install package openxlsx untuk meng-input data excel.

library(openxlsx)

memasukkan data gdp (sheet 1) ke R

#input data 
gapminder1 <- read.xlsx("D:\\semester 4\\Data Visualisasi\\uts\\gapminder.xlsx", sheet = 1, startRow = 1, colNames = TRUE)
View(gapminder1)

mengambil data baris kesatu yaitu variabel country, defenisikan sebagai country.vec

#mengambil varibel Country name
country.vec <- gapminder1 [,1]
head(country.vec)

buat perulangan dari data ke 1–170. Kemudian lakukan replikasi negara sebanyak 47 kali sesuai lama tahun yang digunaan yaitu dari tahun 1970–2016

#membuat pengulangan variabel panel (replikasi)
country_panel <- c()
for (i in 1:170) {
x = rep(country.vec[i], 47)
country_panel <- append(country_panel, x)
}
View(country_panel)

buat vektor replikasi dari tahun 1970–2016 sebanyak 170 negara

years_panel <- rep(1970:2016, 170)
head(years_panel)

mengambil data variabel gdp untuk 170 negara, lalu transpose menggunakan syntax x=t(x) karena bentuk awalnya berupa kolom akan dijadikan berbentuk baris

gdp_panel <- c()
for (i in 1:170) {
x = gapminder1[i,]
x = x[-c(1:3)]
x = t(x)
gdp_panel <- append(gdp_panel, x)
}
head(gdp_panel)

Proses ini juga akan dilakukan pada variabel pop, life, dan region dengan cara yang sama sesuai sheet masing-masing

memasukkan data populasi (sheet 2) ke R

gapminder2 <- read.xlsx("D:\\semester 4\\Data Visualisasi\\uts\\gapminder.xlsx", sheet = 2, startRow = 1, colNames = TRUE)
View(gapminder1)

buat vektor pop_panel diambil dari data kolom ketiga yaitu variabel Continent, lakukan replikasi sebanyak 170 kemudian transpose

pop_panel <- c()
for (i in 1:170) {
x = gapminder2[i,]
x = x[-c(1:3)]
x = t(x)
pop_panel <- append(pop_panel, x)
}
head(pop_panel)

memasukkan data life (sheet 3) ke R

gapminder3 <- read.xlsx("D:\\semester 4\\Data Visualisasi\\uts\\gapminder.xlsx", sheet = 3, startRow = 1, colNames = TRUE)
View(gapminder3)

buat vektor life_panel diambil dari data kolom ketiga yaitu variabel Continent, lakukan replikasi sebanyak 170 kemudian transpose

life_panel <- c()
for (i in 1:170) {
x = gapminder3[i,]
x = x[-c(1:3)]
x = t(x)
life_panel <- append(life_panel, x)
}
head(life_panel)

memasukkan data region(sheet 4) ke R

gapminder4 <- read.xlsx("D:\\semester 4\\Data Visualisasi\\uts\\gapminder.xlsx", sheet = 4, startRow = 1, colNames = TRUE)
View(gapminder4)

buat vektor region.vec diambil dari data kolom enam yaitu variabel Continent, lakukan replikasi sebanyak 170 kemudian transpose

region.vec <- gapminder4 [,6]
head(region.vec)

Kemudian lakukan replikasi negara sebanyak 47 seperti country.vec

region_panel <- c()
for (i in 1:170) {
x = rep(region.vec[i], 47)
region_panel <- append(region_panel, x)
}
View(region_panel)

Kita sudah mempunyai 6 vektor, yaitu: country_panel, years_panel, gdp_panel, pop_panel, life_panel, dan region_panel. Maka kita akan menggabungkan 6 vektor tersebut menjadi 1 file dengan cara membuat data frame

buat data frame untuk menggabungkan 6 vektor tersebut

#membuat data frame 
gapminder_frame <- data.frame(region_panel,country_panel, years_panel, gdp_panel, pop_panel, life_panel)
View(gapminder_frame)
Visualisasi gapminder_frame

kemudian kita kan membuat visualisasi data berbentuk animasi plot bergerak

install packages ggplot2 dan plotly

library(plotly)
library(ggplot2)

ganti nama variabel agar lebih jelas dan mudah dimengerti

Gross_Domestic_Product= log(gdp_panel)
Life_Expectancy= life_panel
Country=country_panel
Region=region_panel
years=years_panel

buat plot menggunakan ggplot dari data frame yang telah dibuat, gunakan “Gross_Domestic_Product” sebagai axix x, “life_Expectancy” sebagai axis y, pemberian warna berdasarkan “Country”, ukurannya (size) berdasarkan “pop_panel”, dan bentuk atau shape berdasarkan “Region”. Lalu frame-nya berdasarkan tahun sehingga akan bergerak dari tahun ke tahun

gap <- ggplot(gapminder_frame, aes(x=Gross_Domestic_Product, y=Life_Expectancy, color = Country)) + geom_point(aes(shape = Region,size = pop_panel,frame = years))
gap
ggplotly(gap)

Hasil animasi plot bergeraknya akan terlihat seperti gambar berikut

Visualisasi Data Panel

Untuk tampilan lengkapnya dapat dilihat di https://youtu.be/O0JWcWdlh4Q

--

--

Halima Tusyakdiah
Halima Tusyakdiah

Written by Halima Tusyakdiah

Statistics student at Islamic University of Indonesian

No responses yet