Using “ggplot2” and “plotly” with R on Gapminder Dataset

Ria Amelia
9 min readApr 12, 2019

--

Assalamuallaikum Wr.Wb…

Haiiii teman-teman, welcome back di blog Ria Amelia. Mungkin kalian sebagian ada yang sudah tau dan ada yang belum tau bagaimana cara menvisualisasikan sebuah data sehingga mendapatkan bentuk visualisasi yang bagus dan keren kan..? :). Okeyy kali ini kita akan membahas tentang data visualisasi dengan menggunakan packages “plotly” dan packages “ggplot2” yang terdapat dalam software Rstudio dan share cara pengolahannya. Apakah kalian tau apa itu data visualisasi…??? Sebelum ke pembuatan data visualisasi, mari kita cari tau apa itu Visualization Data?🧐

— — — — — — — — INTRODUCTION — — — — — — — —

What is Visualization Data?

Contoh visualisasi data

Disamping ini adalah salah satu bentuk dari data visualisasi connections 3.200 airports. Maka dapat diketahui bahwa Data Visualisasi adalah teknik menyajikan data secara visual melalui grafik, chart , peta agar tampilan menarik namun tetap informatif. Alasan ada nya data visualisasi adalah tidak lepas dari “kebosanan” dan “monoton” apabila data disajikan dalam bentuk baris dan kolom seperti dalam tabel tabel.

Dalam membuat visualisasi data dapat dilakukan dengan menggunakan beberapa software. Berikut ini adalah penggunaan visualisasi data dengan software RStudio. Untuk dapat menjalankan visualisasi nya maka di perlukan packages yang mendukung, yaitu :

Packages ggplot2

ggplot2 merupakan salah satu packages untuk visualisasi dalam R, ggplot2 digunakan untuk visualisasi data yang elegan menggunakan Grammar of Graphics. Sebuah sistem untuk secara deklaratif membuat grafik, berdasarkan pada “The Grammar of Graphics”. ggplot2 berfungsi seperti data dalam format ‘panjang’, yaitu, kolom untuk setiap dimensi, dan baris untuk setiap pengamatan. packages ggplot2 dapat membantu anda dalam membuat visualisasi data.

Packages plotly

plotly merupakan salah satu packages untuk membantu dalam visualisasi yang tersedia di R. Packages plotly digunakan untuk membuat grafik web interaktif melalui perpustakaan grafik JavaScript open source “plotly.js”. Memudahkan dalam menerjemahkan grafik “ggplot2”ke versi interaktif berbasis web dan membuat visualisasi berbasis web kustom langsung dari R. Setelah diunggah ke akun “plotly”, grafik dari data atau “plotly” dapat dilihat di web.

Contoh Visualisasi Data Gapminder

Pada artikel ini kita akan bekerja pada data Gapminder yang dapat di download disini. Data Gapminder merupakan data Microsoft Excel yang terdiri dari 4 sheet yaitu gdp, population, life expectancy, dan region seperti contoh untuk sheet 1 dibawah ini.

Data Gapminder

Dalam sheet 1 (GDP), sheet 2 (Population), dan sheet 3 (Life expectancy) terdiri dari 170 Negara dimana kolom tahunnya dari tahun 1970 hingga tahun 2016 atau sebanyak 47 Tahun, sedangkan untuk sheet 4 (Region) terdiri dari 186 Negara dan terdiri dari beberapa Benua. Untuk hasil akhirnya dari 4 sheet ini akan digabungkan menjadi satu sheet yang membentu suatu data panel.

Selanjutnya, dilakukan running script dalam aplikasi R. Pertama untuk membuat visualisasi data buka software RStudio kemudian install packages yang diperlukan seperti pada script dibawah ini.

#Menginstall packages yang diperlukan
install.packages(openxlsx)
install.packages(plotly)
install.packages(ggplot2)
#Memanggil packages dalam library
#packages membaca excel
library(openxlsx)
#packages visualisasi
library(plotly)
library(ggplot2)

Untuk library(openxlsx) berfungsi dalam memanggil data untuk bentuk Microsoft Excel. Library (plotly) digunakan untuk membuat grafik web interaktif. Sedangkan library(ggplot2) digunakan untuk visualisasi data yang elegan menggunakan Grammar of Graphics. Selanjutnya, membaca data atau menginput data gapminder ke dalam RStudio dengan script berikut ini :

#input data untuk sheet 1 di MS.Excel
gapminder <- read.xlsx("F://MATERI KULIAH UII//SEMESTER 6//Data Visualisasi//gapminder.xlsx", sheet = 1, startRow = 1, colNames = TRUE)
head(gapminder)

Pada script diatas, merupakan script untuk Input data gapminder yang ada dalam file local disk F. Lokasi file data gapminder ini tergantung masing-masing tempat penyimpanan data anda . Dalam script dituliskan gapminder yang merupakan variabel atau nama untuk memanggil data gapminder untuk di sheet =1 dimana isinya adalah gdp untuk semua kolom, startRow =1 yaitu dibuat dari baris pertama. Sehingga kita perlu membuat suatu vektor untuk masing-masing variabel Country name dan tahun yang ada dalam sheet 1. Untuk tahun akan dilakukan transpose untuk setiap masing-masing negara akan berulang sebanyak 47 tahun.

#Membuat Vector
country.vec <- gapminder[,1]

country.vec merupakan nama variabel dari data gapminder pada kolom pertama. Kemudian variabel country.vec akan dilakukan replikasi negara sebanyak negara yang ada, maka berikut ini script yang digunakan :

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

coutry_panel merupakan nama variabel untuk data panel country yang terdiri dari dari data 1 hingga 170. Dilakukan suatu perulangan dengan perulangan sebanyak 47 kali atau banyaknya tahun yang ada. Selanjutnya dibuat suatu perulangan untuk years atau tahun dari 1970 hingga 2016 sebanyak 170 kali atau sebanyak negara yang ada. Maka berikut ini script yang digunakan :

#mengambil data pada variabel tahun
years_panel <- rep(1970:2016, 170)

Kemudian mengambil data pada variabel gdp. Untuk mengambil data variabel gdp dalam 170 negara, maka dilakukan perintah transpose atau x=t(x)sehingga merubah bentuk awal yang berupa kolom kemudian dijadikan berbentuk baris. Maka, berikut ini script yang digunakan dalam mengambil variabelnya.

#mengambil data pada variabel gdp
gdp_panel <- c()
for (i in 1:170)
{
x = gapminder[i,]
x = x[-c(1:3)]
x = t(x)
gdp_panel <- append(gdp_panel,x)
}

gdp_panel merupakan nama variabel dari variabel gdp data panel untuk memudahkan pemanggilan dimana terdiri dari data 1 hingga data 170. Untuk x nya diambil dari data gapminder pada baris ke 1–170, tapi untuk kolomnya yg diambil adalah kolom ke 4 sehingga kolom 1 sampai 3 dihapus dan kemudian nilai x nya di transpose dari kolom ke baris. Lakukan yang sama pada sheet population, life, dan region.

Selanjutnya melakukan langkah yang sama seperti pada langkah gdp untuk sheet population, life, dan region. Input kembali data gapminder tetapi untuk sheet 2 atau variabel pop. gapminder1 merupakan nama untuk memanggil data gapminder yang berada di sheet = 2 yang berisi pop, startRow =1 yaitu dibuat dari baris pertama sehingga berikut ini script inputnya :

#mengambil data untuk sheet populasi
gapminder1 <- read.xlsx("F://MATERI KULIAH UII//SEMESTER 6//Data Visualisasi//UTS//gapminder.xlsx", sheet = 2, startRow = 1, colNames = TRUE)
head(gapminder1)

Selanjutnya membuat vektor pop_panel diambil dari data sheet 2 yaitu sheet populations dalam data gapminder , cara pengambilan variabel pop_panel sama seperti cara pengambilan variabel gdp_panel maka berikut ini script yang digunakan :

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

pop_panel merupakan nama variabel untuk memudahkan pemanggilan data pop_panel dimana terdiri dari data 1 hingga data 170. Untuk x nya diambil dari data gapminder pada baris ke-i, tapi untuk kolomnya yg diambil adalah kolom ke 4 sehingga kolom 1 sampai 3 dihapus dan kemudian nilai x nya di transpose dari kolom ke baris. pop_panel merupakan gabungan dari pop_panel dan x.

Selanjutnya, input kembali data gapminder tetapi untuk sheet 3 atau untuk sheet life. gapminder2 merupakan nama untuk memanggil data gapminder yang berada di sheet = 3 yang berisi life, startRow =1 yaitu dibuat dari baris pertama sehingga berikut ini script inputnya :

#mengambil data untuk sheet 3
gapminder2 <- read.xlsx("F://MATERI KULIAH UII//SEMESTER 6//Data Visualisasi//UTS//gapminder.xlsx", sheet = 3, startRow = 1, colNames = TRUE)
head(gapminder2)

Setelah melakukan input data untuk sheet 3 maka dilanjutkan dengan membuat vektor life_panel yang diambil dari data kolom ketiga yaitu variabel Continent, sehingga dilakukan replikasi sebanyak 170 kemudian dilakukan transpose, dengan menggunakan script berikut ini:

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

Langkah selanjutnya yaitu input kembali data gapminder tetapi untuk sheet 4 atau untuk sheet region . gapminder3 merupakan nama untuk memanggil data gapminder yang berada di sheet = 4 yang berisi region, startRow =1 yaitu dibuat dari baris pertama sehingga berikut ini script inputnya :

#mengambil variabel region
gapminder3 <- read.xlsx("F://MATERI KULIAH UII//SEMESTER 6//Data Visualisasi//UTS//gapminder.xlsx", sheet = 4, startRow = 1, colNames = TRUE)
head(gapminder3)

Selanjutnya setelah dilakukan input data sheet 4 maka membuat vektor region.vec diambil dari data kolom enam yaitu variabel Continent, lakukan replikasi sebanyak 170 kemudian transpose, menggunakan script:

#membuat vektor region
region.vec <- gapminder3 [,6]
head(region.vec)

Selanjutnya membuat variabel region_panel. merupakan nama variabel dari variabel region data panel yang terdiri dari data 1 hingga data 170. Untuk x nya merupakan perulangan dari data region sebanyak 47 kali atau sebanyak tahunnya. Maka, berikut ini script yang digunakan untuk membuat variabel region_panel :

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

Setelah selesai membuat masing-masing vektor maka didapatkan 6 vector hasil runningan script nya yaitu country_panel, years_panel, gdp_penel, pop_panel, life_panel, dan region_panel. Kemudian 6 vector tersebut akan digabungkan dalam satu variabel atau berbentuk tipe data frame. Karena untuk menjalankan packages ggplot2 data harus dalam bentuk data frame. Maka berikut ini script membuat data frame dengan nama variabel adalah gapminder_frame yang terdiri dari region_panel, country_panel, years_panel, gdp_penel, pop_panel, dan life_panel.

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

Maka berikut ini hasil output data frame dari variabel gapminder_frame :

Output gapminder_frame (data frame)

Selanjutnya kita akan membuat visualisasi ggplot dengan nama gap1 yang terdiri dari gapminder_frame dengan axis x atau sumbu x adalah log dari gdp_panel dan axis y atau sumbu y adalah life_panel dengan menggunakan script dibawah ini :

#membuat visual dengan plotly
gap1 <- ggplot(gapminder_frame, aes(x = log(gdp_panel), y = life_panel)) + geom_point()
gap1
Pola Hubungan log(gdp_panel) dan life_panel

Pada hasil output diatas, merupakan output yang memvisualisasikan pola hubungan antara log(gdp_panel) dan life_panel. Dari gambar diatas masih tidak didapatkan informasi apa pun didalamnya.

Maka selanjutnya akan dibuat suatu layer bergerak berdasarkan tahun yang dimulai dari tahun 1970 hingga 2016 perlu ditambahkan “aes(frame = years_panel)” pada geom_point dimana nama variabel yang digunakan adalah gap2 sehingga script yang digunakan yaitu seperti berikut ini :

gap2 <- ggplot(gapminder_frame, aes(x = log(gdp_panel), y = life_panel)) + geom_point(aes(frame = years_panel))
ggplotly(gap2)
Visualisasi data pertama

Pada hasil visualisasi diatas masih belum memiliki informasi yang detail karena masih belum bisa membedakan suatu data berdasarkan negara karena semua titik sama-sama berwarna hitam. Jika di perhatikan secara detail terdapat pergeseran yang sangat jauh atau spesifik, hal ini dikarenakan terdapat missing value dan diatasi menggunakan data simulasi. Maka untuk mempercantik tampilan plotly dari visualisasi data dapat menambahkan warna sesuai dengan country_panel, sehingga diberikan nama variabel yang baru yaitu gap3 (ditambahkan warna pada visualisasi) dengan menggunakan script berikut ini :

gap3 <- ggplot(gapminder_frame, aes(x = log(gdp_panel), y = life_panel, color = country_panel)) + geom_point(aes(frame = years_panel))
ggplotly(gap3)
Visualisasi data kedua

Pada hasil visualisasi data gapminder diatas, sudah dapat dibedakan sesuai warna yang berdasarkan negara atau country. Pada visualisasi data diatas masih terdapat kekurangan karena jumlah datanya yang terlalu besar membuat video visualisasinya lambat memperlihatkan proses visualisasi.

Untuk melihat hasil akhir nya maka diperlukan beberapa ketentuan dimana untuk visualisasi data terdiri dari hasil untuk bentuk output berikut ini :

  • Axis x (sumbu x)= gdp_panel
  • Axis y (sumbu y)= life_panel
  • Colour (warna plot)= country_panel
  • Size (ukuran plot)= pop_panel
  • Shape (bentuk plot)= region_panel by continent

Maka, digunakan script dengan nama variabel gap4 seperti berikut ini untuk memperlihatkan hasil dari ketentuan yang diberikan (hasil visualisasi data gapminder yang terakhir):

Script yang digunakan yaitu diberi nama variabel gap4 untuk memudahkan pembeda setiap visualisasi data yang dijalankan seperti berikut ini :

gap4 <- ggplot(gapminder_frame, aes(x = log(gdp_panel), y = life_panel, color = country_panel)) + geom_point(aes(shape = region_panel,size = pop_panel,frame = years_panel))
ggplotly(gap4)
Visualisasi data ketiga

Setelah hasil visual selesai maka langkah terakhir yang dilakukan adalah menyimpan data data frame yang terdiri dari dari region_panel, country_panel, years_panel, gdp_penel, pop_panel dan life_panel kedalam perangkat laptop dengan format csv. Maka berikut ini script yang digunakan :

#Menyimpan Data Frame Kedalam Perangkat Laptop
colnames(gapminder)<-c("Region","Country","Years","GDP","Population","Life")
setwd("F:\\MATERI KULIAH UII\\SEMESTER 6\\Data Visualisasi")
write.csv(gapminder_frame, file="Visualisasi.Gapminder.csv", row.names = TRUE)
gapminder.simpan<-data.frame(gapminder_frame)
gapminder.simpan

Pada script diatas, merupakan script untuk menyimpan data frame dalam bentuk csv, lokasi penyimpanan tergantung masing-masing tempat penyimpanan yang anda inginkan dan nama data csv tersebut juga tergantung keinginan nama yang anda berikan, sehingga jika telah disimpan dalam bentuk csv maka file nya akan ada dan menghasilkan output data dalam bentuk csv seperti pada gambar berikut ini :

Hasil output yang disimpan dalam bentuk csv

Untuk mengetahui bagaimana data yang digunakan, bentuk script pada R, ataupun bentuk hasil visualisasi data maka pembaca dapat meng-downloadnya di website github Ria-Amelia.

Referensi :

Susanto, E. (2015, Desember 4). Bermain dengan Visualisasi Data. Retrieved from kompasiana: https://www.kompasiana.com/edysusanto74/566153a0e7afbd841effbf5b/bermain-dengan-visualisasi-data (Diakses pada tanggal 11 april 2019)

Wikipedia. (2018, November 12). Visualisasi Data. Retrieved from Wikipedia: https://id.wikipedia.org/wiki/Visualisasi_data (Diakses pada tanggal 11 april 2019)

--

--