Sunburst Diyagramı özellikle hiyerarşik dataların gösteriminde oldukça faydalı bir grafik. R’da Sunburst Diyagramı çizdirmek için çeşiti yollar var. Bunlardan bazıları plotly
paketi kullanımı, ggplot2
paketi kullanımı ve bir diğeri ise sunburstR
paketi kullanımı.
Bu öğreticide sunburstR
paketi kullanarak ülkedeki birçok belediyenin de yapması gerektiğini düşündüğüm veri paylaşım sistemini oluşturan Istanbul Büyüksehir Belediyesi’nin veri tabanından aldığım, ilçelerden gelen ihbar sayısını gösteren veri setini kullanarak basit bir sunburst diyagramı oluşturacağım.
Veri tabanından aldığım veri setine ek olarak bir de ilçelerin yerel yönetimlerinin bağlı olduğu siyasi partileri 31 Mart 2019 seçim sonuçlarına bağlı kalarak ekledim ve bu yol ile istediğim hiyerarşik veri setini oluşturdum.
Öncelikle kullanacağım kütüphaneleri CRAN’dan çağırıyorum.
library(tidyverse) #data düzenlemesi için
library(d3r) #nested veri oluşturmak için
library(sunburstR) #sunburst diyagramı çizdirmek için
ihbar=read.csv("ihbar.csv",header=T,sep=";")
head(ihbar)
## ılce ıhbar oran Parti
## 1 Adalar 11 100,00% CHP
## 2 Arnavutkoy 81 100,00% AKP
## 3 Atasehir 45 100,00% CHP
## 4 Avcilar 54 100,00% CHP
## 5 Bagcilar 59 100,00% AKP
## 6 Bahcelievler 46 100,00% AKP
ihbar_new=ihbar%>%select(Parti,ılce,ıhbar)%>%arrange(Parti,ıhbar)%>%data.frame(stringsAsFactors = FALSE)
data=data.frame(level=ihbar_new$Parti,level1=ihbar_new$ılce,size=ihbar_new$ıhbar,stringsAsFactors = FALSE)
data$level=as.character(data$level)
data$level1=as.character(data$level1)
head(data)
## level level1 size
## 1 AKP sile 17
## 2 AKP catalca 24
## 3 AKP Bayrampasa 25
## 4 AKP Zeytinburnu 25
## 5 AKP Sultanbeyli 29
## 6 AKP Tuzla 33
Bu data düzenlemesindeki kritik nokta datayı nested hale getirmeden, datanın kolon isimlerini level ve level1 olarak değiştirmek. Ardından d3r
paketinin içindeki d3_nest
fonksiyonu yardımıyla yukarıdaki veri setini nested veri setine dönüştürüyoruz.
ihbar_nest <- d3_nest(data, value_cols = "size")
ihbar_nest
## {"children":[{"name":"AKP","children":[{"name":"sile","size":17,"colname":"level1"},{"name":"catalca","size":24,"colname":"level1"},{"name":"Bayrampasa","size":25,"colname":"level1"},{"name":"Zeytinburnu","size":25,"colname":"level1"},{"name":"Sultanbeyli","size":29,"colname":"level1"},{"name":"Tuzla","size":33,"colname":"level1"},{"name":"Sancaktepe","size":36,"colname":"level1"},{"name":"cekmekoy","size":38,"colname":"level1"},{"name":"Beyoglu","size":39,"colname":"level1"},{"name":"Gaziosmanpasa","size":39,"colname":"level1"},{"name":"Beykoz","size":41,"colname":"level1"},{"name":"Gungoren","size":45,"colname":"level1"},{"name":"Bahcelievler","size":46,"colname":"level1"},{"name":"Eyupsultan","size":46,"colname":"level1"},{"name":"Esenler","size":51,"colname":"level1"},{"name":"Basaksehir","size":52,"colname":"level1"},{"name":"Sultangazi","size":57,"colname":"level1"},{"name":"Bagcilar","size":59,"colname":"level1"},{"name":"Fatih","size":68,"colname":"level1"},{"name":"Kagithane","size":70,"colname":"level1"},{"name":"Arnavutkoy","size":81,"colname":"level1"},{"name":"Pendik","size":88,"colname":"level1"},{"name":"umraniye","size":94,"colname":"level1"},{"name":"uskudar","size":101,"colname":"level1"}],"colname":"level"},{"name":"CHP","children":[{"name":"Adalar","size":11,"colname":"level1"},{"name":"Bakirkoy","size":17,"colname":"level1"},{"name":"Besiktas","size":22,"colname":"level1"},{"name":"Sariyer","size":30,"colname":"level1"},{"name":"sisli","size":30,"colname":"level1"},{"name":"Beylikduzu","size":39,"colname":"level1"},{"name":"Maltepe","size":44,"colname":"level1"},{"name":"Atasehir","size":45,"colname":"level1"},{"name":"Buyukcekmece","size":48,"colname":"level1"},{"name":"Avcilar","size":54,"colname":"level1"},{"name":"Kadikoy","size":57,"colname":"level1"},{"name":"Kartal","size":65,"colname":"level1"},{"name":"Kucukcekmece","size":77,"colname":"level1"},{"name":"Esenyurt","size":137,"colname":"level1"}],"colname":"level"},{"name":"MHP","children":[{"name":"Silivri","size":67,"colname":"level1"}],"colname":"level"}],"name":"root"}
Nested veri setimizi de sunburst
fonksiyonunu kullanarak interaktif diyagramımızı oluşturuyoruz.
sunburst(ihbar_nest , width="100%", height=400)
Bu grafiğe göre Istanbul Büyükşehir Belediyesi’ne gelen ihbarların %61.8’i AKP’ye bağlı ilçelerden, %34.7’si CHP’ye bağlı ilçelerden, %3.44’ü ise MHP’ye bağlı ilçeden gelmiştir. Belediyeye en fazla ihbarda bulunan ilçe %7.04 ile CHP’ye bağlı Esenyurt olurken, Üsküdar %5.19 ile AKP’ye bağlı ilçeler arasında belediyeye en fazla ihbarda bulunan ilçe olmuştur. Belediyeye en az ihbarı yapan ilçe ise %0.565 ile CHP’ye bağlı Adalar belediyesi olmuştur.