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)
Legend

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.