# Eğer yüklü değilse, bu komut ile paketi yükleyebilirsiniz.
install.packages("treemapify")
# Gerekli kütüphaneleri çağıralım
library(tidyverse)
library(treemapify)
data(G20)
Atölyemizin son tezgâhında, veri görselleştirmeyi bir adım daha ileri taşıyıp, grafiklerimize zaman boyutu ekleyeceğiz. gganimate, ggplot2’nun gramerini genişleterek, verinin bir değişken (genellikle zaman) üzerindeki değişimini akıcı animasyonlara dönüştürmemizi sağlar.
gganimate, animasyonları GIF formatında oluşturmak için gifski paketine ihtiyaç duyar.
install.packages("gganimate")
install.packages("gifski")
library(gganimate)
library(gifski)
Az önce oluşturduğumuz gapminder grafiği sadece 2007 yılını gösteriyordu. Peki ya 1952’den 2007’ye kadar tüm bu ülkelerin yolculuğunu bir film gibi izleyebilseydik?
gganimate ile bu çok kolay. Tek yapmamız gereken, statik ggplot kodumuza birkaç sihirli katman eklemek.
# Temel ggplot grafiğimizi bu sefer yıl filtresi olmadan oluşturuyoruz.
# scales paketinin içindeki 'comma' fonksiyonuna ihtiyacımız olacak.
# Paketi library() ile çağırmak yerine, `scales::comma` şeklinde doğrudan
# kullanmak, kodun daha anlaşılır olmasını sağlayan bir "ustalık" pratiğidir.
# Gerekli kütüphaneler
library(tidyverse)
library(ggplot2)
library(gapminder)
library(gganimate)
library(gifski)
# Temel ggplot grafiğimizi oluşturuyoruz
anim_formatli <- ggplot(gapminder, aes(x = gdpPercap, y = lifeExp, color = continent, size = pop)) +
geom_point(alpha = 0.7) +
# --- 1. Ustalık Dokunuşu: X Eksenini Formatlamak ---
scale_x_log10(
labels = scales::comma # Etiketleri virgüllü sayı formatına çevir
) +
# --- 2. Ustalık Dokunuşu: Lejantı Formatlamak ---
scale_size_continuous(
labels = scales::comma # Boyut lejantındaki etiketleri de virgüllü sayı formatına çevir
) +
theme_minimal() +
# --- gganimate Sihri ---
transition_time(year) +
labs(
title = "Yıl: {frame_time}",
x = "Kişi Başına Düşen GSYİH (Logaritmik Ölçek)",
y = "Ortalama Yaşam Süresi",
color = "Kıta",
size = "Nüfus"
) +
shadow_wake(wake_length = 0.1, alpha = FALSE)
# Animasyonu render edelim
anim_formatli
İşte bu kadar! Kod çalıştığında, RStudio’nun “Viewer” sekmesinde yıllar içinde ülkelerin nasıl bir gelişim gösterdiğini, bazı Asya ülkelerinin nasıl inanılmaz bir atılım yaptığını ve genel olarak dünyanın nasıl daha sağlıklı ve zengin bir yer haline geldiğini gösteren bir animasyon (GIF) oluşacak.
Bu animasyon, onlarca statik grafiğin anlatamayacağı bir hikayeyi, sadece 10 saniye içinde, çok daha etkili bir şekilde anlatır.
Bu bölümün de sonuna geldik dostlar,
Atölyemizin kapılarını kapatma zamanı geldi… Ama bu bir son değil, muhteşem bir dönüşümün başlangıcı. Bu bölümde, R’ın ve ggplot2’nun üzerine inşa ettiğimiz sağlam temelleri alıp, onları birer sanat eserine dönüştürdük.
Birlikte veri nehirlerinde (ggalluvial) yolculuk yaptık, hiyerarşilere (treemapify) kuş bakışı baktık, verilerimize coğrafi bir ruh (leaflet) kattık ve statik grafiklerimize interaktivite (plotly) ile dokunup, zamanla (gganimate) onlara hayat verdik. Artık alet çantanız, sadece analiz yapmanızı sağlayan değil, aynı zamanda unutulmaz veri hikayeleri anlatmanızı sağlayan birbirinden güçlü ve özel araçlarla dolu.
Ama asıl kazancımız, bu araçları öğrenirken karşılaştığımız zorluklardı. Kaybolan titanic_long verisi, bir türlü sayfaya sığmayan haritalar, lejanttaki o gizemli NA değeri ve paketlerin birbiriyle konuşurken çıkardığı o küçük pürüzler… İşte bunlar, bizi komut ezberleyen bir kullanıcı olmaktan çıkarıp, sorunları anlayan ve çözen bir “usta” yapan gerçek derslerdi. Her bir hata, alet çantanıza eklediğiniz yeni bir tecrübe nişanı oldu.
Peki Şimdi Ne Olacak?
Artık aletleri tek tek öğrenme aşamasını tamamladık. Şimdi o aletlerin tamamını kullanarak bir şaheser yaratma zamanı.
Yol haritamızda da belirttiğimiz gibi, sırada serimizin zirve noktası, yani Ustalık Projemiz var:
“Sayıların Ardındaki Trajedi - Bir COVID-19 Veri Hikayesi”
Bu projede, artık sadece bir R Markdown raporu hazırlamayacağız. Shiny’nin gücünü kullanarak, baştan sona interaktif bir web uygulaması (dashboard) geliştireceğiz. Düşünün:
Ve tüm bunları, kullanıcıların tarih aralığı seçebileceği, ülkeleri filtreleyebileceği, yaşayan, nefes alan tek bir web sayfasında bir araya getireceğiz.
Bu proje, şimdiye kadar öğrendiğimiz her bir yeteneğin birleştiği ve ete kemiğe büründüğü bir final olacak. Artık sadece bir R kullanıcısı değiliz, elimizdeki veriyle anlamlı ve etkileşimli ürünler yaratabilen veri hikayecileriyiz
Alet çantamız ağzına kadar dolu, tuvalimiz hazır.
Serimizin zirve noktasına doğru adımı birlikte atalım. Gerçek macera, şimdi başlıyor.
Veriyle kalın,lütfen takipte kalın dostlar…