suppressPackageStartupMessages({
library(babynames)
library(dplyr)
library(openintro)
})
Çizilen tüm grafiklerin başlığı, x ve y eksenleri etiketleri, rengi vb. düzenlemeler yapılarak özelleştirilebilir.
Temel fonksiyonlar:
qplot(): Hızlı grafik çizimi anlamına gelmektedir.
ggplot(): En sık kullanılan fonksiyondur.
Kullanımı:
qplot(x, y, data, geom)
ggplot(x, y, data, geom)
1.Yoğunluk Grafiği:geom_density()
2.Histogram Grafiği: geom_histogram()
3.Bar Grafiği: geom_bar()
4.Çizgi Grafiği: geom_line()
5.Saçılım Grafiği: geom_point()
6.Kutu Grafiği: geom_boxplot ()
Temel fonksiyonlar:
1.facet_grid()
2.facet_wrap()
Kullanımı:
facet_wrap(~değişken, ncol=n) #sütun sayısı
facet_wrap(~değişken, nrow=n) #satır sayısı
facet_grid(.~CINSIYET) #Buradaki nokta “boş”anlamına gelir.Yani “o eksende gruplama yok” demektir.
Çizilmiş verinin görselliğini güçlendirmek için kullanılır.
1.color parametresi:
geom_point(color = “purple”) # saçılım grafiğinin rengini seçer.
2.size ve shape parametreleri:
geom_point(color = “blue”,size=5, shape=“a”) # saçılım grafiğinin rengini ve şeklini belirler.
geom_point(position = “jitter”) # üst üste gelen noktaları kaydırır.
Her komut bir öncekine artı sembolü (+) ile eklenerek çok katmanlı bir çizim nesnesi oluşturulur.
📎1.alpha:
geom_point(alpha = 0.3) #şeffaflık düzeyini ayarlamak için kullanılır.
📎2.text:
geom_text(aes(label = CINSIYET)) #metinler veri sembolü olarak eklenebilir.
📎3.scale:
3.1.scale_x_continuous() ve scale_y_continuous(): Bu fonksiyonlar, sürekli değişkenler için x ve y eksenlerinin ölçeklerini özelleştirmek için kullanılır.
Örnek: scale_x_continuous(limits = c(0, 10), breaks = seq(0, 10, by = 2))
3.2.scale_x_discrete() ve scale_y_discrete(): Eksen etiketlerinin ve adlarının görünümünü özelleştirmek için kullanılır.
Örnek: scale_x_discrete(labels = c(“A”, “B”, “C”))
3.3. scale_color_() ve scale_fill_(): Renk ve dolgu gibi farklı estetikler için kullanılır.
Örnek: scale_color_manual(values = c(“red”, “blue”, “green”))
3.4. scale_size() ve scale_shape(): Br çizimdeki ögelerin boyutunu ve şeklini özelleştirmek için kullanılır.
📎4.Limitler: Sınırlar belirlenir. x ve y eksininin min, max değerleri belirlenir.
Örnek: limits = c(100,900)
📎5.labs:
Eksen isimlendirmeleri yapılır.
Örnek: labs(x = “Puanları”, y = “Puanları”, color = “Grup”)
library(babynames)
library(dplyr)
library(openintro)
library(ggplot2)
head(babynames)
## # A tibble: 6 × 5
## year sex name n prop
## <dbl> <chr> <chr> <int> <dbl>
## 1 1880 F Mary 7065 0.0724
## 2 1880 F Anna 2604 0.0267
## 3 1880 F Emma 2003 0.0205
## 4 1880 F Elizabeth 1939 0.0199
## 5 1880 F Minnie 1746 0.0179
## 6 1880 F Margaret 1578 0.0162
glimpse (babynames)
## Rows: 1,924,665
## Columns: 5
## $ year <dbl> 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880,…
## $ sex <chr> "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", …
## $ name <chr> "Mary", "Anna", "Emma", "Elizabeth", "Minnie", "Margaret", "Ida",…
## $ n <int> 7065, 2604, 2003, 1939, 1746, 1578, 1472, 1414, 1320, 1288, 1258,…
## $ prop <dbl> 0.07238359, 0.02667896, 0.02052149, 0.01986579, 0.01788843, 0.016…
bebek_isimleri <- babynames %>%
rename(yil = year,
cinsiyet = sex,
isim = name,
adet = n,
oran = prop) %>%
mutate (if_else (cinsiyet == "F", "K", "E"))
bebek_isimleri <- bebek_isimleri %>%
mutate(cinsiyet = if_else(cinsiyet == "F", "K", "E"))
bebek_isimleri %>%
group_by(isim, cinsiyet, yil) %>%
summarise(toplam = sum(adet)) %>% #o isim tüm yıllarda toplam kaç kere kullanılmış
arrange(desc(toplam)) %>% #toplama göre büyükten küçüğe sıralar
head(10) #ilk 10u verir
## `summarise()` has grouped output by 'isim', 'cinsiyet'. You can override using
## the `.groups` argument.
## # A tibble: 10 × 4
## # Groups: isim, cinsiyet [4]
## isim cinsiyet yil toplam
## <chr> <chr> <dbl> <int>
## 1 Linda K 1947 99686
## 2 Linda K 1948 96209
## 3 James E 1947 94756
## 4 Michael E 1957 92695
## 5 Robert E 1947 91642
## 6 Linda K 1949 91016
## 7 Michael E 1956 90620
## 8 Michael E 1958 90520
## 9 James E 1948 88588
## 10 Michael E 1954 88514
en_populer <- bebek_isimleri %>%
count(cinsiyet, isim, wt = adet, name = "toplam") %>%
group_by(cinsiyet) %>%
slice_max(order_by = toplam, n = 10)
ggplot(en_populer, aes(x = reorder(isim, toplam),
y = toplam,
fill = cinsiyet)) +
geom_col() +
coord_flip() +
scale_y_continuous(breaks = NULL) +
labs(title = "En Populer 10 İsim",
x = "İsim", y = "Toplam", fill = "Cinsiyet") +
theme_minimal()
Grafikte de görüldüğü gibi kız ve erkek isimleri arasından en çok tercih edilen erkek ismi “James” iken, en çok tercih edilen kız ismi ise “Mary” olarak belirlenmiştir.
Kız İsmi 👇
bebek_isimleri %>%
filter(isim == "Mary", cinsiyet == "K") %>% # sadece Mary ismini seçiyoruz
ggplot(aes(x = yil, y = adet)) +
geom_point(color = "deeppink", size = 2) +
labs(title = "Yıllara Gore 'Mary' İsminin Kullanımı",
x = "Yil",
y = "Bebek Sayısı") +
theme_minimal()
Grafikte görüldüğü gibi 1920 ve 1950’lerde Mary ismi en sık kullanılır isim iken, 1960’lardan sonra giderek düşmüş ve 2017 yılında neredeyse hiç kullanılmamıştır.
Erkek İsmi👇
bebek_isimleri %>%
filter(isim =="James", cinsiyet == "E") %>%
ggplot(aes(x=yil, y=adet)) +
geom_point(color="darkblue")+
labs(title="Yıllara Gore 'James' İsminin Kullanımı",
x="Yıl",
y="Bebek Sayısı") +
theme_minimal()
Grafikte görüldüğü gibi 1950’lerde James ismi en sık kullanılır isim iken, 1960’lardan sonra giderek düşmüş ve 2000’li yıllarda oldukça az kullanılır hale gelmiştir.
fav_isimler <- bebek_isimleri %>%
filter(isim %in% c("Elizabeth", "Emma", "Margaret", "Linda",
"Mary", "Thomas", "Michael", "William", "Robert", "Charles")) #%in% veri seti içinden seçmeye yarar
ggplot(fav_isimler, aes(x = isim, y = yil)) +
geom_boxplot(outlier.alpha = 0.3) +
labs(title = "Secilen İsimlerin Yıllık Dağılımı",
x = "İsim", y = "Yıl")
#kutuların içini renklendirmeyi başaramadım :(
Bu kutu-bıyık grafiği, seçilen klasik isimlerin yıllar içindeki kullanım dağılımını göstermektedir. Grafikte görüldüğü gibi çoğu isim 1880’lerden 2000’lere kadar kullanılmaktadır. Özellikle erkek isimleri olan Charles, Robert, William, Thomas ve Michael uzun kutulara sahiptir; bu da bu isimlerin uzun yıllar boyunca popülerliğini koruduğunu göstermektedir.Kadın isimlerinden Linda ve Margaret ise daha kısa kutulara sahiptir; bu, onların belirli dönemlerde popülerlik kazanıp sonrasında kullanımının azaldığını ifade eder. Mary ve Elizabeth isimleri ise geniş kutularıyla dikkat çekmektedir; bu durum, onların farklı zamanlarda das popülerliğini sürdürdüğünü göstermektedir.
ggplot(fav_isimler, aes(x = yil, y = adet, color = cinsiyet)) +
geom_line(linewidth = 1) +
facet_wrap(~ isim, scales = "free_y") +
labs(title = "Seçilen İsimlerin Cinsiyete Gore Yıllık Değişimi",
x = "Yıl", y = "Adet")
Grafikte yatay eksen yılları, dikey eksen ise her ismin o yıl kaç bebekte görüldüğünü temsil etmektedir. Kırmızı çizgiler erkek isimlerini, mavi çizgiler ise kız isimlerini göstermektedir. Grafik incelendiğinde, erkek isimlerinin (özellikle Michael, Robert, Thomas ve William) uzun yıllar boyunca istikrarlı bir biçimde kullanıldığı, 1950–1980 yılları arasında zirveye ulaştığı görülmektedir. Buna karşılık, kız isimleri (özellikle Linda, Mary ve Margaret) daha kısa dönemlerde popülerlik artışları göstermiştir; örneğin Linda ismi 1940–1960 arasında büyük bir yükseliş yaşamış, ardından hızla düşmüştür.Veri setine göre son yıllarda en sık kullanılan kız ismi Emma, erkek ismi ise William olarak belirlenmiştir.
max(bebek_isimleri$yil) #veri setindeki son yılın hangi yıl olduğunu merak ettiğim için yazdırdım
## [1] 2017
bebek_isimleri %>%
group_by(yil, cinsiyet) %>% #veriyi yıla ve cinsiyete göre grupladım
summarise(toplam = sum(adet)) %>%
ggplot(aes(x = yil, y = toplam, fill = cinsiyet)) +
geom_density(stat = "identity", alpha = 0.5, bw = 1) + #stat identity benim esapladığımı kullan demek
labs(
title = "Yıllara Gore Kız ve Erkek Doğumlarının Yoğunluk Dağılımı",
x = "Yıl",
y = "Doğum Yoğunluğu"
) +
theme_minimal()
## `summarise()` has grouped output by 'yil'. You can override using the `.groups`
## argument.
## Warning in geom_density(stat = "identity", alpha = 0.5, bw = 1): Ignoring
## unknown parameters: `bw`
Grafik, 1880’den 2017’ye kadar doğan kız ve erkek bebeklerin yoğunluk dağılımını göstermektedir. Görüldüğü üzere, doğum sayıları 1900’lerin başında düşükken 1950’lerden itibaren belirgin bir artış göstermiştir. Bu artış özellikle 1960–1980 döneminde en yüksek seviyelere ulaşmıştır. Kız ve erkek bebeklerin doğum eğrileri birbirine oldukça yakındır, bu da yıllar boyunca cinsiyet oranlarının benzer olduğunu göstermektedir.