# 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)
Şimdiye kadar ggplot2 ile oluşturduğumuz tüm o harika grafiklerin bir eksiği vardı: onlar birer fotoğraftı. Üzerine gelip detayları göremiyor, ilginizi çeken bir alanı yakınlaştıramıyordunuz.
İşte plotly paketi bu sorunu çözmek için var. plotly, ggplotly() adında sihirli bir fonksiyona sahiptir. Bu fonksiyon, oluşturduğunuz herhangi bir ggplot nesnesini alır ve onu tek bir komutla, tamamen interaktif bir web grafiğine dönüştürür.
install.packages("plotly")
library(tidyverse)
library(plotly)
# Örnek veri setimiz için gapminder'ı da çağıralım.
library(gapminder)
Önce, gapminder veri setini kullanarak basit bir ggplot grafiği oluşturalım. 2007 yılındaki ülkelerin kişi başına düşen gelir (gdpPercap) ve yaşam süresi (lifeExp) arasındaki ilişkiyi inceleyelim. Noktaların büyüklüğü de nüfusu (pop) temsil etsin.
# Gerekli kütüphaneleri çağıralım (eğer daha önce çağrılmadıysa)
library(tidyverse)
library(ggplot2)
library(gapminder)
# Statik ggplot grafiğimizi, lejant formatlaması eklenmiş haliyle oluşturalım
p_formatli <- ggplot(filter(gapminder, year == 2007),
aes(x = gdpPercap, y = lifeExp, color = continent, size = pop)) +
geom_point(alpha = 0.7) +
# X eksenini de tutarlılık için formatlayalım
scale_x_log10(labels = scales::comma) +
# --- İŞTE SİHİRLİ DOKUNUŞ BURADA ---
# Boyut lejantındaki etiketleri virgüllü sayı formatına çeviriyoruz.
scale_size_continuous(labels = scales::comma) +
labs(
title = "2007 Yılında Ülkelerin Yaşam Süresi ve GSYİH İlişkisi",
x = "Kişi Başına Düşen GSYİH (Logaritmik Ölçek)",
y = "Ortalama Yaşam Süresi",
color = "Kıta",
size = "Nüfus"
) +
theme_minimal()
# Grafiğin son, mükemmel halini görelim
p_formatli
Şimdi sihri yapma zamanı. Tek bir komutla bu statik fotoğrafı, yaşayan bir nesneye dönüştürelim.
ggplotly(p_formatli, tooltip = c("x", "y", "color", "size"))
İşte bu kadar! Eğer bu raporu HTML olarak görüntülüyorsanız, artık grafiğin üzerine fareyle gelerek her bir noktanın tüm detaylarını (GSYİH, yaşam süresi, nüfus, kıta) görebilir, sağ üstteki araç çubuğuyla belirli bir alanı yakınlaştırabilir ve grafiği keşfe çıkabilirsiniz.
ggplotly otomatik olarak harika bilgi pencereleri
(tooltips) oluşturur, ancak bazen bu bilgileri daha
anlaşılır ve temiz bir formatta sunmak isteyebiliriz.
Bunu yapmak için, orijinal ggplot’umuza
text adında özel bir estetik ekleyeceğiz. Bu
text estetiği, plotly tarafından bilgi
penceresi metni olarak kullanılacaktır.
p_ozel <- ggplot(filter(gapminder, year == 2007),
aes(x = gdpPercap, y = lifeExp, color = continent, size = pop,
# --- Ustalık Dokunuşu Burada ---
# Her nokta için özel bir metin oluşturuyoruz.
text = paste("<b>Ülke:</b>", country,
"<br><b>Nüfus:</b>", round(pop/1000000, 1), "milyon",
"<br><b>Yaşam Süresi:</b>", round(lifeExp, 1), "yıl"))) +
geom_point(alpha = 0.7) +
scale_x_log10() +
labs(title = "2007 Yılında Ülkelerin Yaşam Süresi ve GSYİH İlişkisi",
x = "Kişi Başına Düşen GSYİH (Logaritmik Ölçek)", y = "Ortalama Yaşam Süresi") +
theme_minimal() +
theme(legend.position = "none") # Lejantı kapattık çünkü tüm bilgi tooltip'te
# ggplotly'e bu sefer özel "text" estetiğini kullanmasını söylüyoruz.
ggplotly(p_ozel, tooltip = "text")
Şimdi noktaların üzerine geldiğinizde, çok daha temiz, formatlanmış ve tam olarak sizin istediğiniz bilgileri içeren pencereler görüyorsunuz.