Ana içeriğe atla

R için ggplot2'de Facet'ler

Bu eğitimde, ggplot'un facetleme işlevlerinden en iyi şekilde nasıl yararlanacağınızı öğreneceksiniz.
Güncel 3 Eki 2026  · 8 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Giriş

Facetleme ile çok panelli grafikler oluşturabilir ve bir panelin ölçeklerinin diğerininkiyle nasıl ilişkili olduğunu kontrol edebilirsiniz.

Basit Facet Kullanımı

ggplot2'ye biraz aşinaysanız, ggplot() işlevine yapılan çağrının temel yapısını bilirsiniz. ggplot2'ye giriş için ggplot2 kursumuza göz atabilirsiniz. ggplot çağırdığınızda, bir veri kaynağı, genellikle bir veri çerçevesi sağlarsınız, ardından ggplot'tan veri kaynağımızdaki farklı değişkenleri x veya y eksenlerinin konumu ya da noktalarımızın veya çubuklarımızın rengi gibi farklı estetiklere eşlemesini istersiniz. Facet'lerle değişkenleri eşlemek için ek bir yol kazanırsınız. Bunu göstermek için, çeşitli ülkeler için bir dizi ekonomik gösterge içeren aşağıdaki veri setinden yararlanacağız. Bunların çoğu, her ülkenin Gayri Safi Yurtiçi Hasılası (GSYH) olan GDP'nin varyantlarıdır.

 print(econdata)
##   Country  GDP_nom  GDP_PPP GDP_nom_per_capita GDP_PPP_per_capita
## 1     USA 19390600 19390600              59501              59495
## 2  Canada  1652412  1769270              45077              48141
## 3   China 12014610 23159107               8643              16807
## 4   Japan  4872135  5428813              38440              42659
## 5  France  2583560  2835746              39869              43550
## 6 Germany  3684816  4170790              44550              50206
## 7  Sweden  3684816   520937              53218              51264
## 8 Ireland   333994   343682              70638              72632
##   GNI_per_capita        Region
## 1          58270 North America
## 2          42870 North America
## 3           8690          Asia
## 4          38550          Asia
## 5          37970        Europe
## 6          43490        Europe
## 7          52590        Europe
## 8          55290        Europe

Aşağıdaki değişkenler bulunmaktadır:

Country: Açıklamaya gerek yok!

GDP_nom: ABD doları cinsinden cari fiyatlarla GSYH

GDP_PPP: Farklı satın alma güçleri için düzeltilmiş GSYH

GDP_nom_per_capita: Kişi başına ABD doları cinsinden cari fiyatlarla GSYH

GDP_PPP_per_capita: Kişi başına satın alma gücü paritesine göre düzeltilmiş GSYH

GNI_per_capita: Her ülke için kişi başına düşen Gayri Safi Milli Gelir.

Region: Ülkenin bulunduğu dünya bölgesi.

Öncelikle, her ülkenin cari fiyatlarla GSYH'sinin basit bir çubuk grafiğini oluşturalım.

ggplot(econdata, aes(x=Country, y=GDP_nom))+
  geom_bar(stat='identity', fill="forest green")+
  ylab("GDP (nominal)")
plot

Ayrıca başka bir değişkeni, PPP'ye göre düzeltilmiş GSYH'yi de çizebilirsiniz.

ggplot(econdata, aes(x=Country, y=GDP_PPP))+
  geom_bar(stat='identity', fill="forest green")+
  ylab("GDP (PPP)")
plot

Bu, sonuncusuna benzer ikinci ayrı bir grafik verir, ancak farklı bir değişkenden yararlanır. Diyelim ki hem GSYH (cari) hem de GSYH (PPP)'yi birlikte çizmek istiyorsunuz. Bunu yapmak için facetleme kullanacaksınız. Öncelikle verilerinizi yeniden biçimlendirmeniz gerekecek; her değişkenin kendi sütununda olduğu "geniş" formattan, ölçümlerinizi tek bir sütunda, her satırda hangi ölçümü kullandığımızı belirten bir anahtar değişkeni ise başka bir sütunda tuttuğunuz "uzun" formata dönüştüreceksiniz.

econdatalong <- gather(econdata, key="measure", value="value", c("GDP_nom", "GDP_PPP"))

Veriler bu formata geldikten sonra, facet'lerle çizim yapmak için anahtar değişkenimizi kullanabilirsiniz. İlk grafiğimizden cari GSYH'yi ve ikinci grafikten GSYH (PPP)'yi birlikte gösteren basit bir grafik oluşturalım. Bunu yapmak için, kodunuzu +facet_wrap() ekleyecek ve facetleme için anahtar değişkenimiz ~measure'ın kullanılacağını belirtecek şekilde basitçe değiştirirsiniz.

ggplot(econdatalong, aes(x=Country, y=value))+
  geom_bar(stat='identity', fill="forest green")+
  facet_wrap(~measure)
plot

Bu işe yarıyor, ancak ülke adlarının ne kadar sıkıştığına dikkat edeceksiniz. Panellerimizi yeniden düzenleyelim.

Yerleşimi Özelleştirme ve Yeniden Sıralama

facet_wrap() komutu, kaç sütun kullanılacağını otomatik olarak seçer. Bunu doğrudan ncol= ile şu şekilde belirtebilirsiniz:

ggplot(econdatalong, aes(x=Country, y=value))+
  geom_bar(stat='identity', fill="forest green")+
  facet_wrap(~measure,  ncol=1)
plot

Yukarıdaki x ekseninde ülkelerin alfabetik sırayla dizildiğini muhtemelen fark etmişsinizdir. Bunu değiştirmek isterseniz, bunu yapmanın en kolay yolu Country faktörünün seviyelerini ayarlamaktır. Bu yeniden sıralamayı yapalım ve ülkeleri toplam cari GSYH'ye göre düzenleyelim.

econdata$Country <- factor(econdata$Country, levels= econdata$Country[order(econdata$GDP_nom)])


econdatalong <- gather(econdata, key="measure", value="value", c("GDP_nom", "GDP_PPP"))


ggplot(econdatalong, aes(x=Country, y=value))+
  geom_bar(stat='identity', fill="forest green")+
  facet_wrap(~measure,  ncol=1)
plot

strip.position argümanı ile facet etiketlerini sol tarafa taşımak gibi ek özelleştirmeler de yapabilirsiniz.

ggplot(econdatalong, aes(x=Country, y=value))+
  geom_bar(stat='identity', fill="forest green")+
  facet_wrap(~measure,  ncol=1, strip.position = "left")
plot

Facet'leri Etiketleme

Facet'lerin, measure faktörünün seviyelerinden alınan kısa basit başlıklara sahip olduğunu fark etmiş olabilirsiniz. Bunu toparlayalım ve facet'lerimize daha güzel etiketler verelim. Bunu yapmak için, variable_names değerlerinden biri istendiğinde uygun adı döndürecek basit bir etiketleyici işlevi variable_labeller oluşturacaksınız. Ardından bu işlevi facet_wrap'ın labeller argümanına geçirirsiniz.

variable_names <- list(
  "GDP_nom" = "GDP (nominal)" ,
  "GDP_PPP" = "GDP (purchasing power parity)"
)


variable_labeller <- function(variable,value){
  return(variable_names[value])
}


ggplot(econdatalong, aes(x=Country, y=value))+
  geom_bar(stat='identity', fill="forest green")+
  facet_wrap(~measure,  ncol=1, labeller=variable_labeller)
plot

Ölçekler ve Alanla Oynamak

Her bir ekonomik ölçümü kullanarak daha büyük bir facet'li grafik oluşturalım.

econdatalong <- gather(econdata, key="measure", value="value", c( "GDP_nom" , "GDP_PPP" ,"GDP_nom_per_capita", "GDP_PPP_per_capita" ,"GNI_per_capita"))

variable_names <- list(
  "GDP_nom" = "GDP (nominal)" ,
  "GDP_PPP" = "GDP (purchasing power parity)",
  "GDP_nom_per_capita" = "GDP (nominal) per capita",
  "GDP_PPP_per_capita" = "GDP (purchasing power parity) per capita",
  "GNI_per_capita"  = "GNI per capita"
)


variable_labeller <- function(variable,value){
  return(variable_names[value])
}



ggplot(econdatalong, aes(x=Country, y=value))+
  geom_bar(stat='identity', fill="forest green")+
  facet_wrap(~measure,  ncol=1, labeller= variable_labeller)+
scale_y_continuous(breaks = pretty(econdatalong$value, n = 10))
plot

Bu hiç iyi değil! Panellerin üçü için değerleri göremiyorsunuz. Neden? Bunun nedenini görmek için birincil verilere bakalım.

summary(econdata)
##     Country     GDP_nom            GDP_PPP         GDP_nom_per_capita
##  Ireland:1   Min.   :  333994   Min.   :  343682   Min.   : 8643     
##  Canada :1   1st Qu.: 2350773   1st Qu.: 1457187   1st Qu.:39512     
##  France :1   Median : 3684816   Median : 3503268   Median :44814     
##  Germany:1   Mean   : 6027118   Mean   : 7202368   Mean   :44992     
##  Sweden :1   3rd Qu.: 6657754   3rd Qu.: 8919260   3rd Qu.:54789     
##  Japan  :1   Max.   :19390600   Max.   :23159107   Max.   :70638     
##  (Other):2                                                           
##  GDP_PPP_per_capita GNI_per_capita            Region
##  Min.   :16807      Min.   : 8690   Asia         :2  
##  1st Qu.:43327      1st Qu.:38405   Europe       :4  
##  Median :49174      Median :43180   North America:2  
##  Mean   :48094      Mean   :42215                    
##  3rd Qu.:53322      3rd Qu.:53265                    
##  Max.   :72632      Max.   :58270                    
##

Her sütuna baktığınızda, her sütundaki değerlerin birkaç mertebeye yayıldığını görürsünüz. Varsayılan olarak facetleme, hem X hem de Y eksenleri için aynı sınır ve aralıkları kullanır. Bunu değiştirmek için, facetleme kodunuza scales="free_y" ekleyerek her facet'in kendi bağımsız ölçeğini kullanmasını sağlayabilirsiniz.

ggplot(econdatalong, aes(x=Country, y=value))+
  geom_bar(stat='identity', fill="forest green")+
  facet_wrap(~measure, scales="free_y", ncol=1,  labeller= variable_labeller)
plot

Bu çok daha iyi. Artık her facet'in kendi bağımsız y ekseni var.

Alt Bölümler Oluşturmak için Facet Kullanımı

Veri setimizde, ilgili ülkenin bulunduğu bölgeyi belirten Region değişkeninin de bulunduğunu fark etmiş olabilirsiniz. Bu değişkeni, çubuklarımızı bölgeye göre renklendirmek için aşağıdaki gibi kullanabilirsiniz:

ggplot(econdatalong, aes(x=Country, y=value, fill=Region))+
  geom_bar(stat='identity')+
  facet_wrap(~measure, scales="free_y", ncol=1, labeller= variable_labeller)
plot

Ancak bu biraz karmaşık; keşke farklı bölgelerin her birini kendi alt paneline koyabilseydiniz. Facetleme ile bunu yapabilirsiniz! Burada, facet'leri iki değişkene, Region ve measure'a eşlemek için facet_wrap yerine facet_grid kullanacaksınız; böylece bu iki değişken, grafiklerden oluşan bir ızgaranın satır ve sütunlarına yayılacak. Ayrıca, farklı panellerimizin farklı miktarda alan kaplamasına izin vermek için scales="free" ve space="free" ayarlarını yaptığınızı unutmayın. Hem satırlar hem de etiketler için adlar üretecek yeni bir etiketleyici işlevi de oluşturmanız gerekecek.

variable_names <- list(
  "GDP_nom" = "GDP \n(nominal)" ,
  "GDP_PPP" = "GDP \n(PPP)",
  "GDP_nom_per_capita" = "GDP (nominal)\n per capita",
  "GDP_PPP_per_capita" = "GDP (PPP)\n per capita",
  "GNI_per_capita"  = "GNI \nper capita"
)



region_names <- levels(econdata$Region)


variable_labeller2 <- function(variable,value){
  if (variable=='measure') {
  return(variable_names[value])
  } else {
    return(region_names)
  }
}

ggplot(econdatalong, aes(x=Country, y=value, fill=Region))+
  geom_bar(stat='identity')+
  facet_grid(measure~Region, scales="free", space="free_x",  labeller= variable_labeller2)
plot

Şimdi çok daha net! Her bölgenin kendi panel sütunu, her ölçütün ise kendi çubuk satırı var.

Bu eğitim burada sona eriyor. Facet'ler hakkında bilgi edinmekten keyif aldığınızı umuyorum.

Daha fazla bilgi edinmek isterseniz, DataCamp'in Trelliscope ile Büyük Verileri Görselleştirme kursunu alın.

Tidyverse'e Başlarken: Eğitim yazımıza göz atın.

Konular
R
Veri Bilimi

R Kursları

Kurs

R’ye Giriş

4 sa
3.1M
Vektörler, listeler ve veri çerçeveleri de dahil olmak üzere R'da veri analizinin temellerini öğrenin ve gerçek veri setleriyle R pratiği yapın.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör