ggplot2’ye Giriş

Veri Görselleştirme

Neden Veriyi Görselleştiriyoruz?

Neden Veriyi Görselleştiriyoruz?

  • Veri görselleştirme bir süsleme değil; analitik bir araçtır.

  • İnsan zihni, tablo veya sayı okumak için değil, görsel alanda (doğada) örüntü tanımak için optimize edilmiştir.

Neden Veriyi Görselleştiriyoruz?

Neden temelleri öğrenmeden R kullanıyoruz?

  • Zaman kısıtlaması.
  • Yapabilirsiniz! Birçok öğrenci yapabiliyor.
  • Sizi R öğrenmeye teşvik etmek için.

Görselleştirme Adımları

  1. Verinizi tanıyın
  2. Mesajınız ne?
    • Ne göstermek istiyorsunuz?
  3. Hangi tür değişkenleriniz var?
    • Sayısal: sürekli (fiyat (TL), ağırlık (kg), mesafe (km, m vb.) vb.) ya da kesikli (yaş, aile büyüklüğü vb.)?
    • Sayısal olmayan: nominal (cinsiyet, ırk, tişört rengi vb.), sıralı (tişört bedeni (S < M < L), eğitim düzeyi (ilkokul < ortaokul < lise < lisans…), memnuniyet derecesi (kötü < orta < iyi))
  4. Hangi tür grafik kullanabilirsiniz?
  5. Grafiği yap, gördüğün örüntüyü anla.
  6. Güzel hale getir.

Grafik Karar Tablosunu Kullanın

İlk Programımızı Yazalım!

Merhaba Dünya!

print("Hello world!")
[1] "Hello world!"

Kendini R’a tanıtabilir misin?

print("Hello R!, I am Mücahit")
[1] "Hello R!, I am Mücahit"

Aferin!

Veriye Geçmeden Önce

Gerekli Şeyler

Önce kullanmak istediğimiz paketleri yüklemeliyiz.

install.packages("tidyverse")
install.packages("janitor")
1
Bunları yalnızca daha önce hiç çalıştırmadıysanız çalıştırın. Bir paketi bir kez yüklemek yeterlidir.

Veriyi Oku

library(tidyverse)
library(janitor)
read.csv("https://raw.githubusercontent.com/mucahitzor/IKT2010/refs/heads/main/data/earnings.csv") %>%
  as_tibble() -> earnings
1
tidyverse ve janitor kütüphanelerini kullan; böylece bu kütüphanelerin veri görselleştirme için sunduğu fonksiyonlarını kullanabiliriz
2
Verim bu yolda (yol = verinin hangi adreste olduğu) bulunan bir csv dosyası, onu oku ve şunu yap ( %>% )
3
tibble olarak göster: tibble verimizi görmenin güzel bir yolu. -> earnings ile “bu veri setini belleğe (RAM) kaydet, istediğimde earnings yazarak kullanayım” diyoruz.

Veriyi İnceleme

Verinin nasıl göründüğüne bakalım. İki yol var:

earnings
1
Verinin adını yazmak konsolda nasıl göründüğünü gösterir
# A tibble: 200 × 3
      id gender income
   <int> <chr>   <dbl>
 1     1 Male   19376.
 2     2 Male    9540.
 3     3 Male   10501.
 4     4 Male   26262.
 5     5 Male   23313.
 6     6 Male   15835.
 7     7 Male   12728.
 8     8 Female 22247.
 9     9 Female 41456.
10    10 Male   16254.
# ℹ 190 more rows
earnings %>% view()
1
Veri setimi al ve bana daha ayrıntılı görsel olarak göster

Verimizi Anlamak

Değişkenlerimiz neler?

earnings
1
Verinin nasıl göründüğüne tekrar bakalım

Sayısal değişkenler hakkında değişken adlarını ve bilgileri görmek için summary() fonksiyonunu kullanıyoruz.

Yani R’a şunu söylememiz gerekiyor:

  • earnings adlı veri setimi al
  • ve bir sonraki satırda söyleyeceğim şeyi yap (%>%)
  • veri setinin özet istatistiklerini summary() fonksiyonunu kullarak ver.
earnings %>%
  summary()
       id            gender              income     
 Min.   :  1.00   Length:200         Min.   : 9448  
 1st Qu.: 50.75   Class :character   1st Qu.:15920  
 Median :100.50   Mode  :character   Median :21052  
 Mean   :100.50                      Mean   :22892  
 3rd Qu.:150.25                      3rd Qu.:27321  
 Max.   :200.00                      Max.   :53647  

Verimizi Anlamak

Değişkenlerimiz neler?

Sayısal olmayan değişkenler (cinsiyet gibi) için R’a şunu söylüyoruz:

earnings adlı veri setimi al ve şunu yap ( %>% ).

Görmek istediğimiz değişken adı hakkında istatistik göstermek için tabyl({değişken adı}) uygula. tabyl() fonksiyonunu gender adlı sayısal olmayan değişkenimize uygulamak istiyoruz.

earnings %>%
  tabyl(gender)
1
earnings adlı veri setimi al.
2
tabyl() fonksiyonu ile gender değişkeninin istatistiklerini göster.
 gender   n percent
 Female  91   0.455
   Male 109   0.545

Verimizi Anlamak

Bugünkü Hedefimiz: Gelir nasıl dağılıyor?

  • Gelirin nasıl dağıldığını bulmaya çalışıyoruz.

  • Gelir sürekli (continious) bir değişken.

  • Sürekli bir değişkenin nasıl dağıldığını görmek için: histogram veya yoğunluk grafiği kullabiliriz.

Gelir Nasıl Dağılıyor?

Sürekli bir değişkenin dağılımı

Histogram

Veriye tekrar bakalım

# A tibble: 200 × 3
      id gender income
   <int> <chr>   <dbl>
 1     1 Male   19376.
 2     2 Male    9540.
 3     3 Male   10501.
 4     4 Male   26262.
 5     5 Male   23313.
 6     6 Male   15835.
 7     7 Male   12728.
 8     8 Female 22247.
 9     9 Female 41456.
10    10 Male   16254.
# ℹ 190 more rows
  • İlk 10 kişinin gelir değerlerini görüyoruz.
  • Her satır (gözlem) bir kişidir.
  • Ama 200 gözlemimiz var ve income’ın nasıl dağıldığını bir şekilde anlamamız gerekiyor.
  • Bunu yalnızca tablodaki veriye bakarak anlamak imkansız.
  • Minimum, çeyrekler, medyan, ortalama ve maksimum değerleri görmek için özet istatistiklere bakabiliriz. Ama bu yine de bize görsel olarak göstermez.
earnings %>%
  summary()
       id            gender              income     
 Min.   :  1.00   Length:200         Min.   : 9448  
 1st Qu.: 50.75   Class :character   1st Qu.:15920  
 Median :100.50   Mode  :character   Median :21052  
 Mean   :100.50                      Mean   :22892  
 3rd Qu.:150.25                      3rd Qu.:27321  
 Max.   :200.00                      Max.   :53647  

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

  • Histogram, sürekli veriyi aralıklara (bin) gruplar ve her aralığa kaç gözlemin düştüğünü sayar.

  • Bir “bin” temel olarak bir aralıktır. Örneğin, aşağıdakilerin her biri 1000 genişliğinde bir “bin”dir:

    • “0-1000”
    • “1000-2000”
    • “2000-3000”
  • Sürekli veriyi binlere gruplamalı ve her bine kaç gözlemin ait olduğunu saymalıyız.

  • Bin genişliğini seçmek duruma göre değişir; farklı bin genişlikleri amaca göre deneyebiliriz. Her farklı bin aralığı farklı şekiller ortaya çıkaracaktır.

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

earnings %>%
  summary()
       id            gender              income     
 Min.   :  1.00   Length:200         Min.   : 9448  
 1st Qu.: 50.75   Class :character   1st Qu.:15920  
 Median :100.50   Mode  :character   Median :21052  
 Mean   :100.50                      Mean   :22892  
 3rd Qu.:150.25                      3rd Qu.:27321  
 Max.   :200.00                      Max.   :53647  
  • Gelirin histogramını 1000TL bin genişliğiyle elle çizmeye başlayalım. Binlerimiz gelirin minimum değerinden başlayacak.

    • “9000-10.000”, “10.000-11.000”, “11.000-12.000”…
  • Her gözlem için kişinin gelirine bakıp hangi bine ait olduğunu belirleyip saymaya başlıyoruz. Aynı bine düşen daha fazla gözlem gördükçe binin yüksekliğini (sayısı) gösteren y eksenindeki değerler artıyor.

  • Bunu yapmadan önce x ve y eksenlerimizi çizmemiz gerekiyor.

    • x ve y ekseni çizelim,
    • x ekseninde binler halinde parçalara ayrılmış gelir var, 9000’den başlayan 1000TL’lik binlerle.
    • y ekseninde her zaman sayı var; her bine ait gözlem sayısını gösteriyor.

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

İlk 10 gözlemi çizelim.

# A tibble: 200 × 3
      id gender income
   <int> <chr>   <dbl>
 1     1 Male   19376.
 2     2 Male    9540.
 3     3 Male   10501.
 4     4 Male   26262.
 5     5 Male   23313.
 6     6 Male   15835.
 7     7 Male   12728.
 8     8 Female 22247.
 9     9 Female 41456.
10    10 Male   16254.
# ℹ 190 more rows
  • 200 gözlemin tamamı için tek tek inceleyip çizmek çok zaman alacak.

  • Bunun yerine R’dan bunu bizim için yapmasını isteyebiliriz!

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

earnings adlı veri setimi al,

earnings

Bir görselleştirme yapmak istiyorum, veri setimi al ve ggplot uygula.

Elde edeceğimiz şey boş bir kâğıt parçası olacak. Çünkü henüz eksenlerimizi belirtmedik.

earnings %>%
  ggplot()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

Elle çizmeye benzer şekilde önce x ve y eksenini çiziyoruz. Bunu R ile yapmak için aes(x = {değişken adı}) fonksiyonunu kullanıyoruz. Ve bunu mevcut boş sayfamıza + sembolü ile ekliyoruz.

+ her zaman satırların sonunda olacak.

earnings %>%
  ggplot() +
  aes(x=income)
1
earnings adlı veri setimi al
2
Görselleştirme yapmak istiyorum
3
x eksenindeki değişkenim income

Histogramlar için yalnızca x değişkeninin adını vermemiz yeterli; R her gözlemi kendisi sayacak ve y ekseninde gösterecek!

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

Şimdi R’a histogram yapmasını söyleme zamanı.

Ne tür grafik istediğimizi söylemek için geom_{grafik türü} kullanıyoruz.

Örneğin, histogram yapmak için geom_histogram() kullanıyoruz.

Yoğunluk grafiği yapmak için geom_density() kullanıyoruz.

Bar grafik yapmak için geom_bar() kullanıyoruz.

Saçılım grafiği yapmak için geom_point() kullanıyoruz.

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

  • Şimdi R’a şunu söyleyelim:
    • earnings adlı veri setimi kullan ve sonra ( %>% ),
    • Görselleştirme yapmak için ggplot() kullan, +,
    • x değişkenim income, bunun üzerine (+) ekliyorum,
    • Bir histogram.

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_histogram()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

Önce görselleştirmemize bir tema ekleyerek bu berbat grafiği düzeltmeye başlayalım. theme_{tema adı} ile bir tema kullanabiliriz. theme’in her zaman son satırda olduğundan emin olun.

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_histogram() +
  theme_classic()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

Varsayılan olarak R, geom_histogram() içinde bir bin genişliği seçiyor; bunu görmesek de geom_histogram(binwidth = bir sayı) şeklindedir. Bin genişliğini istediğimiz değere değiştirmek istiyoruz: binwidth=1000

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_histogram(binwidth = 1000) +
  theme_classic()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

R ayrıca binleri hangi renkle dolduracağını da otomatik seçiyor. Doldurma (fill) rengini lightskyblue olarak değiştirmek istiyoruz; bunu geom_histogram(binwidth = 1000, fill={"renk adı"}) ile yapıyoruz.

Her argümanı birbirinden ayırmak için , kullandığımıza dikkat edin.

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_histogram(binwidth = 1000, fill = "lightskyblue") +
  theme_classic()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

Binlerin kenarlarının rengini değiştirmek için geom_histogram() içinde color={renk adı} argümanını kullanıyoruz. black yapalım.

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_histogram(binwidth = 1000, fill = "lightskyblue", color = "black") +
  theme_classic()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

  • Şimdi sıra sizde:
    • Şeklin nasıl değişeceğini görmek için farklı bir bin genişliği seçin,
    • Farklı bir dolgu (fill) ve kenar rengi seçin,
    • Farklı bir tema seçin
      • Tema seçeneklerini görmek için önceki theme_classic() temasını silin ve theme_ yazmaya başlayın; R size öneriler gösterecek.

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

  • Grafiği yorumlamaya geçmeden önce x ekseninde gösterilen değer sayılarını artırmak istiyorum. Şu an dağılımı görmek için yeterli olmayan 5 değerimiz var.

  • x eksenindeki değer sayısını 5’ten 10’a çıkarmak için scale_x_continuous(n.breaks=10) katmanını kullanın.

  • Bunu temadan önce eklemeyi unutmayın!

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_histogram(binwidth = 1000, fill = "lightskyblue", color = "black") +
  scale_x_continuous(n.breaks=10) +
  theme_classic()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

y ekseninde de aynı sorun var.

y eksenindeki değer sayısını nasıl artırabiliriz? x ekseni için fonksiyon scale_x_continuous(n.breaks=10) idi. y ekseninde kırılma sayısını 10 olarak ayarlayabilir misiniz?

scale_y_continuous(n.breaks =10)

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_histogram(binwidth = 1000, fill = "lightskyblue", color = "black") +
  scale_x_continuous(n.breaks=10) +
  scale_y_continuous(n.breaks=10) +
  theme_classic()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

Şimdi grafiği yorumlama zamanı.

  • Ne görüyoruz?
    • Minimum gelir yaklaşık 9000 görünürken maksimum yaklaşık 54.000.
    • İşçilerin çoğu 15-25.000 TL kazanıyor
    • Çok kazanan ve sayıca az olan kişiler var. Bunlar kim? Stajyerler ? Yöneticiler ?
  • Şekil nasıl?
    • Sol tarafta uzun binler (çubuklar) var -> Sağa çarpık (biliyorum, bana da mantıklı gelmiyor; ama böyle kabul edilmiş)
    • Dağılım sağa çarpık olduğundan ortalama muhtemelen medyandan büyük olacak. Sağdaki insanlar dağılımı bozuyor -> aykırı değerler?
  • Merkez nedir?
    • İşçilerin büyük çoğunluğu 15.000 - 20.000 aralığının ortasında bir yerde kazanıyor gibi görünüyor.

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

  • Grafiğimizi anladığımıza göre başkalarının da anlamasını sağlamalıyız; bunun için title (başlık) ve subtitle (alt başlık) ekliyoruz.

  • labs(title = "{başlığınız}", subtitle = "{alt başlığınız}", x = "{x ekseni etiketi}", y = "{y ekseni etiketi}") katmanını kullanın.

  • Cümle yazarken tırnak işaretleri arasında yazıyoruz.

  • Doğru: labs(title = "Aylık kazanç...")

  • Yanlış: labs(title = Aylık kazanç..)

  • Doğru: labs(x = "Gelir", y = "Gözlem sayısı")

  • Yanlış: labs(x = Gelir, y = Gözlem sayısı)

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_histogram(binwidth = 1000, fill = "lightskyblue", color = "black") +
  scale_x_continuous(n.breaks = 10) +
  scale_y_continuous(n.breaks = 10) +
    labs(
    title = "Çilek Mobilya, Mamak'taki Üretim İşçilerinin Aylık Kazanç Dağılımı",
    subtitle = "İşçilerin çoğu 15.000–25.000 TL arasında kazanıyor; dağılım sağa çarpık, az sayıda yüksek gelirli uç değer var",
    x = "Aylık Kazanç (Türk Lirası, TL)",
    y = "İşçi Sayısı"
  ) +
  theme_classic()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Histogram

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

  • İstatistik I’i hatırlıyor musunuz?
    • Rastgele sürekli değişkenlerden ve onların dağılımlarından bahsetmiştik.
    • Yoğunluk fonksiyonlarından (tekdüze dağılım, normal dağılım vb.) bahsetmiştik.

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

  • \[ f(x) = \frac{1}{\sigma \sqrt{2\pi}} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right) \]

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

  • Gelir sürekli bir rassal değişken olduğundan, histogram yerine kullanılabilecek bir alternatif density (yoğunluk) grafiğidir.
  • Yoğunluk grafiğinde, veriyi binlere gruplamak yerine, R dağılımı temsil eden sürekli bir eğri tahmin eder (yoğunluk fonksiyonunu hesaplar ve çizer).
  • Gelirin yoğunluk grafiğiyle nasıl dağıldığına bakalım.

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

earnings adlı verimizi kullanmak ve şunu yapmak istiyoruz ( %>% )

ggplot() görselleştirmesi uygula

x ekseni değişkeni olarak income ekle

Yoğunluk grafiği ekle: geom_density()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_density()
1
earnings adlı verimizi kullanmak ve şunu yapmak istiyoruz ( %>% )
2
ggplot() görselleştirmesi uygula
3
x ekseni değişkeni olarak income ekle
4
Yoğunluk grafiği ekle: geom_density()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

Hemen tercih ettiğiniz bir tema uygulayın.

Bundan önce, güzel bir tema kullanmak için bu temaları içeren yararlı bir paket yükleyelim

ggthemes paketini yüklemek istiyoruz; böylece bu paketin özel temalarını kullanabiliriz.

install.packages("ggthemes")

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

ggthemes paketinin temalarını kullanabilmek için R’a bu paketi kullanmasını söylememiz gerekiyor

library(ggthemes)

Burada kalmıştık

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_density()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

theme_ yazmaya başlayın; sağ taraftaki öneriler arasında ggthemes’i göreceksiniz; oradan bir tane seçin.

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_density() +
  theme_economist()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

Yoğunluk çizgisinin siyah rengini beğenmedim. geom_density(color = {"tercih ettiğiniz renk"}) içindeki color argümanını kullanarak “azure4” olarak değiştirelim

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_density(color = "azure4") +
  theme_economist()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

Çizginin kalınlığı biraz ince görünüyor; geom_density() içindeki linewidth argümanıyla artırabilir miyiz? Varsayılan olarak R geom_density(linewidth = 1) şeklinde otomatik olarak ayarlamış.

geom_density(color = {"tercih ettiğiniz renk"}, linewidth = {tercih ettiğiniz genişlik sayısı})

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_density(color = "azure4", linewidth = 1.5) +
  theme_economist()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

y ekseni etiketi (label, eksen adı) değişti, çünkü artık sayıları göstermiyoruz. Olasılık yoğunluğunu gösteriyoruz. Yükseklikler artık işçi sayısını değil, olasılık yoğunluğunu temsil ediyor; bunu y etiketinde (eksen adı) yansıtmalıyız.

x ve y değerleri uygun görünüyor. scale_x_continuous() ve scale_y_continuous() kullanmamıza gerek yok.

Başlığımız hâlâ iyi olsa da artık sayıları göstermediğimiz için alt başlık daha iyi olabilir. “Kazançların en yoğun olduğu aralık 15.000–25.000 TL; dağılım sağa çarpık” olarak değiştirelim

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_density(color = "azure4", linewidth = 1.5) +
    labs(
    title = "Çilek Mobilya, Mamak'taki Üretim İşçilerinin Aylık Kazanç Dağılımı",
    subtitle = "Kazançların en yoğun olduğu aralık 15.000–25.000 TL; dağılım sağa çarpık",
    x = "Aylık Kazanç (Türk Lirası, TL)",
    y = "Olasılık Yoğunluğu"
  ) +
  theme_economist()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin dağılımı

Yoğunluk Grafiği

Gelir Cinsiyetler Arasında Nasıl Dağılmış?

Sürekli bir değişkenin gruba göre dağılımı

Yoğunluk Grafiği

  • Peki ya işçilerin gelirinin cinsiyete göre değişip değişmediğini görmek isteseydik?

  • Her gözlem için cinsiyetimiz olduğundan bu bilgiyi de kullanabiliriz.

  • Bunu yapmanın farklı yolları var.

    • Cinsiyete göre çizgi türünü değiştirebiliriz.
    • Cinsiyete göre çizgi rengini değiştirebiliriz.

Gelir Cinsiyetler Arasında Nasıl Dağılmış?

Sürekli bir değişkenin gruba göre dağılımı

Yoğunluk Grafiği - cinsiyete göre çizgi rengini değiştir

Bu bizim kodumuz ve grafiğimizdi

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_density(color = "azure4", linewidth = 1.5) +
    labs(
    title = "Çilek Mobilya, Mamak'taki Üretim İşçilerinin Aylık Kazanç Dağılımı",
    subtitle = "İşçilerin çoğu 15.000–25.000 TL arasında kazanıyor; dağılım sağa çarpık, az sayıda yüksek gelirli uç değer var",
    x = "Aylık Kazanç (Türk Lirası, TL)",
    y = "İşçi Sayısı"
  ) +
  theme_economist()

Gelir Cinsiyetler Arasında Nasıl Dağılmış?

Sürekli bir değişkenin gruba göre dağılımı

Yoğunluk Grafiği - cinsiyete göre çizgi rengini değiştir

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_density(color = "azure4", linewidth = 1.5) +
    labs(
    title = "Çilek Mobilya, Mamak'taki Üretim İşçilerinin Aylık Kazanç Dağılımı",
    subtitle = "İşçilerin çoğu 15.000–25.000 TL arasında kazanıyor; dağılım sağa çarpık, az sayıda yüksek gelirli uç değer var",
    x = "Aylık Kazanç (Türk Lirası, TL)",
    y = "İşçi Sayısı"
  ) +
  theme_economist()
  • Şimdi çizginin rengini bir değişkene göre değiştirmek istiyoruz.
  • geom_density(color = "azure4") içindeki rengi geom_density(color = gender) olarak değiştirebilir miyiz?
  • Kendiniz deneyin

Gelir Cinsiyetler Arasında Nasıl Dağılmış?

Sürekli bir değişkenin gruba göre dağılımı

Yoğunluk Grafiği - cinsiyete göre renk türünü değiştir

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_density(color = gender, linewidth = 1.5) +
    labs(
    title = "Çilek Mobilya, Mamak'taki Üretim İşçilerinin Aylık Kazanç Dağılımı",
    subtitle = "İşçilerin çoğu 15.000–25.000 TL arasında kazanıyor; dağılım sağa çarpık, az sayıda yüksek gelirli uç değer var",
    x = "Aylık Kazanç (Türk Lirası, TL)",
    y = "İşçi Sayısı"
  ) +
  theme_economist()

Error: object 'gender' not found hatasını alıyoruz.

Bunun nedeni R’ın bize bir renk adı verdiğimizi sanması; kırmızı, mavi veya yeşil gibi. Ama gender bir renk adı değil. Bir değişken.

Bir şeyi (çizgi rengini, kalınlığını, şeklini) değişkene göre değiştirmek istediğimizde bunu geom_ içinde değil, aes() içinde yapıyoruz.

Bu yüzden geom_density(x = income) yerine aes(x = income) yazıyoruz. Çünkü x tek bir değer değil, bir değişken olmalı..

O halde yapmak istediğimiz şey aes(x = income) satırına gidip , ile ayırarak color = gender argümanını eklemek

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin gruba göre dağılımı

Yoğunluk Grafiği

earnings %>%
  ggplot() +
  aes(x = income, color  = gender) +
  geom_density(linewidth = 1.5) +
    labs(
    title = "Çilek Mobilya, Mamak'taki Üretim İşçilerinin Aylık Kazanç Dağılımı",
    subtitle = "İşçilerin çoğu 15.000–25.000 TL arasında kazanıyor; dağılım sağa çarpık, az sayıda yüksek gelirli uç değer var",
    x = "Aylık Kazanç (Türk Lirası, TL)",
    y = "İşçi Sayısı"
  ) +
  theme_economist()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin gruba göre dağılımı

Yoğunluk Grafiği

  • Grafimize cinsiyet bilgisini ekledik.

  • Artık tek bir dağılımı değil,

  • İki dağılımı karşılaştırıyoruz.

  • Artık gösterdiğimiz şey şu “Kazanç dağılımları cinsiyete göre farklılaşıyor mu?”.

  • Başlık ve alt başlığımız bunu yansıtmalı.

  • Başlığı “Cinsiyete Göre Aylık Kazanç” olarak değiştirin.

    • Hedef kitlemizin verinin Çilek Mobilya, Mamak’tan geldiğini bildiğini varsayalım (başlığı kısaltmak için).
  • Alt başlığı “Erkek ve kadın işçiler arasında belirgin bir fark yok” olarak değiştirin.

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin gruba göre dağılımı

Yoğunluk Grafiği

earnings %>%
  ggplot() +
  aes(x = income, color  = gender) +
  geom_density(linewidth = 1.5) +
    labs(
    title = "Cinsiyete Göre Aylık Kazanç",
    subtitle = "Erkek ve kadın işçiler arasında belirgin bir görsel fark yok",
    x = "Aylık Kazanç (Türk Lirası, TL)",
    y = "İşçi Sayısı"
  ) +
  theme_economist()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin gruba göre dağılımı

Yoğunluk Grafiği - cinsiyete göre renk türünü değiştir

Renk yerine linetype’ı cinsiyete göre değiştirebilirdik.

Yapabilir misiniz?

earnings %>%
  ggplot() +
  aes(x = income, linetype  = gender) +
  geom_density(linewidth = 1.5) +
    labs(
    title = "Cinsiyete Göre Aylık Kazanç",
    subtitle = "Erkek ve kadın işçiler arasında belirgin bir görsel fark yok",
    x = "Aylık Kazanç (Türk Lirası, TL)",
    y = "İşçi Sayısı"
  ) +
  theme_economist()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin gruba göre dağılımı

Yoğunluk Grafiği - cinsiyete göre renk türünü değiştir

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin gruba göre dağılımı

Histogram

Histogram kodumuzu hatırlıyor musunuz?

earnings %>%
  ggplot() +
  aes(x = income) +
  geom_histogram(binwidth = 1000, fill = "lightskyblue", color = "black") +
  scale_x_continuous(n.breaks = 10) +
  scale_y_continuous(n.breaks = 10) +
    labs(
    title = "Çilek Mobilya, Mamak'taki Üretim İşçilerinin Aylık Kazanç Dağılımı",
    subtitle = "İşçilerin çoğu 15.000–25.000 TL arasında kazanıyor; dağılım sağa çarpık, az sayıda yüksek gelirli uç değer var",
    x = "Aylık Kazanç (Türk Lirası, TL)",
    y = "İşçi Sayısı"
  ) +
  theme_classic()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin gruba göre dağılımı

Histogram

Binleri tek bir renkle doldurmak yerine, cinsiyete göre fill yapalım. Bu arada temayı daha güzel biriyle değiştirin.

earnings %>%
  ggplot() +
  aes(x = income, fill = gender) +
  geom_histogram(binwidth = 1000, color = "black",) +
  scale_x_continuous(n.breaks = 10) +
  scale_y_continuous(n.breaks = 10) +
    labs(
    title = "Çilek Mobilya, Mamak'taki Üretim İşçilerinin Aylık Kazanç Dağılımı",
    subtitle = "İşçilerin çoğu 15.000–25.000 TL arasında kazanıyor; dağılım sağa çarpık, az sayıda yüksek gelirli uç değer var",
    x = "Aylık Kazanç (Türk Lirası, TL)",
    y = "İşçi Sayısı"
  ) +
  theme_classic()

Gelir Nasıl Dağılmış?

Sürekli bir değişkenin gruba göre dağılımı

Histogram

  • Bu grafikte pek çok sorun var

  • Histogramı yalnızca bir değişkenin dağılımını basitçe gösermek için kullanın; gruba göre dağılım karşılaştırması yapmanız gerekiyorsa density grafiği kullanın.

  • Amacınız “Her gelir aralığına kaç işçi düşüyor?” göstermekse histogram doğru grafiktir (yoğunluk grafiği de kabul edilebilir; yorum biraz farklılaşır).

    • y ekseni sayıları gösterir
    • “.. - .. TL arasında yaklaşık 10 işçi kazanıyor” diyebilirsiniz.
  • Amacınız “Gelir dağılımları cinsiyete göre farklılaşıyor mu?” göstermekse yoğunluk grafiği daha uygun olacaktır

    • Şekli grupları karşılaştırmamızı kolaylaştırır.
    • Üst üste binme sorunu yoktur.
    • Dağılımları karşılaştırırken yoğunluk grafiği kullanmak daha iyidir.