Bu eğitim, topluluğumuzun değerli bir katkısıdır ve netlik ile doğruluk için DataCamp tarafından düzenlenmiştir.
Kendi uzmanlığınızı paylaşmak ister misiniz? Sizden haber almak isteriz! Makalelerinizi veya fikirlerinizi Topluluk Katkı Formu üzerinden dilediğiniz zaman gönderebilirsiniz.
"Küresel ısınma bir tahmin değil. Gerçekleşiyor" - James Hansen
İklim değişikliği hepimizi etkileyen acil bir meseledir ve veri görselleştirme farkındalık yaratmak için güçlü bir araç olabilir. Bu adım adım eğitimde, R'de ggplot2 kullanarak tarihsel iklim verilerinin etkili görselleştirmelerini nasıl oluşturacağınızı öğreneceksiniz. Bu rehberin sonunda, seçilmiş veri kümelerini nasıl bulacağınızı, tarihsel hava durumu verilerini nasıl çizeceğinizi ve grafikleri ikna edici bir hikâye anlatacak şekilde nasıl özelleştireceğinizi biliyor olacaksınız.
İklim değişikliği hepimizi etkileyen acil bir meseledir ve veri görselleştirme farkındalık yaratmak için güçlü bir araç olabilir. Bu adım adım eğitimde, R'de ggplot2 kullanarak tarihsel iklim verilerinin etkili görselleştirmelerini nasıl oluşturacağınızı öğreneceksiniz. Bu rehberin sonunda, seçilmiş veri kümelerini nasıl bulacağınızı, tarihsel hava durumu verilerini nasıl çizeceğinizi ve grafikleri ikna edici bir hikâye anlatacak şekilde nasıl özelleştireceğinizi biliyor olacaksınız.
Bu eğitimde, güvenilir ve seçilmiş tarihsel sıcaklık verilerini nerede bulacağınızı ve bunları ggplot2 ile nasıl görselleştireceğinizi öğreneceksiniz.
- Tarihsel hava durumu verilerini içeren seçilmiş veri kümelerinin nerede bulunacağını bilmek;
- ggplot2 ile tarihsel hava durumu verilerini çizmeyi rahatça yapabilmek;
- Hikâyenizi daha iyi anlatmak için ggplot2 grafiklerinizi özelleştirebilmek.
Adım 1: Veriyi Bulma ve Yükleme
Bu eğitime ait veriler Ulusal Çevresel Bilgi Merkezleri (NCEI) sitesinde mevcuttur. NCEI, ABD'deki çevresel veriler için başlıca otoritedir ve iklim, ekosistemler ve su kaynaklarına ilişkin yüksek kaliteli veriler sunar. Global Summary of the Year (GSOY) veri kümesi, şehir ve istasyon bazında tarihsel hava durumu verileri sağlar. Bu eğitim için Berkeley, CA verilerini kullanacağız. Dilerseniz tercih ettiğiniz bir şehri seçebilirsiniz.
Veri read_csv ile yüklenecektir. İlk argüman dosya yoludur; ikinci argüman olan col_select ise R'a hangi sütunları yüklemek istediğinizi söyler. Bu veri kümesinde birkaç değişken bulunduğunu, ancak bizim yalnızca "DATE" ve "TAVG" ile ilgilendiğimizi unutmayın. "DATE" sıcaklığın gözlemlendiği yılı içerir, "TAVG" ise yıllık ortalama sıcaklığı Santigrat cinsinden verir. Mevcut değişkenler hakkında daha fazla bilgi için lütfen veri kümesi el kitabına bakın.
library(readr)23df <- read_csv('USC00040693.csv',4 col_select = c("DATE", "TAVG"))5Rows: 118 Columns: 2── Column specification ────────────────────────────────────────────────────────Delimiter: ","dbl (2): DATE, TAVGAşağıda, verinizi ve özet istatistiklerini yazdırarak veriniz hakkında ilk fikri edineceksiniz. R'ın summary() fonksiyonu, verilerin 1893'ten 2019'a kadar uzandığını ve bu dönemde Berkeley, CA'da gözlemlenen en düşük yıllık ortalama sıcaklığın 12,9 ºC olduğunu söylüyor. En yüksek ortalama sıcaklık ise 15,93 ºC.

summary(df) DATE TAVG Min. :1893 Min. :12.90 1st Qu.:1926 1st Qu.:13.50 Median :1956 Median :13.91 Mean :1956 Mean :13.97 3rd Qu.:1985 3rd Qu.:14.33 Max. :2019 Max. :15.93 NA's :33 Adım 2: Eksik Değerlerin İşlenmesi
summary() fonksiyonu 33 eksik sıcaklık değeri olduğunu ortaya koydu. Bir değişkendeki NA'ları doğrulamak için is.na() fonksiyonunu da kullanabilirsiniz; bu fonksiyon, gözlem NA ise TRUE döndürür. Ardından tüm eksik değerleri toplayabilirsiniz. sum() fonksiyonu TRUE değerlerini 1'e dönüştürür.
print(paste("There are", sum(is.na(df$TAVG)), "missing values in this dataset."))[1] "There are 33 missing values in this dataset."Bir zaman serisiyle çalıştığımız için eksik değerleri doğrusal enterpolasyonla dolduracağız. Bu yöntem, eksik dönem boyunca verinin doğrusal olarak değiştiğini varsayar. Aslında, bir zaman serisini çizgi grafiğiyle çizdiğinizde, veri eksik olmasa bile gözlemler arasındaki aralıklar iki noktayı birleştiren düz bir çizgiyle doldurulur.
Doğrusal enterpolasyon yapmak için imputeTS paketini kullanacağız. Kütüphaneyi kurup yükledikten sonra, na_interpolation() ile eksik değerleri doldurabilirsiniz. İki argüman geçersiniz: İlk olarak, işlemek istediğiniz veri çerçevesi sütunu; ikinci olarak da imputasyon için kullanmak istediğiniz yöntem.
install.packages("imputeTS", quiet = TRUE)library(imputeTS)Registered S3 method overwritten by 'quantmod': method from as.zoo.data.frame zoo df$TAVG <- na_interpolation(df$TAVG, option ="linear")Adım 3: Grafiğimizin İlk Sürümünü Kodlama
Bir ggplot2 görselleştirmesi katmanlardan oluşur. Aşağıdaki şekilde gösterildiği gibi, her katman bir geom nesnesi içerir; yani grafikte gördüğünüz bir öğe (örneğin çizgiler ve noktalar).
Önce, ggplot() fonksiyonuna bir veri kümesi geçmeniz gerekir. İkinci olarak, değişkenleri bir geom nesnesinin görsel özellikleri olan estetiklere eşleyeceksiniz. Estetikler; örneğin y eksenindeki konum, x eksenindeki konum, renk veya boyuttur. ggplot hakkında daha fazla bilgi için, çok şey öğrendiğim Rick Scavetta'nın Introduction to Data Visualization with ggplot2 kursuna göz atın.

Ggplot2 katmanları. Görsel: Yazar tarafından oluşturulmuştur.
Aşağıda, eşlememiz (aes()) ggplot'a x eksenindeki konumu "DATE" değişkenine, y eksenindeki konumu ise sıcaklığa bağlı hale getirmesini söylüyor. Yalnızca bu katmanı çizerseniz, ggplot'un yalnızca eksenleri göstereceğini unutmayın.
Ayrıca, ggplot kullanmaya başlamadan önce tüm grafiklerimize uygulamak istediğimiz bazı genel ayarları belirleyeceğiz. İlk ayar grafik boyutu ve çözünürlüğü, ikincisi ise tema.
library(ggplot2)options(repr.plot.width = 10, repr.plot.height = 6, repr.plot.res = 150 )theme_set(theme_bw())axes <- ggplot(data = df, aes(x = DATE, y = TAVG))axes
Şimdi, zaman içindeki sıcaklıkları gösteren noktalarla ikinci bir katman ekleyebilirsiniz. Bu katmanı bir önceki adımda oluşturduğunuz grafiğe ekleyebileceğinizi unutmayın.
dot_plot <- axes + geom_point()dot_plot
Son olarak, çizgileri içeren üçüncü bir katman ekleyebilirsiniz. Çizgilerin gözlemlenen veriyi temsil etmediğini ve dikkatli kullanılmaları gerektiğini savunan yazarlar olduğunu vurgulamak önemlidir. Kapsamlı bir tartışma için Claus O. Wilke'nin Fundamentals of Data Visualization kitabının 13. bölümüne bakın.
dot_plot +geom_line()
Adım 4: Grafiğinizi Özelleştirme
Bu bölümde, grafiğinizi açık, bilgilendirici ve estetik hale getirmek için nasıl özelleştireceğinizi öğreneceksiniz.
Öncelikle, sıcaklıktaki artışı daha görünür kılmak için noktaların renk estetiğini de "TAVG"'ye eşleyeceğiz. Sayısal bir değişken olduğundan ggplot2, sürekli değerleri renklerle temsil etmek için bir gradyan kullanacaktır. Düşük sıcaklıkları ve yüksek sıcaklıkları hangi renklerin temsil edeceğini scale_color_gradient() fonksiyonuyla seçebilirsiniz.
Ayrıca, x ve y ekseni etiketlerini sırasıyla xlab() ve ylab() ile belirleyebilirsiniz. ggtitle() ile bir başlık eklenebilir. Son olarak, noktaların boyutunu artıracak ve üst üste binen verileri görünür kılmak için saydamlık ekleyeceğiz.
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+scale_color_gradient(name = "ºC", low = "#47BEFB", high = "#ED6AA8")+ggtitle("Historical air temperature trend in Berkeley, CA")+xlab("Year")+ylab("Annual Mean Temperature in Berkeley [ºC]")
Edward Tufte, veri görselleştirme alanında uzman bir isim olarak, yinelenmeyen veriyi göstermek için kullanılan mürekkep oranının en üst düzeye çıkarılmasını önerir. Bunun grafiğinizi daha net hale getirdiğini ve okuyucunuzu dikkat dağıtıcı unsurlardan uzak tuttuğunu savunur.
Kullandığımız ggplot2 teması (theme_bw()) zaten Tufte'nin önerileriyle uyumlu, ancak yukarıdaki grafikte panel ızgaralarını yine de kaldırabiliriz. Bunu yapmak için theme() fonksiyonunu kullanın ve panel.grid.minor = element_blank() ile panel.grid.major = element_blank() argümanlarını geçin.
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+scale_color_gradient(name = "ºC", low = "#47BEFB", high = "#ED6AA8")+ggtitle("Historical air temperature trend in Berkeley, CA")+xlab("Year")+ylab("Annual Mean Temperature in Berkeley [ºC]")+theme(# Eliminates grids: panel.grid.minor = element_blank(), panel.grid.major = element_blank())
Adım 5: Görselleştirmeniz İçin Bir ggplot2 Teması Oluşturma
Şimdi kendi ggplot2 temanızı nasıl oluşturacağınızı öğreneceksiniz. Örnek olarak, grafiğimizi DataCamp web sitesiyle daha tutarlı ve uyumlu hale getirmek için bir theme_datacamp() oluşturacağız.
Önce, ileride kullanmak üzere bazı DataCamp renklerini içeren bir liste oluşturuldu.
datacamp_colors <- list(green = "#74F065", darkblue = "#05192D", blue = "#47BEFB", pink = "#ED6AA8")İkinci olarak, temamızda kullanmak üzere "Manjari" adlı bir Google Font'u yükleyeceğiz. Bunu "showtext" paketiyle kolayca yükleyebilirsiniz. Eğer yoksa lütfen kurun.
install.packages("showtext", quiet = TRUE)Aşağıda, paketi yüklüyor ve font_add_google() fonksiyonuyla "Manjari"yi ekliyoruz. Ayrıca showtext_auto() ile R'a metni "showtext" kullanarak oluşturmasını söylüyoruz:
library(showtext)font_add_google("Manjari")showtext_auto()Loading required package: sysfontsLoading required package: showtextdbŞimdi grafiği özelleştirmek için theme() kullanacağız. Aşağıdaki şekil, kullanabileceğiniz bazı argümanları gösterir. Tam liste için lütfen ggplot2 referansına bakın.

Tema argümanları. Görsel: Yazar tarafından oluşturulmuştur.
ggplot2'nin theme() fonksiyonunu çağıran ve özelleştirilmiş özelliklerinizi içeren bir fonksiyonla yeni bir tema oluşturabilirsiniz. Siyah-beyaz temadan (theme_bw()) başlayıp ızgaraları kaldırdığımıza ve arka plan, panel ile metin renklerini değiştirdiğimize dikkat edin. Ayrıca, grafiğe 0,5 cm kenar boşluğu eklendi. Gelecekteki değişiklikleri kolaylaştırmak için kullanıcıların metin, panel ve arka plan renklerini belirtmesi adına iki argüman oluşturuldu.
theme_datacamp <- function(text_panel_color, background_color) { theme_bw()+ theme(text=element_text(size=28, family="Manjari", face = "bold", color = text_panel_color), # Eliminates grids panel.grid.minor = element_blank(), panel.grid.major = element_blank(), # Changes panel, plot and legend background to dark blue panel.background = element_rect(fill = background_color), plot.background = element_rect(fill = background_color), legend.background = element_rect(fill= background_color), # Changes legend texts color to white legend.text = element_text(color = text_panel_color, margin = margin(0, 0, 0, -0.5, "cm")), legend.title = element_text(color = text_panel_color), legend.text.align = 0, # Changes color of plot border to white panel.border = element_rect(size = 1, color = text_panel_color), # Changes color of axis texts to white axis.text.x = element_text(color = text_panel_color), axis.text.y = element_text(color = text_panel_color), axis.title.x = element_text(color= text_panel_color), axis.title.y = element_text(color= text_panel_color), # Changes axis ticks color to white axis.ticks.y = element_line(color = text_panel_color), axis.ticks.x = element_line(color = text_panel_color), # Adds margin plot.margin = margin(1, 1, 1, 1, "cm") )}Artık tercih ettiğiniz renkleri belirterek, grafiğinize doğrudan theme_datacamp() ekleyebilirsiniz. Burada DataCamp renklerini kullandım:
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+scale_color_gradient(name = "ºC", low = datacamp_colors$blue, high = datacamp_colors$pink)+ggtitle("Historical air temperature trend in Berkeley, CA")+xlab("Year")+ylab("Annual Mean Temperature in Berkeley [ºC]")+theme_datacamp(text_panel_color = datacamp_colors$green, background_color = datacamp_colors$darkblue)
Son olarak, Claus O. Wilke'nin Fundamentals of Data Visualization kitabının 14. bölümünde önerdiği gibi, eğilimi LOESS (yerel olarak tahmin edilen saçılım grafiği düzeltmesi) düzleştiricisiyle gösterebilirsiniz. Bunu, geom_smooth() öğesini içeren bir ggplot katmanı ekleyerek yapabilirsiniz.
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+geom_smooth(color = datacamp_colors$green, se = FALSE)+scale_color_gradient(name = "ºC", low = datacamp_colors$blue, high = datacamp_colors$pink)+ggtitle("Historical air temperature trend in Berkeley, CA", subtitle = "Visualization using theme_datacamp()")+xlab("Year")+ylab("Annual Mean Temperature in Berkeley [ºC]")+theme_datacamp(text_panel_color = datacamp_colors$green, background_color = datacamp_colors$darkblue)
Daha etkileyici görselleştirmeler üretmek için farklı renk ve yazı tipi kombinasyonlarını denemekten çekinmeyin. Aşağıda örneğin, LOESS eğrisini, paneli ve metin rengini beyaz olarak değiştiriyorum.
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+geom_smooth(color = "white", se = FALSE)+scale_color_gradient(name = "ºC", low = datacamp_colors$blue, high = datacamp_colors$pink)+ggtitle("Historical air temperature trend in Berkeley, CA", subtitle = "Visualization using theme_datacamp()")+xlab("Year")+ylab("Annual Mean Temperature in Berkeley [ºC]")+theme_datacamp(text_panel_color = "white", background_color = datacamp_colors$darkblue)
Sonuç
Bu eğitimde, R'de ggplot2'yi kullanarak tarihsel iklim verilerini etkili şekilde nasıl görselleştireceğinizi öğrendiniz. Güvenilir verilerin temininden özel bir ggplot2 teması oluşturmaya kadar her şeyi ele alarak, veri görselleştirme yoluyla iklim değişikliği konusunda farkındalık yaratma becerileri edindiniz.
Bir sonraki adım olarak, DataCamp'in Introduction to Data Visualization with ggplot2 ve Intermediate R kurslarıyla veri görselleştirme ve R programlamaya daha derinlemesine dalmayı düşünebilirsiniz. Bu kurslar burada edindiğiniz becerileri geliştirmenize ve daha karmaşık projelerin üstesinden gelmenize yardımcı olacaktır.
