ggplot2 kullanarak R'deki Dağılım Grafiği (Örnek ile)
Grafikler veri analizi sürecinin üçüncü kısmıdır. İlk bölüm bununla ilgili veri çekme, ikinci bölüm şu konuyu ele alıyor verileri temizleme ve işleme. Son olarak, veri bilimcinin şunları yapması gerekebilir: sonuçlarını grafiksel olarak iletin.
Veri bilimcisinin işi aşağıdaki resimde incelenebilir
- Bir veri bilimcinin ilk görevi bir araştırma sorusu tanımlamaktır. Bu araştırma sorusu projenin amaç ve hedeflerine bağlıdır.
- Bundan sonra en öne çıkan görevlerden biri özellik mühendisliğidir. Veri bilimcinin verileri toplaması, işlemesi ve temizlemesi gerekiyor
- Bu adım tamamlandığında veri kümesini keşfetmeye başlayabilir. Bazen yeni bir keşif nedeniyle orijinal hipotezi geliştirmek ve değiştirmek gerekebilir.
- Zaman açıklayıcı Analiz başarılırsa, veri bilimci okuyucunun kapasitesini dikkate almalıdır. Temel kavramları ve modelleri anlamak.
- Sonuçları tüm paydaşların anlayabileceği bir formatta sunulmalıdır. En iyi yöntemlerden biri iletişim kurmak sonuçlar bir aracılığıyla grafik.
- Grafikler karmaşık analizleri basitleştirmek için harika bir araçtır.
ggplot2 paketi
Eğitimin bu kısmı R ile grafiklerin/grafiklerin nasıl oluşturulacağına odaklanıyor.
Bu eğitimde ggplot2 paketini kullanacaksınız. Bu paket, Wilkinson, 2005 tarafından yazılan Grafiğin Dilbilgisi kitabının tutarlı temeline dayanmaktadır. ggplot2 çok esnektir, birçok temayı ve olay örgüsünü yüksek düzeyde soyutlamayla birleştirir. Ggplot2 ile 3 boyutlu grafikler çizemez ve etkileşimli grafikler oluşturamazsınız.
ggplot2'de bir grafik aşağıdaki argümanlardan oluşur:
- veri
- estetik haritalama
- geometrik nesne
- istatistiksel dönüşümler
- terazi
- koordinat sistemi
- konum ayarlamaları
- faceting
Bu derste bu argümanları nasıl kontrol edeceğinizi öğreneceksiniz.
Ggplot2'nin temel sözdizimi şöyledir:
ggplot(data, mapping=aes()) + geometric object arguments: data: Dataset used to plot the graph mapping: Control the x and y-axis geometric object: The type of plot you want to show. The most common object are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
Dağılım grafiği
Ggplot'un mtcars veri kümesiyle nasıl çalıştığını görelim. Mpg değişkeni ve drat değişkeninin dağılım grafiğini çizerek başlarsınız.
Temel dağılım grafiği
library(ggplot2)
ggplot(mtcars, aes(x = drat, y = mpg)) +
geom_point()
Kod Açıklama
- İlk önce veri kümesi mtcar'larını ggplot'a iletirsiniz.
- aes() argümanının içine x eksenini ve y eksenini eklersiniz.
- + işareti, R'nin kodu okumaya devam etmesini istediğiniz anlamına gelir. Kodu kırarak daha okunabilir hale getirir.
- Geometrik nesne için geom_point() işlevini kullanın.
Çıktı:
Gruplarla dağılım grafiği
Bazen değerleri bir grup veriye (yani faktör düzeyindeki verilere) göre ayırmak ilginç olabilir.
ggplot(mtcars, aes(x = mpg, y = drat)) +
geom_point(aes(color = factor(gear)))
Kod Açıklama
- geom_point() içindeki aes(), grubun rengini kontrol eder. Grup bir faktör değişkeni olmalıdır. Böylece değişken dişliyi bir faktöre dönüştürürsünüz.
- Toplamda, noktaların rengini değiştiren aes(color = Factor(gear)) koduna sahipsiniz.
Çıktı:
Ekseni değiştir
Verileri yeniden ölçeklendirmek, veri bilimci işinin büyük bir parçasıdır. Nadir durumlarda veriler güzel bir çan şeklinde gelir. Verilerinizi aykırı değerlere karşı daha az hassas hale getirmenin bir çözümü, onları yeniden ölçeklendirmektir.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
geom_point(aes(color = factor(gear)))
Kod Açıklama
- log()'daki x ve y değişkenlerini doğrudan aes() eşlemesinin içinde dönüştürürsünüz.
Standardizasyon veya normalizasyon gibi başka herhangi bir dönüşümün uygulanabileceğini unutmayın.
Çıktı:
Uygun değerlere sahip dağılım grafiği
Grafiğe başka bir bilgi düzeyi ekleyebilirsiniz. Doğrusal bir regresyonun uygun değerini çizebilirsiniz.
my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
geom_point(aes(color = factor(gear))) +
stat_smooth(method = "lm",
col = "#C42126",
se = FALSE,
size = 1)
my_graph
Kod Açıklama
- grafik: Grafiğinizi graph değişkenine depolarsınız. Daha sonraki kullanımlar için yararlıdır veya çok karmaşık kod satırlarından kaçınırsınız
- stat_smooth() argümanı yumuşatma yöntemini kontrol eder
- yöntem = “lm”: Doğrusal regresyon
- col = “#C42126”: Çizginin kırmızı renginin kodu
- se = FALSE: Standart hatayı gösterme
- boyut = 1: çizginin boyutu 1'dir
Çıktı:
Başka yumuşatma yöntemlerinin de mevcut olduğunu unutmayın
- gösteriş
- gam
- kayıp: varsayılan değer
- jant
Grafiğe bilgi ekleme
Şimdiye kadar grafiklere bilgi eklemedik. Grafiklerin bilgilendirici olması gerekir. Okuyucu, ek belgelere başvurmadan sadece grafiğe bakarak veri analizinin ardındaki hikayeyi görmelidir. Bu nedenle, grafiklerin iyi etiketlere ihtiyacı vardır. Etiketleri labs() fonksiyonuyla ekleyebilirsiniz.
lab()'ın temel sözdizimi şöyledir:
lab(title = "Hello Guru99") argument: - title: Control the title. It is possible to change or add title with: - subtitle: Add subtitle below title - caption: Add caption below the graph - x: rename x-axis - y: rename y-axis Example:lab(title = "Hello Guru99", subtitle = "My first plot")
Başlık ekle
Eklenmesi zorunlu bilgilerden biri elbette bir başlıktır.
my_graph +
labs(
title = "Plot Mile per hours and drat, in log"
)
Kod Açıklama
- my_graph: Sakladığınız grafiği kullanırsınız. Grafiğe her yeni bilgi eklediğinizde tüm kodların yeniden yazılmasını önler.
- Başlığı lab() içine sarıyorsunuz.
- Hattın kırmızı renginin kodu
- se = FALSE: Standart hatayı gösterme
- boyut = 1: çizginin boyutu 1'dir
Çıktı:
Dinamik ada sahip bir başlık ekleyin
Dinamik bir başlık, başlığa daha kesin bilgiler eklemek açısından faydalıdır.
Statik metni ve dinamik metni yazdırmak için Paste() işlevini kullanabilirsiniz. Paste() fonksiyonunun temel sözdizimi şöyledir:
paste("This is a text", A)
arguments
- " ": Text inside the quotation marks are the static text
- A: Display the variable stored in A
- Note you can add as much static text and variable as you want. You need to separate them with a comma
Örnek:
A <-2010
paste("The first year is", A)
Çıktı:
## [1] "The first year is 2010"
B <-2018
paste("The first year is", A, "and the last year is", B)
Çıktı:
## [1] "The first year is 2010 and the last year is 2018"
Grafiğimize dinamik bir isim yani mpg ortalaması ekleyebilirsiniz.
mean_mpg <- mean(mtcars$mpg)
my_graph + labs(
title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg)
)
Kod Açıklama
- Ortalama_mpg değişkeninde saklanan ortalama(mtcars$mpg) ile mpg ortalamasını oluşturursunuz
- Mpg'nin ortalama değerini döndüren dinamik bir başlık oluşturmak için Paste() işlevini Mean_mpg ile birlikte kullanırsınız.
Çıktı:
Altyazı ekle
İki ek ayrıntı grafiğinizi daha açık hale getirebilir. Altyazı ve resim yazısı hakkında konuşuyorsunuz. Altyazı, başlığın hemen altına gelir. Başlık, hesaplamayı kimin yaptığı ve verilerin kaynağı hakkında bilgi verebilir.
my_graph +
labs(
title =
"Relation between Mile per hours and drat",
subtitle =
"Relationship break down by gear class",
caption = "Authors own computation"
)
Kod Açıklama
- Lab()'ın içinde şunları eklediniz:
- title = “Saat başına mil ile sürüklenme arasındaki ilişki”: Başlık ekle
- altyazı = "İlişkinin dişli sınıfına göre dökümü": Altyazı ekle
- caption = “Yazarın kendi hesaplaması: Başlık ekle
- Her yeni bilgiyi virgülle ayırırsınız, ,
- Kod satırlarını kırdığınızı unutmayın. Zorunlu değildir ve yalnızca kodun daha kolay okunmasına yardımcı olur.
Çıktı:
X eksenini ve y eksenini yeniden adlandırın
Veri kümesindeki değişkenler her zaman açık olmayabilir veya birden fazla kelime olduğunda geleneksel olarak _ kullanın (yani GDP_CAP). Grafiğinizde böyle bir ad görünmesini istemezsiniz. Adı değiştirmek veya birimler gibi daha fazla ayrıntı eklemek önemlidir.
my_graph +
labs(
x = "Drat definition",
y = "Mile per hours",
color = "Gear",
title = "Relation between Mile per hours and drat",
subtitle = "Relationship break down by gear class",
caption = "Authors own computation"
)
Kod Açıklama
- Lab()'ın içinde şunları eklediniz:
- x = “Drat tanımı”: X ekseninin adını değiştirin
- y = “Saat başına mil”: Y ekseninin adını değiştirin
Çıktı:
Teraziyi kontrol edin
Eksen ölçeğini kontrol edebilirsiniz.
Bir sayı dizisi oluşturmanız gerektiğinde seq() işlevi kullanışlıdır. Temel sözdizimi şöyledir:
seq(begin, last, by = x) arguments: - begin: First number of the sequence - last: Last number of the sequence - by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`
Örneğin, 0'lü adımlarla 12'dan 3'ye kadar bir aralık oluşturmak istiyorsanız dört sayınız olur: 0 4 8 12
seq(0, 12,4)
Çıktı:
## [1] 0 4 8 12
X ekseninin ve y ekseninin ölçeğini aşağıdaki gibi kontrol edebilirsiniz
my_graph +
scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) +
scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) +
labs(
x = "Drat definition",
y = "Mile per hours",
color = "Gear",
title = "Relation between Mile per hours and drat",
subtitle = "Relationship break down by gear class",
caption = "Authors own computation"
)
Kod Açıklama
- Scale_y_continuous() işlevi şunları kontrol eder: y-ekseni
- Scale_x_continuous() işlevi, x koordinatı.
- Parametre sonları eksenin bölünmesini kontrol eder. Sayı sırasını manuel olarak ekleyebilir veya seq() işlevini kullanabilirsiniz:
- sıra(1, 3.6, by = 0.2): 2.4'lük adımlarla 3.4'ten 3'e kadar altı sayı oluşturun
- sıra(1, 1.6, by = 0.1): 1'lik adımlarla 1.6'den 1'ya kadar yedi sayı oluşturun
Çıktı:
Tema
Son olarak R, senaryoyu farklı temalarla özelleştirmemize olanak tanıyor. ggplot2 kütüphanesi sekiz tema içerir:
- theme_bw()
- theme_light()
- theme_classis()
- theme_linedraw()
- theme_dark()
- theme_minimal()
- theme_gray()
- theme_void()
my_graph +
theme_dark() +
labs(
x = "Drat definition, in log",
y = "Mile per hours, in log",
color = "Gear",
title = "Relation between Mile per hours and drat",
subtitle = "Relationship break down by gear class",
caption = "Authors own computation"
)
Çıktı:
Arsaları Kaydet
Tüm bu adımlardan sonra sıra grafiğinizi kaydedip paylaşmaya geliyor. Grafiği çizdikten hemen sonra ggsave('NAME OF THE FILE) öğesini eklersiniz ve sabit sürücüde depolanır.
Grafik çalışma dizinine kaydedilir. Çalışma dizinini kontrol etmek için şu kodu çalıştırabilirsiniz:
directory <-getwd() directory
Harika grafiğinizi çizelim, kaydedelim ve konumunu kontrol edelim
my_graph +
theme_dark() +
labs(
x = "Drat definition, in log",
y = "Mile per hours, in log",
color = "Gear",
title = "Relation between Mile per hours and drat",
subtitle = "Relationship break down by gear class",
caption = "Authors own computation"
)
Çıktı:
ggsave("my_fantastic_plot.png")
Çıktı:
## Saving 5 x 4 in image
not: Yalnızca pedagojik amaçlı olarak, sizin için dizin klasörünü açmak üzere open_folder() adında bir işlev oluşturduk. Aşağıdaki kodu çalıştırmanız ve resmin nerede saklandığını görmeniz yeterlidir. my_fantastic_plot.png adında bir dosya görmelisiniz.
# Run this code to create the
function
open_folder <- function(dir) {
if (.Platform['OS.type'] == "windows") {
shell.exec(dir)
} else {
system(paste(Sys.getenv("R_BROWSER"), dir))
}
}
# Call the
function to open the folder open_folder(directory)
ÖZET
Aşağıdaki tabloda bir dağılım grafiği oluşturmak için argümanları özetleyebilirsiniz:
| Nesnel | Kod |
|---|---|
| Temel dağılım grafiği |
ggplot(df, aes(x = x1, y = y)) + geom_point() |
| Renk grubuyla dağılım grafiği |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm") |
| Uygun değerleri ekle |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) |
| Başlık ekle |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))
|
| Altyazı ekle |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))
|
| X'i yeniden adlandır |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1") |
| Y'yi yeniden adlandır |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1") |
| Ölçeği kontrol edin |
ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1) |
| Günlük oluştur |
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point() |
| Tema |
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic() |
| İndirim |
ggsave("my_fantastic_plot.png")
|












