Visualisasi data dengan Peta Heat Map

By | November 8, 2022
1,586 Views

Ngomongin olah data dengan visualisasi akan sangat menarik jika disajikan dalam sebuah peta. Visualisasi data yang membentuk peta berasal dari format geojson yang berisi koordinat longitudinal dan latitude. Visualisasi data dengan peta Heat Map menggunakan ggplot seperti biasanya.

Format geojson Indonesia bisa kalian peroleh di http://www.info-geospasial.com/2015/10/data-shp-seluruh-indonesia.html tapi bila kalian ingin langsung download di https://github.com/superpikar/indonesia-geojson

Package ggplot

Untuk membuat peta menggunakan ggplot sangat mudah, ketika sudah loading geojson, langsung diubah ke tidy untuk didapatkan koordinat x dan y serta groupnya dengan nama variabel baru yaitu spdf2

library(geojsonio)
library(ggplot2)
library(broom)


spdf <- geojson_read("indonesia-geojson/indonesia-edit.geojson",  what = "sp")
spdf2  = tidy(spdf)

ggplot() +
  geom_polygon(data = spdf2, 
               aes( x = long, y = lat, group = group),
               color="black",
               size=0.1,
               fill='grey') +
  theme_void() +
  labs(title = "Peta", 
       subtitle = "Negara Indonesia", 
       caption = "Data source: bakosurtanal", 
       x = "longitudinal", 
       y = "latitude")+
  coord_map()

Peta indonesia diatas masih versi yang lama, yaitu terdiri dari 33 provinsi, yuk kita cek

daftar.provinsi = data.frame(REGION=toupper(spdf@data$state))
daftar.provinsi

Berikut data nama provinsi pada peta diatas

                REGION
1                 ACEH
2       SUMATERA BARAT
3           YOGYAKARTA
4       SUMATERA UTARA
5      BANGKA-BELITUNG
6     IRIAN JAYA BARAT
7           JAWA TIMUR
8     KALIMANTAN BARAT
9   KALIMANTAN SELATAN
10    KALIMANTAN TIMUR
11      KEPULAUAN RIAU
12             LAMPUNG
13              MALUKU
14        MALUKU UTARA
15 NUSA TENGGARA BARAT
16 NUSA TENGGARA TIMUR
17               PAPUA
18                RIAU
19    SULAWESI SELATAN
20            BENGKULU
21     SULAWESI TENGAH
22      SULAWESI UTARA
23   SULAWESI TENGGARA
24                BALI
25              BANTEN
26           GORONTALO
27        JAKARTA RAYA
28               JAMBI
29          JAWA BARAT
30         JAWA TENGAH
31   KALIMANTAN TENGAH
32      SULAWESI BARAT
33    SUMATERA SELATAN

Walaupun masih 33 provinsi itu nanti kita update lagi jikalau ada yang terbaru.

Peta Range UMR Selindo

Nah kita akan memvisualisasikan range UMR selindo, melalui Visualisasi data dengan Peta Heat Map dapat menggambarkan secara visual provinsi yang mempunyai UMR tertinggi. Data tersebut bisa kita ambil di https://www.kaggle.com/datasets/linkgish/indonesian-salary-by-region-19972022 mulai rentang tahun 1997 sampai 2022 lho.

Langsung saja kita akan visualisasikan UMR tahun 2022

salary.provinsi = read.csv("indonesia salary region/Indonesian Salary by Region (1997-2022).csv")
salary.2022 = salary.provinsi %>% filter(YEAR==2022)

dengan hasil sebagai berikut

                 REGION  SALARY YEAR
1                  ACEH 3166460 2022
2        SUMATERA UTARA 2522609 2022
3        SUMATERA BARAT 2512539 2022
4                  RIAU 2938564 2022
5                 JAMBI 2649034 2022
6      SUMATERA SELATAN 3144446 2022
7              BENGKULU 2238094 2022
8               LAMPUNG 2440486 2022
9  KEP. BANGKA BELITUNG 3264881 2022
10            KEP. RIAU 3050172 2022
11          DKI JAKARTA 4452724 2022
12           JAWA BARAT 1841487 2022
13          JAWA TENGAH 1813011 2022
14        DI YOGYAKARTA 1840951 2022
15           JAWA TIMUR 1891567 2022
16               BANTEN 2501203 2022
17                 BALI 2516971 2022
18  NUSA TENGGARA BARAT 2207212 2022
19  NUSA TENGGARA TIMUR 1975000 2022
20     KALIMANTAN BARAT 2434328 2022
21    KALIMANTAN TENGAH 2922516 2022
22   KALIMANTAN SELATAN 2906473 2022
23     KALIMANTAN TIMUR 3014497 2022
24     KALIMANTAN UTARA 3016738 2022
25       SULAWESI UTARA 3310723 2022
26      SULAWESI TENGAH 2390739 2022
27     SULAWESI SELATAN 3165876 2022
28    SULAWESI TENGGARA 2710595 2022
29            GORONTALO 2800580 2022
30       SULAWESI BARAT 2678863 2022
31               MALUKU 2619312 2022
32         MALUKU UTARA 2862231 2022
33          PAPUA BARAT 3200000 2022
34                PAPUA 3561932 2022
35            INDONESIA 2644709 2022

Operasi Join

Operasi selanjutnya yaitu join antara daftar.provinsi dan salary.2022 dengan operasi left_join

See also  Pengantar Metode Numerik

 

cek = left_join(daftar.provinsi,salary.2022,by="REGION")
cek

ternyata ada beberapa nama provinsi di salary.2022 yang tidak cocok dengan daftar.provinsi yaitu

            REGION SALARY YEAR
1       YOGYAKARTA     NA   NA
2  BANGKA-BELITUNG     NA   NA
3 IRIAN JAYA BARAT     NA   NA
4   KEPULAUAN RIAU     NA   NA
5     JAKARTA RAYA     NA   NA

Sekarang kita ganti saja nama provinsi di salary.2022 menjadi seperti berikut

salary.2022 = salary.2022 %>% mutate(REGION=ifelse(REGION=="DI YOGYAKARTA","YOGYAKARTA",REGION))
salary.2022 = salary.2022 %>% mutate(REGION=ifelse(REGION=="KEP. BANGKA BELITUNG","BANGKA-BELITUNG",REGION))
salary.2022 = salary.2022 %>% mutate(REGION=ifelse(REGION=="KEP. RIAU","KEPULAUAN RIAU",REGION))
salary.2022 = salary.2022 %>% mutate(REGION=ifelse(REGION=="DKI JAKARTA","JAKARTA RAYA",REGION))
salary.2022 = salary.2022 %>% mutate(REGION=ifelse(REGION=="PAPUA BARAT","IRIAN JAYA BARAT",REGION))

Sekalian diurutkan juga Salary dari besar ke kecil

salary.2022 = salary.2022 %>% arrange(desc(SALARY))

Selanjutnya membuat color gradient dari hijau ke kuning

colfunc <- colorRampPalette(c("green", "yellow"))
salary.2022$kategori = colfunc(nrow(salary.2022))

gabungkan antara daftar.provinsi dan salary.2022

daftar.provinsi = left_join(daftar.provinsi,salary.2022,by="REGION")
daftar.provinsi$id = c(1:nrow(daftar.provinsi))

kemudian kita lakukan operasi join lagi dari daftar.provinsi dan spdf2

spdf2$id = as.numeric(spdf2$id)
spdf2 = inner_join(spdf2,daftar.provinsi,by="id")

Sekarang kita visualisasikan kedalam peta

ggplot() +
  geom_polygon(data = spdf2,
               aes( x = long, y = lat, group = group),
               color="black",size=0.1,fill=spdf2$kategori) +
  labs(title = "Gaji UMR Tahun 2022", 
       subtitle = "Selindo", 
       caption = "Data source: BPS", 
       x = "longitudinal", 
       y = "latitude")+
  #theme_void() +
  coord_map()

dari peta dapat ditunjukan

  1. bahwa jawa timur, DIY, Jateng mempunyai UMR yang terkecil.
  2. Kalbar merupakan daerah kalimantan yang mempunyai UMR terendah dibandingkan dengan provinsi yang ada di pulau kalimantan

Perkembangan tahun 2000 cukup berbeda dengan 2022