FIFA 19 Dashboard Veri Görselleştirme – Bölüm 1
Son dönemde yazmış olduğum ve geliştirmeye devam ettiğim FIFA 19 Dashboard çok ilgi gördü ve ilgi görmeye devam ediyor. Bu çalışmam ile alakalı geri dönüşlerde bulunan ve eleştiri belirten herkese çok teşekkür ederek başlamak istiyorum.
R programlama dilinin önemli kütüphanelerinden biri olan Shiny ile FIFA 19 verisini kullanarak bir dashboard tasarladım. Bu dashboard içerisinde temel olarak liglerin, takımların ve oyuncuların özet istatistiklerini, görselleştirmelerini ve karşılaştırmalarını görebilirsiniz. Ligler demişken de dashboard içerisinde üç adet lig bulunmaktadır bunlar; Bundesliga, La Liga ve Premier League. Ayrıca dashboard içerisindeki Scout sayfasında da oyunculara ait bilgiler bulabilirsiniz ve yapmış olduğum küçük bir oyunlaştırma ile FIFA 19 içerisinde yer alan oyuncuları kendi takımınıza transfer edebilirsiniz. Yalnız dikkatli olmakta fayda var sizlere ait 200 Milyon Euro bütçe bulunmakta. 🙂
FIFA Dash uygulamasına göz atmak istiyorsanız Kaggle linkinden ulaşabilirsiniz. Ayrıca dashboard’u beğenirseniz ve Kaggle hesabınız varsa Upvote (Beğen tuşu denilebilir) ile oy verirseniz sevinirim. 🙂
https://www.kaggle.com/ekrembayar/fifa-19-dashboard-with-r-shiny
Dashboard’un geliştirmeleri devam etmekte. Farklı monitör boyutlarında arayüzde kayma problemleri olabiliyor. Bu problem de HTML ve CSS yardımı ile çözülecektir. Arayüz düzeltmeleri ve geliştirmeleri de ayrıca devam ediyor. Muhtemelen 2020 İlkbaharı gibi dashboard son ve en iyi halini alacaktır. Dashboard gelişimini de aşağıdaki linklerden görebilirsiniz.
FIFA 19 Dashboard Versiyon 1.0.0.
FIFA 19 Dashboard Versiyon 2.0.0.
FIFA 19 Dashboard Versiyon 3.0.0.
FIFA 19 Dashboard Versiyon 4.0.0.
Veri Bilimi Okulu YouTube sayfasında da dashboard’u anlattığım videoyu da görebilirsiniz.
Bu yazıda FIFA 19 verisi ile R Shiny Dashboard içerisinde gerçekleştirdiğim veri manipülasyonlarının ve veri görselleştirmelerinin bir kısmını sizlerle paylaşıyor olacağım.
Öncelikle veri setimize kaggle linkinden ulaşabilirsiniz.
options(scipen = 999)
1. Kütüphaneler
Veri Görselleştirme ve Veri Manipülasyonları için kullanılan kütüphaneler aşağıdadır.
suppressMessages(library(tidyverse)) suppressMessages(library(magrittr)) suppressMessages(library(maps)) suppressMessages(library(plotly)) suppressMessages(library(ggrepel)) suppressMessages(library(scales))
2. Veri Seti
Yukarıda FIFA 19 veri setinin linkini paylaşmıştık. Şimdi veri setini R’a aktaralım.
fifa <- read.csv("data.csv", encoding = "UTF-8")[-1]
Veriyi yükledikten sonra verinin yapısına ve dataya göz atalım.
glimpse(fifa)
## Observations: 18,207 ## Variables: 88 ## $ ID 158023, 20801, 190871, 193080, 192985... ## $ Name L. Messi, Cristiano Ronaldo, Neymar J... ## $ Age 31, 33, 26, 27, 27, 27, 32, 31, 32, 2... ## $ Nationality Argentina, Portugal, Brazil, Spain, B... ## $ Overall 94, 94, 92, 91, 91, 91, 91, 91, 91, 9... ## $ Potential 94, 94, 93, 93, 92, 91, 91, 91, 91, 9... ## $ Club FC Barcelona, Juventus, Paris Saint-G... ## $ Value €110.5M, €77M, €118.5M, €72M, €102M, ... ## $ Wage €565K, €405K, €290K, €260K, €355K, €3... ## $ Position RF, ST, LW, GK, RCM, LF, RCM, RS, RCB... ## $ Crossing 84, 84, 79, 17, 93, 81, 86, 77, 66, 1... ## $ Finishing 95, 94, 87, 13, 82, 84, 72, 93, 60, 1... ## $ HeadingAccuracy 70, 89, 62, 21, 55, 61, 55, 77, 91, 1... ## $ ShortPassing 90, 81, 84, 50, 92, 89, 93, 82, 78, 2... ## $ Volleys 86, 87, 84, 13, 82, 80, 76, 88, 66, 1... ## $ Dribbling 97, 88, 96, 18, 86, 95, 90, 87, 63, 1... ## $ Curve 93, 81, 88, 21, 85, 83, 85, 86, 74, 1... ## $ FKAccuracy 94, 76, 87, 19, 83, 79, 78, 84, 72, 1... ## $ LongPassing 87, 77, 78, 51, 91, 83, 88, 64, 77, 2... ## $ BallControl 96, 94, 95, 42, 91, 94, 93, 90, 84, 1... ## $ Acceleration 91, 89, 94, 57, 78, 94, 80, 86, 76, 4... ## $ SprintSpeed 86, 91, 90, 58, 76, 88, 72, 75, 75, 6... ## $ Agility 91, 87, 96, 60, 79, 95, 93, 82, 78, 6... ## $ Reactions 95, 96, 94, 90, 91, 90, 90, 92, 85, 8... ## $ Balance 95, 70, 84, 43, 77, 94, 94, 83, 66, 4... ## $ ShotPower 85, 95, 80, 31, 91, 82, 79, 86, 79, 2... ## $ Jumping 68, 95, 61, 67, 63, 56, 68, 69, 93, 7... ## $ Stamina 72, 88, 81, 43, 90, 83, 89, 90, 84, 4... ## $ Strength 59, 79, 49, 64, 75, 66, 58, 83, 83, 7... ## $ LongShots 94, 93, 82, 12, 91, 80, 82, 85, 59, 1... ## $ Aggression 48, 63, 56, 38, 76, 54, 62, 87, 88, 3... ## $ Interceptions 22, 29, 36, 30, 61, 41, 83, 41, 90, 1... ## $ Positioning 94, 95, 89, 12, 87, 87, 79, 92, 60, 1... ## $ Vision 94, 82, 87, 68, 94, 89, 92, 84, 63, 7... ## $ Penalties 75, 85, 81, 40, 79, 86, 82, 85, 75, 1... ## $ Composure 96, 95, 94, 68, 88, 91, 84, 85, 82, 7... ## $ Marking 33, 28, 27, 15, 68, 34, 60, 62, 87, 2... ## $ StandingTackle 28, 31, 24, 21, 58, 27, 76, 45, 92, 1... ## $ SlidingTackle 26, 23, 33, 13, 51, 22, 73, 38, 91, 1... ## $ GKDiving 6, 7, 9, 90, 15, 11, 13, 27, 11, 86, ... ## $ GKHandling 11, 11, 9, 85, 13, 12, 9, 25, 8, 92, ... ## $ GKKicking 15, 15, 15, 87, 5, 6, 7, 31, 9, 78, 1... ## $ GKPositioning 14, 14, 15, 88, 10, 8, 14, 33, 7, 88,... ## $ GKReflexes 8, 11, 11, 94, 13, 8, 9, 37, 11, 89, ... ## $ Release.Clause €226.5M, €127.1M, €228.1M, €138.6M, €...
head(fifa)
## ID Name Age ## 1 158023 L. Messi 31 ## 2 20801 Cristiano Ronaldo 33 ## 3 190871 Neymar Jr 26 ## 4 193080 De Gea 27 ## 5 192985 K. De Bruyne 27 ## 6 183277 E. Hazard 27 ## Photo Nationality ## 1 https://cdn.sofifa.org/players/4/19/158023.png Argentina ## 2 https://cdn.sofifa.org/players/4/19/20801.png Portugal ## 3 https://cdn.sofifa.org/players/4/19/190871.png Brazil ## 4 https://cdn.sofifa.org/players/4/19/193080.png Spain ## 5 https://cdn.sofifa.org/players/4/19/192985.png Belgium ## 6 https://cdn.sofifa.org/players/4/19/183277.png Belgium ## Flag Overall Potential ## 1 https://cdn.sofifa.org/flags/52.png 94 94 ## 2 https://cdn.sofifa.org/flags/38.png 94 94 ## 3 https://cdn.sofifa.org/flags/54.png 92 93 ## 4 https://cdn.sofifa.org/flags/45.png 91 93 ## 5 https://cdn.sofifa.org/flags/7.png 91 92 ## 6 https://cdn.sofifa.org/flags/7.png 91 91 ## Club Club.Logo Value ## 1 FC Barcelona https://cdn.sofifa.org/teams/2/light/241.png 200110.5M ## 2 Juventus https://cdn.sofifa.org/teams/2/light/45.png 20077M ## 3 Paris Saint-Germain https://cdn.sofifa.org/teams/2/light/73.png 200118.5M ## 4 Manchester United https://cdn.sofifa.org/teams/2/light/11.png 20072M ## 5 Manchester City https://cdn.sofifa.org/teams/2/light/10.png 200102M ## 6 Chelsea https://cdn.sofifa.org/teams/2/light/5.png 20093M ## Wage Special Preferred.Foot International.Reputation Weak.Foot ## 1 200565K 2202 Left 5 4 ## 2 200405K 2228 Right 5 4 ## 3 200290K 2143 Right 5 5 ## 4 200260K 1471 Right 4 3 ## 5 200355K 2281 Right 4 5 ## 6 200340K 2142 Right 4 4 ## Skill.Moves Work.Rate Body.Type Real.Face Position Jersey.Number ## 1 4 Medium/ Medium Messi Yes RF 10 ## 2 5 High/ Low C. Ronaldo Yes ST 7 ## 3 5 High/ Medium Neymar Yes LW 10 ## 4 1 Medium/ Medium Lean Yes GK 1 ## 5 4 High/ High Normal Yes RCM 7 ## 6 4 High/ Medium Normal Yes LF 10 ## Joined Loaned.From Contract.Valid.Until Height Weight LS ST ## 1 Jul 1, 2004 2021 5'7 159lbs 88+2 88+2 ## 2 Jul 10, 2018 2022 6'2 183lbs 91+3 91+3 ## 3 Aug 3, 2017 2022 5'9 150lbs 84+3 84+3 ## 4 Jul 1, 2011 2020 6'4 168lbs ## 5 Aug 30, 2015 2023 5'11 154lbs 82+3 82+3 ## 6 Jul 1, 2012 2020 5'8 163lbs 83+3 83+3 ## RS LW LF CF RF RW LAM CAM RAM LM LCM CM RCM RM ## 1 88+2 92+2 93+2 93+2 93+2 92+2 93+2 93+2 93+2 91+2 84+2 84+2 84+2 91+2 ## 2 91+3 89+3 90+3 90+3 90+3 89+3 88+3 88+3 88+3 88+3 81+3 81+3 81+3 88+3 ## 3 84+3 89+3 89+3 89+3 89+3 89+3 89+3 89+3 89+3 88+3 81+3 81+3 81+3 88+3 ## 4 ## 5 82+3 87+3 87+3 87+3 87+3 87+3 88+3 88+3 88+3 88+3 87+3 87+3 87+3 88+3 ## 6 83+3 89+3 88+3 88+3 88+3 89+3 89+3 89+3 89+3 89+3 82+3 82+3 82+3 89+3 ## LWB LDM CDM RDM RWB LB LCB CB RCB RB Crossing Finishing ## 1 64+2 61+2 61+2 61+2 64+2 59+2 47+2 47+2 47+2 59+2 84 95 ## 2 65+3 61+3 61+3 61+3 65+3 61+3 53+3 53+3 53+3 61+3 84 94 ## 3 65+3 60+3 60+3 60+3 65+3 60+3 47+3 47+3 47+3 60+3 79 87 ## 4 17 13 ## 5 77+3 77+3 77+3 77+3 77+3 73+3 66+3 66+3 66+3 73+3 93 82 ## 6 66+3 63+3 63+3 63+3 66+3 60+3 49+3 49+3 49+3 60+3 81 84 ## HeadingAccuracy ShortPassing Volleys Dribbling Curve FKAccuracy ## 1 70 90 86 97 93 94 ## 2 89 81 87 88 81 76 ## 3 62 84 84 96 88 87 ## 4 21 50 13 18 21 19 ## 5 55 92 82 86 85 83 ## 6 61 89 80 95 83 79 ## LongPassing BallControl Acceleration SprintSpeed Agility Reactions ## 1 87 96 91 86 91 95 ## 2 77 94 89 91 87 96 ## 3 78 95 94 90 96 94 ## 4 51 42 57 58 60 90 ## 5 91 91 78 76 79 91 ## 6 83 94 94 88 95 90 ## Balance ShotPower Jumping Stamina Strength LongShots Aggression ## 1 95 85 68 72 59 94 48 ## 2 70 95 95 88 79 93 63 ## 3 84 80 61 81 49 82 56 ## 4 43 31 67 43 64 12 38 ## 5 77 91 63 90 75 91 76 ## 6 94 82 56 83 66 80 54 ## Interceptions Positioning Vision Penalties Composure Marking ## 1 22 94 94 75 96 33 ## 2 29 95 82 85 95 28 ## 3 36 89 87 81 94 27 ## 4 30 12 68 40 68 15 ## 5 61 87 94 79 88 68 ## 6 41 87 89 86 91 34 ## StandingTackle SlidingTackle GKDiving GKHandling GKKicking GKPositioning ## 1 28 26 6 11 15 14 ## 2 31 23 7 11 15 14 ## 3 24 33 9 9 15 15 ## 4 21 13 90 85 87 88 ## 5 58 51 15 13 5 10 ## 6 27 22 11 12 6 8 ## GKReflexes Release.Clause ## 1 8 200226.5M ## 2 11 200127.1M ## 3 11 200228.1M ## 4 94 200138.6M ## 5 13 200196.4M ## 6 8 200172.1M
FIFA 19 verisi FIFA 19 Video Oyunu içerisindeki tüm oyuncuları ve oyuncuların özelliklerini barındıran değişkenlere sahiptir.
3. Veri Manipülasyonu
3.1. Örneklem Seçimi: İngiltere Premier Ligi
FIFA 19 içerisinde her bir oyuncunun oynamış olduğu takımları belirten Club değişkeni mevcuttur. Fakat hangi takımın hangi lige ait olduğunu belirten bir değişken yoktur. Bu yüzden elimizi çamura bulayıp teker teker 2018-2019 sezonunda Premier League içeriside olan takımları bir vektör haline getirelim.
premierLeague <- c( "Arsenal", "Bournemouth", "Brighton & Hove Albion", "Burnley", "Cardiff City", "Chelsea", "Crystal Palace", "Everton", "Fulham", "Huddersfield Town", "Leicester City", "Liverpool", "Manchester City", "Manchester United", "Newcastle United", "Southampton", "Tottenham Hotspur", "Watford", "West Ham United", "Wolverhampton Wanderers" )
Çift taraflı pipeline’ı bilmeyenler için magrittr kütüphanesi içerisinde pipe ( %>% ) operatörü gibi bir operatör bulunmaktadır. %<>% operatörü hem zincir işlemi görüp hem de atama işlemini gerçekleştirir.
fifa %<>% filter(Club %in% premierLeague)
Bir alt küme seçerek veri setini 18207 gözlemden 649 değişkene indirmiş olduk. Elimizde sadece İngiltere’nin futbol kulüpleri bulunuyor artık.
dim(fifa)
## [1] 649 88
3.2. Oyuncu Değerini Kategorik Değişkenden Sürekli Hale Getirmek
head(fifa$Value)
## [1] 20072M 200102M 20093M 20060M 20063M 20083.5M ## 217 Levels: €0 €1.1M €1.2M €1.3M €1.4M €1.5M €1.6M €1.7M €1.8M ... €9M
class(fifa$Value)
## [1] "factor"
Oyuncuların değerleri Euro € cinsinden, M: Milyon ve K: Bin şeklinde ifade edilmiştir.
head(fifa %>% select(Name, Value))
## Name Value ## 1 De Gea 20072M ## 2 K. De Bruyne 200102M ## 3 E. Hazard 20093M ## 4 David Silva 20060M ## 5 N. Kanté 20063M ## 6 H. Kane 20083.5M
Yani K. De Bruyne için değer €102M ise bu gözlem değeri 102.000.000 milyon Euro’ya karşılık gelmektedir. Yazıyı yazdığım an itibariyle
(102000000 * 6.38)
## [1] 650760000
Rakamla 650.760.000 TL, yazıyla ALTIYÜZELLİMİLYONYEDİYÜZALTMIŞBİN TÜRK LİRASI’na karşılık gelmektedir. K. De Bruyne abimize helal olsun güzel kazanıyor.
Şimdi konumuza dönecek olursak, amacımız kategorik bir değişkeni sürekli hale getirmek. Bunun için stringr kütüphanesindeki fonksiyonları kullanacağız.
- str_remove_all() içersine girilen karakter yapısını değişkenden kaldırır.
- str_replace_all() içersine girilen karakter yapısını, diğer girilen karakter yapısıyla değiştirir.
fifa$Values <- str_remove_all(fifa$Value,"€") # Euro simgesinin kaldırılması fifa$Values <- str_replace_all(fifa$Values,"K", "000") # K: Bin ifadesinin üç sıfır ile değiştirilmesi fifa$Values <- str_remove_all(fifa$Values,"M") # M: Milyon ifadesinin kaldırılması
Value değişkenini elimizde tuttuk ve Value üzerinde işlem yaptıktan sonra Values değişkenini oluşturduk.
head(fifa$Values)
## [1] "72" "102" "93" "60" "63" "83.5"
class(fifa$Values)
## [1] "character"
Values değişkeni karakter formatında olduğu için nümerik hale getirmemiz gerekir ve en son işlem olarak değişkenin olması gereken hale getiriyoruz.
fifa$Values <- as.numeric(fifa$Values) fifa <- fifa %>% mutate(Values = if_else(fifa$Values < 1000 , Values * 1000000, Values))
head(fifa$Values)
## [1] 72000000 102000000 93000000 60000000 63000000 83500000
3.3. Oyuncu Pozisyonlarını Sınıflara Ayırmak
Futbolcuların pozisyonları temelde 4 kategoriye ayrılır: Kaleci, Defans, Orta Saha ve Forvet.
Burada oyuncuların pozisyonlarını sınıflandırarak veri görselleştirmeler için işimizi kolaylaştıracağız.
# Class defence <- c("CB", "RB", "LB", "LWB", "RWB", "LCB", "RCB") midfielder <- c("CM", "CDM","CAM","LM","RM", "LAM", "RAM", "LCM", "RCM", "LDM", "RDM") fifa %<>% mutate(Class = if_else(Position %in% "GK", "Goal Keeper", if_else(Position %in% defence, "Defender", if_else(Position %in% midfielder, "Midfielder", "Forward"))))
3.4. Oyuncu Pozisyonlarının ve İsimlerinin Birlikte Yazdırılması
Her bir oyuncunun ismiyle birlikte hangi pozisyonda oynadıklarını belirtelim.
fifa %<>% mutate(Name.Pos = paste0(Name, ", ", Position)) head(fifa$Name.Pos)
## [1] "De Gea, GK" "K. De Bruyne, RCM" "E. Hazard, LF" ## [4] "David Silva, LCM" "N. Kanté, LDM" "H. Kane, ST"
4. Veri Görselleştirme
Veri Görselleştirme kısmında elde etmek istediğimiz görseller için hem Veri Manipülasyonu hem de Veri Görselleştirme kodu yazacağız.
4.1. Dünya Haritası Grafiği
Problem 1: Amacımız İngiltere Ligi’nde oynayan her bir oyuncunun hangi ülkeden olduğunu göstermek!
Dünya haritası oluşturmak için ilk önce maps kütüphanesini yüklememiz gerekmekte ardından map_data() fonksiyonuyla dünya haritası bilgilerini edinmeliyiz.
Fifa verisinden yapılan hesaplama ile İngiltere Ligi’nde ülkelere göre oyuncu frekansları bulunur ardından dünya haritası verisi ile left_join() ile birleştirilir.
Ardından ggplot ile dünya haritası görselleştirilir. Eğer ggplot görseli interaktif bir hale getirilmek isteniyorsa plotly kütüphanesi ile ggplotly() fonksiyonu kullanılarak ggplot2 görselleştirmeleri plotly haline dönüştürülür.
# Dünya Haritası Bilgisi world_map <- map_data("world") # Oyuncu Sayıları Dünya Haritası verisiyle birleştirilir numofplayers <- world_map %>% mutate(region = as.character(region)) %>% left_join((fifa %>% mutate(Nationality = as.character(Nationality), Nationality = if_else(Nationality %in% "England", "UK", Nationality)) %>% count(Nationality, name = "Number of Player") %>% rename(region = Nationality) %>% mutate(region = as.character(region))), by = "region") # İnteraktif Dünya Haritası ggplotly( ggplot(numofplayers, aes(long, lat, group = group))+ geom_polygon(aes(fill = `Number of Player` ), color = "white", show.legend = FALSE)+ scale_fill_viridis_c(option = "C")+ theme_void()+ labs(fill = "Number of Players", title = "Nationality of The Players in The League"))
Grafiğe bakıldığında İngiltere Ligi’nde en çok yer alan oyuncuların milliyetleri İngiliz olarak gözükmekte ve frekansı da 255’tir. Bu frekansın yüksek olması demek İngiltere Ligi’ndeki takımların alt yapıdan yerli oyuncu yetiştirmesinde başarılı olunduğu varsayılabilir.
Türkiye’de ise bu durum İngiltere’den daha iyi. Türk futbolumuz da muhteşem olduğundan ve yerli oyuncularımız başarıyla yurt dışında bizi temsil ettiğinden Türkiye’de oynayacak oyuncu bulamıyoruz bile!
4.2. Oyuncu Pozisyonlarına Göre En Değerli Oyuncular
Problem 2: Amacımız her bir oyuncu pozisyonuna göre (Kaleci, Defans, Orta Saha, Forvet) en değerli 10 oyuncuyu bulmak!
Oyuncuların değerlerini büyükten küçüğe göre sıraladıktan sonra pozisyon sınıflarına göre gruplanır ve ilk 10 gözlem seçilir. Ardından görselleştirme yapılır.
ggplot2 renk paletlerini görmek için http://sape.inf.usi.ch/quick-reference/ggplot2/colour linkini ziyaret edebilirsiniz.
fifa %>% arrange(-Values) %>% group_by(Class) %>% top_n(n = 10, wt = Values) %>% ggplot(aes(reorder(Name, Values), Values, fill = Class, label = paste0("€", Values / 1000000, "M")))+ geom_col(show.legend = FALSE)+ geom_text_repel(ylim = 1, segment.color = "white", color = "white")+ coord_flip()+ theme_minimal()+ facet_wrap(Class~., scales = "free",)+ scale_fill_manual(values = c("seagreen", "orchid", "steelblue" ,"khaki"))+ theme(axis.text.x=element_blank(), strip.background =element_rect(fill="gray"), strip.text.x = element_text(size = 10, colour = "white",face = "bold.italic"))+ labs(title = "Most Valuable Players", x = NULL, y = NULL)
4.3. Takımların Oyuncu Değerlerine Göre Dağılımı
Problem 3: İngiltere Premier Ligi’nde her bir takımın değerlerinin dağılımını ve değişim aralıklarını görelim.
fifa %>% ggplot(aes(reorder(Club, Values), Values, fill = Club))+ geom_boxplot(show.legend = FALSE)+ coord_flip()+ theme_minimal()+ scale_fill_ordinal(option = "E")+ scale_y_continuous(labels = comma)+ labs(x = NULL, y = "Value")
Boxplot’a bakıldığında görseldeki ilk 6 takım lig’deki en değerli ve dünyaca bilinen takımlardır. Bu grafikten takımların bütçesel anlamda diğer takımlara baskınlıkları görülebilir. İlk altı takımın toplam oyuncu değerlerine bakıldığında ve diğer takımlarla karşılaştırıldığında çok ciddi bir maddi farklılık görülecektir.
4.4. Pozisyonlara Göre Oyuncuların Özelliklerinin Dağılımı
Problem 4: Takımımızın güçlü ve zayıf yönlerini görmek isteyelim. Burada oyuncuları pozisyon sınıflarına göre ayırarak takımımız içerisindeki oyuncuların özelliklerini inceleyelim!
Kalecileri analiz dışı bıraktıktan sonra Defans, Orta Saha ve Forvet pozisyonlarındaki oyuncuların özellikerine göre güçlü ve zayıf yönler görülür.
NOT: Bu görselleştirme Kaggle içerisindeki bir Kernel’dan alınmıştır. Linkini bulmaya üşendim o yüzden Kaggle içerisindeki FIFA Kernel’larına bakmanızı tavsiye ediyorum. Böylelikle oradaki güzel işleri de görmüş olursunuz. 🙂
tile_data <- fifa %>% filter(Club == "Manchester City") %>% select_if(is.numeric) %>% select(-contains("GK")) %>% left_join(fifa %>% select(ID, Position, Class), by = "ID") %>% filter(Overall >= 70) %>% select(-ID, -International.Reputation, -Jersey.Number, -Skill.Moves, -Special, -Values, -Weak.Foot, -Age, -Overall, -Potential, -starts_with("Wage")) tile_data <- tile_data %>% filter(Position != "GK") %>% gather(key = Attribute, value = Value, -Position, -Class) %>% group_by(Class, Position, Attribute) %>% summarise(MedianValue = median(Value, na.rm = T)) tile_data %>% ggplot(aes(x= Attribute, y= Position)) + geom_tile(aes(fill = MedianValue), colour = "black") + geom_text(aes(label = MedianValue)) + scale_fill_gradient(low = "purple", high = "green") + theme_minimal()+ theme(axis.text.x = element_text(angle = 45, hjust = 1), strip.text = element_text(face = "bold", size = 12), legend.position = "none") + facet_wrap(~Class, scales = "free", ncol = 1)
4.5. 3-Boyutlu Görselleştirme ile Takım Bilgisi
Problem 5: Takımımızdaki oyuncuların Yaş (Age), Güç (Overall) ve Değer (Value) değişkenlerine göre Pozisyon bazlı dağılımlarını görmek isteyelim!
Plotly ile 3-Boyutlu ve interaktif görselleştirme yapılabilir.
p3d <- fifa %>% filter(Club == 'Chelsea') plot_ly(p3d, x = ~Values, y = ~Overall, z = ~Age, color = ~Class, text = ~Name.Pos) %>% add_markers() %>% layout( scene = list(xaxis = list(title = 'Value'), yaxis = list(title = 'Overall'), zaxis = list(title = 'Age')) )
3-Boyutlu Plotly grafiğini FIFA 19 Dashboard’u içerisinden interaktif bir şekilde görebilirsiniz.
Bu yazıda FIFA 19 Dashboard’u içerisinde yapmış olduğum görselleştirmelerden bazılarını ve görselleştirme yapmadan önce hangi sorular ile yola çıktığımı sizler ile paylaştım ve bu problemlerin çözümlerini uygulamalı bir şekilde görmüş olduk.
FIFA 19 Dashboard Veri Görselleştirme yazı serimizin ilk bölümü burada sonlanmaktadır. Bir sonraki yazılarda görüşmek üzere.
Ekrem Bayar