
Veri Hazırlık Aşaması
Sankey genellikle ağ içerisinde yer alan belli birimler arasındaki geçişkenliği göstermek amacıyla kullanılmaktadır. Bu yazımda örnek olarak Türkiye’de coğrafi bölgeler arasıda göç akımlarını inceleyeceğim. TÜİK’in websitesindeki veritabanları bölümünde iller arasıdaki göç matrisi, yıl bazında oluşturulup indirilebilmektedir.
library(readxl)
#Verilerin olduğu excel dosyasının içe aktarılması
nuts3_goc <- read_excel("nuts3_goc.xlsx", sheet = "data")
nuts3_goc$YIL <- as.integer(nuts3_goc$YIL)
#İBBS tipolojisi ile eşleştirme yapmak için
trkod <- read_excel("trkod.xlsx")
´nuts3_goc´ dataframe objesinde yer alan göç matrisinin görünümü aşağıdaki şekildedir.
head(nuts3_goc)
## # A tibble: 6 x 83
## YIL FROM_IL Adana Adıyaman Afyonkarahisar Ağrı Aksaray Amasya Ankara
## <int> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2013 Adana 0 811 333 243 455 91 3420
## 2 2013 Adıyam~ 975 0 104 104 57 67 817
## 3 2013 Afyonk~ 269 46 0 97 89 53 1837
## 4 2013 Ağrı 243 125 149 0 59 94 2376
## 5 2013 Aksaray 421 72 118 41 0 40 1806
## 6 2013 Amasya 77 32 62 63 27 0 1785
## # ... with 74 more variables: Antalya <dbl>, Ardahan <dbl>, Artvin <dbl>,
## # Aydın <dbl>, Balıkesir <dbl>, Bartın <dbl>, Batman <dbl>,
## # Bayburt <dbl>, Bilecik <dbl>, Bingöl <dbl>, Bitlis <dbl>, Bolu <dbl>,
## # Burdur <dbl>, Bursa <dbl>, Çanakkale <dbl>, Çankırı <dbl>,
## # Çorum <dbl>, Denizli <dbl>, Diyarbakır <dbl>, Düzce <dbl>,
## # Edirne <dbl>, Elazığ <dbl>, Erzincan <dbl>, Erzurum <dbl>,
## # Eskişehir <dbl>, Gaziantep <dbl>, Giresun <dbl>, Gümüşhane <dbl>,
## # Hakkari <dbl>, Hatay <dbl>, Iğdır <dbl>, Isparta <dbl>,
## # İstanbul <dbl>, İzmir <dbl>, Kahramanmaraş <dbl>, Karabük <dbl>,
## # Karaman <dbl>, Kars <dbl>, Kastamonu <dbl>, Kayseri <dbl>,
## # Kilis <dbl>, Kırıkkale <dbl>, Kırklareli <dbl>, Kırşehir <dbl>,
## # Kocaeli <dbl>, Konya <dbl>, Kütahya <dbl>, Malatya <dbl>,
## # Manisa <dbl>, Mardin <dbl>, Mersin <dbl>, Muğla <dbl>, Muş <dbl>,
## # Nevşehir <dbl>, Niğde <dbl>, Ordu <dbl>, Osmaniye <dbl>, Rize <dbl>,
## # Sakarya <dbl>, Samsun <dbl>, Şanlıurfa <dbl>, Siirt <dbl>,
## # Sinop <dbl>, Şırnak <dbl>, Sivas <dbl>, Tekirdağ <dbl>, Tokat <dbl>,
## # Trabzon <dbl>, Tunceli <dbl>, Uşak <dbl>, Van <dbl>, Yalova <dbl>,
## # Yozgat <dbl>, Zonguldak <dbl>
´nuts3_goc´ dataframe objesinde belirli bir yılda her bir ilden diğer ile olan göç sayısı gösterilmektedir. Söz konusu matristeki (R’daki matris mantığında değil) göç veren iller satır olarak, göç alan iller ise kolon olarak gösterilmektedir. Fakat R ile ilgili paketlerin fonksiyonları genellikle tidy yani unpivot durumunda olan verileri girdi olarak kabul etmektedir. Bu yüzden ´nuts3_goc´ objesininde tidyr
paketi ile gerekli dönüşüm işlemlerinin yapılması gerekmektedir.
library(tidyr)
library(dplyr)
# Verilerde temizlik ve hazırlık işlemleri
nuts3_goc_temiz <- nuts3_goc %>% gather(TO_IL, SAYI, 4:ncol(nuts3_goc)) %>%
left_join(trkod, by = c("FROM_IL" = "Duzey_3_Ad"))
colnames(nuts3_goc_temiz)[6:ncol(nuts3_goc_temiz)] <- paste("FROM_", colnames(nuts3_goc_temiz)[6:ncol(nuts3_goc_temiz)], sep="")
nuts3_goc_temiz <- nuts3_goc_temiz %>% left_join(trkod, by = c("TO_IL" = "Duzey_3_Ad"))
colnames(nuts3_goc_temiz)[13:ncol(nuts3_goc_temiz)] <- paste("TO_", colnames(nuts3_goc_temiz)[13:ncol(nuts3_goc_temiz)], sep="")
# Coğrafi Bölge Ölçeğinde gruplamanın yapılması ve ağ yapısının oluşturulması
goc_data <- nuts3_goc_temiz %>% group_by(YIL, FROM_Cografi, TO_Cografi) %>%
summarise(SAYI = sum(SAYI)) %>%
filter(FROM_Cografi != TO_Cografi) %>%
ungroup()
# Verilerin net göç verisine dönüştürülmesi
goc_data$NET_SAYI <- NA
for (i in unique(goc_data$YIL)){
for (j in unique(goc_data$FROM_Cografi)){
for (m in unique(goc_data$TO_Cografi)){
goc_data$NET_SAYI[goc_data$YIL == i & goc_data$FROM_Cografi == j &
goc_data$TO_Cografi == m] <- goc_data$SAYI[goc_data$YIL == i & goc_data$FROM_Cografi == j &
goc_data$TO_Cografi == m] -
goc_data$SAYI[goc_data$YIL == i & goc_data$FROM_Cografi == m &
goc_data$TO_Cografi == j]
}
}
}
# Göç verilerinde yalnızca pozitif değerlere sahip olan bölgeleri almak verilen net göçü görmek için yeterlidir
goc_data <- goc_data %>% filter(NET_SAYI > 0) %>% select(-SAYI) %>%
filter(YIL == 2018)
# Her bir coğrafi bölgeye indeks numarasının verilmesi
index_nums <- data.frame(bolge = unique(nuts3_goc_temiz$FROM_Cografi), FROM_index = c(0:6),
TO_index = c(7:13))
# Indeks numaralarının data frame e yerleştirilmesi
goc_data <- goc_data %>%
left_join(select(index_nums, -TO_index), by = c("FROM_Cografi" = "bolge")) %>%
left_join(select(index_nums, -FROM_index), by = c("TO_Cografi" = "bolge")) %>%
arrange(FROM_index, TO_index)
library(plotly)
library(paletteer)
# Sankey diyagramının oluşturulması
plot_ly(
type = "sankey",
orientation = "h",
valuesuffix = " Kişi",
valueformat = ".0f", #,.2r #.0f
node = list(
label = c(as.character(index_nums$bolge),as.character(index_nums$bolge)),
color = c(paletteer_d(ggsci, default_igv, 7), paletteer_d(ggsci, default_igv, 7)),
pad = 15,
thickness = 20,
line = list(
color = "black",
width = 0.5
)
),
link = list(
source = as.vector(goc_data$FROM_index),
target = as.vector(goc_data$TO_index),
value = as.vector(goc_data$NET_SAYI),
value = as.vector(goc_data$NET_SAYI)
)
) %>%
layout(
title = "Türkiye'de Coğrafi Bölgeler Arası Göç Akımları",
font = list(
size = 10
)
)
Yukarıdaki grafikte yalnızca 2017 yılındaki coğrafi bölgeler arasındaki net göç akımları görülmektedir. Aşağıda yer alan Shiny uygulmasından diğer yıllara ilişkim gösterimde otomatik olarak hesaplanıp oluşturulmaktadır.