Kurs
Histogramlar, bir veri kümesinin dağılım şekline bir bakışta ışık tutar. Bu öğreticide, R’ın en yaygın kullanılan çizim kütüphanesi ve tidyverse ekosisteminin çekirdek bir parçası olan ggplot2 ile histogramların nasıl oluşturulacağını ve özelleştirileceğini adım adım göstereceğim. ggplot2, grafik dilbilgisi yaklaşımını izler ve çizim öğelerini katmanlayarak karmaşık görselleştirmeler oluşturmanıza olanak tanır. Taban R yaklaşımı için, base R ile histogram öğreticimize bakın.
Özet
-
Histogram çizmek için
ggplot()çağrısının içindegeom_histogram()kullanın -
Sütun sayısını
binsile veya sütun genişliğinibinwidthilegeom_histogram()içinde denetleyin -
Çubuk renklerini
color(çerçeve) vefill(iç dolgu) argümanlarıyla özelleştirin -
y = after_stat(density)ayarlandıktan sonrageom_density()ile bir yoğunluk eğrisi bindirin -
Kategorilere göre bölmek için
aes()içindefill = variableveya ayrı paneller içinfacet_grid()kullanın
Histogram Nedir?
Histogramlar, sürekli (sayısal) değişkenler boyunca frekans dağılımlarını gösteren görselleştirmelerdir. Sürekli değişkenin kapsadığı aralıklar içinde gözlem sayılarını görmemizi sağlarlar.
ggplot2 ile Başlarken
Bu öğreticiyi takip etmek için R ve şu paketlerin kurulu olması gerekir: ggplot2, readr ve dplyr. Bir sonraki bölümdeki kod, henüz kurmadıysanız bunları yükler.
Paketlerin kurulması
Önce library fonksiyonunu kullanarak ggplot2 kütüphanesini içe aktarmamız gerekecek. Bu, ggplot2 kütüphanesindeki tüm yerleşik fonksiyonları getirir. Eğer ggplot2’yi henüz kurmadıysanız, install.packages() komutunu çalıştırarak kurmanız gerekir. Aynısını bir CSV dosyasını okumamıza olanak tanıyacak readr kütüphanesi ve okuduğumuz verilerle daha kolay çalışmamızı sağlayan dplyr için de yapacağız.
install.packages("ggplot2")
install.packages("readr")
install.packages("dplyr")
library(ggplot2)
library(readr)
library(dplyr)
Veri kümesinin yüklenmesi
Bu öğretici için, farklı ev ilanlarına dair evin büyüklüğü, oda sayısı, fiyat ve konum bilgileri gibi ayrıntıları içeren şu konut veri setini kullanacağız.
Verileri read_csv() fonksiyonunu kullanarak okuyabiliriz. Veriyi doğrudan URL’den okuyabilir ya da CSV dosyasını bir dizine indirip yerel depolamadan okuyabiliriz. read_csv()’nin ilk özniteliği verinin konumudur ve col_select özniteliği ilgilendiğimiz sütunları seçmemize olanak tanır.
home_data <- read_csv(
"https://raw.githubusercontent.com/rashida048/Datasets/master/home_data.csv",
col_select = c(price, condition)
)
Daha sonra head() fonksiyonunu kullanarak verinin ilk birkaç satırına bakabiliriz:
head(home_data)

ggplot2 ile Histogram Nasıl Yapılır
Artık histogramı oluşturabiliriz. ggplot2’de hangi türde bir grafik yaparsak yapalım, her zaman çizim öğeleri ekleyebileceğimiz bir tuval oluşturan ggplot() fonksiyonu ile başlarız. İki parametre alır.
-
İlk argüman bir veri çerçevesidir. Burada
home_data’yı kullanmak istiyoruz. -
İkinci argüman, veri çerçevesindeki sütunların grafik estetiklerine eşlenmesidir. Bu eşleme
aes()fonksiyonunu çağırmalıdır. Burada price sütununu x eksenine eşliyoruz.
Şu ana kadarki kodumuz
ggplot(data = home_data, aes(x = price))
Bu tek başına faydalı bir şey çizmez. Bunu bir histograma dönüştürmek için geom_histogram() ile histogram geometrisi ekleriz.
ggplot(data = home_data, aes(x = price)) +
geom_histogram()

geom_vline() kullanarak histograma betimleyici istatistikler ekleyin
Grafiğimize betimleyici istatistikler eklemek için geom_vline() fonksiyonunu kullanabiliriz. Bu, grafiğe dikey bir çizgi geometrisi ekler.
Önce dplyr’ın summarize() fonksiyonunu kullanarak bu durumda ortalama fiyat olan bir betimleyici istatistik hesaplarız.
price_stats <- home_data |>
summarize(mean_price = mean(price))
price_stats
# A tibble: 1 × 1
mean_price
<dbl>
1 540088.
Fonksiyon xintercept parametresini ve isteğe bağlı olarak sırasıyla çizgilerin rengini ve kalınlığını özelleştirmek için color ve linewidth özniteliklerini alır. Önceki bölümde yaptığımız gibi artı işaretiyle bir ortalama çizgisi ekleyeceğiz.
ggplot(home_data, aes(x = price)) +
geom_histogram() +
geom_vline(aes(xintercept = mean_price), price_stats, color = "red", linewidth = 2)
geom_ fonksiyonlarında, eşleme ve veri argümanlarının ggplot()’a kıyasla yer değiştirdiğine dikkat edin.

Sayım Yerine Olasılık Yoğunluklarını Çizmek
Histograma bir olasılık yoğunluğu çizgisi eklemek için önce y eksenini yoğunluğa ölçeklendiririz. aes() fonksiyonunda y’yi after_stat(density) olarak ayarlarız.
Ardından grafiğimize geom_density() fonksiyonunu kullanarak bir yoğunluk katmanı ekleyebiliriz. Burada color özniteliğini yeşil ve linewidth özniteliğini 2 olarak ayarlıyoruz.
ggplot(home_data, aes(x = price, y = after_stat(density))) +
geom_histogram() +
geom_vline(aes(xintercept = mean_price), price_stats, color = "red", linewidth = 2) +
geom_density(color = "green", linewidth = 2)

Y eksenindeki sayıların değiştiğine dikkat edin.
Her katmanın aynı deseni izlediğine dikkat edin: bir + işareti, bir fonksiyon çağrısı ve isteğe bağlı argümanlar. Her kombinasyon için söz dizimini yeniden öğrenmeden geom_ fonksiyonları, istatistikler ve temalar ekleyebilirsiniz.
bins kullanarak aralıklamayı güncelleyin
ggplot2 histogramımızın aralıklamasını bins özniteliğini kullanarak güncelleyebiliriz. Grafiğimizde göstermek istediğimiz sütun sayısına eşit olacak şekilde bu özniteliği ayarlarız. Bu, histogramımızda daha ayrıntılı ya da daha kaba verileri görmemize yardımcı olur.
ggplot(data = home_data, aes(x = price)) +
geom_histogram(bins = 100)

Ayrıca geom_histogram()’ın binwidth özniteliğini kullanarak sütun genişliğini elle ayarlayabiliriz.
ggplot(data = home_data, aes(x = price)) +
geom_histogram(binwidth = 50000)

Son olarak, sınırları center veya boundary özniteliklerini kullanarak hizalayabilirsiniz. Sütun sınırlarının belirli katlara denk gelmesini isterseniz bu öznitelikleri kullanabilirsiniz (aynı anda yalnızca biri kullanılabilir). Sütunların tam sayı değerlerine denk gelmesini sağlamak için özniteliği 1’e ayarlayın.
ggplot(data = home_data, aes(x = price)) +
geom_histogram(boundary = 1)

Histogramın rengini özelleştirin
Bu bölümde histogramın renklerini değiştireceğiz. Her çubuğun dış çizgilerinin rengini color özniteliğiyle özelleştirebilir, çubukların dolgusunu ise geom_histogram()’ın fill özniteliğiyle değiştirebiliriz. Çubukları mavi ile dolduracak ve çerçeve rengini beyaz yapacağız.
ggplot(data = home_data, aes(x = price)) +
geom_histogram(color = "white", fill = "blue")

Gruplara göre ggplot2 histogramının rengini özelleştirin
Histogram çubuklarının renklerini özelleştirebilirsiniz.
aes() fonksiyonu içinde fill estetiğini değiştirmek, veri setindeki bir değişkenin değerine göre çubukların iç renklerini ayarlar. Bu değişken tamsayı yerine kategorik (faktör) olmalıdır; bu yüzden factor() fonksiyonu ile dönüştürebiliriz. Bu örnekte 1 (kötü durum) ile 5 (çok iyi durum) arasında bir değere sahip olan condition değişkenine bakacağız.
home_data <- home_data |>
mutate(condition = factor(condition))
ggplot(data = home_data, aes(x = price, fill = condition)) +
geom_histogram()

labs() kullanarak etiketler ve başlıklar ekleyin
Şimdi labs() fonksiyonunu kullanarak grafiğimize başlıklar ve etiketler ekliyoruz. x, y ve title özniteliklerini istediğimiz etiketlere ayarlıyoruz.
ggplot(data = home_data, aes(x = price)) +
geom_histogram() +
labs(x ='Price (USD)', y='Number of Listings', title = 'Housing Price Distributions')

xlim() kullanarak x ekseni sınırlarını ayarlama
İlgilendiğimiz verilere yakınlaştırmak için xlim() fonksiyonunu kullanarak grafiğimizin x ekseni sınırlarını ayarlayabiliriz. Örneğin, tüm grafiği görüntülediğimizde gördüğümüz uzun kuyruk yerine dağılımın orta kısmına odaklanmak bazen faydalıdır.
Y ekseni sınırlarını değiştirmek de mümkündür (ylim() kullanarak), ancak histogramlar için bu daha az kullanışlıdır çünkü otomatik hesaplanan değerler neredeyse her zaman idealdir.
0 ile 2 M$ arasındaki fiyatlara yakınlaşacağız.
ggplot(home_data, aes(x = price)) +
geom_histogram(bins = 100) +
xlim(0, 2000000)

Lejant konumunu değiştirme
Grafiğimizde lejandı taşımak istersek, örneğin durumu farklı renklerle görselleştirdiğimizde, theme() fonksiyonunu ve legend.position özniteliğini kullanabiliriz. legend.position’ın alacağı değerler “bottom”, “top”, “left” veya “right”’tır. Ayrıca lejandın bulunmasını istediğiniz koordinatları c(x, y) kullanarak geçebilirsiniz.
ggplot(home_data, aes(x = price, fill = condition)) +
geom_histogram() +
theme(legend.position = "bottom")
ggplot2’de fasetler kullanma
Son olarak, fasetler kullanarak verileri farklı gruplarda ayrı grafiklerde görselleştirebiliriz. Bu, her kategori için görselleştirmeyi birkaç alt grafiğe böler. Bunu facet_grid() fonksiyonu ile yapabiliriz. Aşağıda farklı condition değerlerine göre fiyat dağılımlarını görselleştireceğiz.
ggplot(home_data, aes(x = price)) +
geom_histogram() + facet_grid(vars(condition))
Fasetler R’da ggplot için Fasetler öğreticisinde daha ayrıntılı ele alınmaktadır.

Son Düşünceler
ggplot2’de histogram oluşturmak için temeli ggplot() ile kurun, veri çerçevenizi ve aes() eşlemelerini geçin, ardından geom_histogram() ekleyin. Buradan sonra özelleştirmeleri katmanlayın: eksen başlıkları için labs(), x eksenini yakınlaştırmak için xlim() ve lejandı yeniden konumlandırmak veya görsel stili ayarlamak için theme().
ggplot2, R’da Veri Görselleştirme yetkinlik yolunda derinlemesine ele alınır ve ggplot2 ile Veri Görselleştirmeye Giriş dersiyle başlar. ggplot2’yi diğer tidyverse araçlarıyla birleştirmeyi R ile Tidyverse Temelleri yetkinlik yolunda öğrenebilirsiniz.
Histogramların ötesindeki diğer ggplot2 grafik türleri için ggplot2 ile Grafikler öğreticimize bakın ve pratik bir başvuru için ggplot2 cheat sheet’ini indirin.
Veri Bilimi yazarı | Wayfair'da Kıdemli Teknik Pazarlama Analisti | University of Pennsylvania'da Veri Bilimi Yüksek Lisansı (MSE)
