R'de Çubuk Grafik ve Histogram (Örnekle)

Çubuk grafik, kategorik değişkenleri x ekseninde görüntülemenin harika bir yoludur. Bu tür bir grafik, y eksenindeki iki yönü belirtir.

  1. İlki gruplar arasındaki oluşum sayısını sayar.
  2. İkincisi, y eksenindeki bir değişkenin özet istatistiğini (minimum, maksimum, ortalama vb.) gösterir.

Aşağıdaki değişkenlere sahip mtcars veri setini kullanacaksınız:

  • silindir: Arabadaki silindir numarası. Sayısal değişken
  • am: Şanzıman tipi. Otomatik için 0 ve manuel için 1. Sayısal değişken
  • mpg: Galon başına mil. Sayısal değişken

Çubuk Grafik nasıl oluşturulur

Grafik oluşturmak için Ryayına hazır grafikler oluşturan ggplot kütüphanesini kullanabilirsiniz. Bu kütüphanenin 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 objects are:

- Point: `geom_point()`
- Bar: `geom_bar()`
- Line: `geom_line()`
- Histogram: `geom_histogram()` 

Bu eğitimde, çubuk grafiği oluşturan geom_bar() geometrik nesnesiyle ilgileneceksiniz.

Çubuk grafik: sayım

İlk grafiğiniz geom_bar() ile silindirin frekansını gösteriyor. Aşağıdaki kod en temel sözdizimidir.

library(ggplot2)
# Most basic bar chart
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar()

Kod Açıklama

  • Veri kümesi mtcar'larını ggplot'a aktarırsınız.
  • aes() argümanının içine, x eksenini faktör değişkeni (silindir) olarak 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_bar() öğesini kullanın.

Çıktı:

Çubuk grafik: sayım

not: değişkenleri bir faktöre dönüştürdüğünüzden emin olun, aksi takdirde R değişkenleri sayısal olarak ele alır. Aşağıdaki örneğe bakın.

Çubuk grafik: sayım

Grafiği özelleştirin

Grafiği özelleştirmek için dört bağımsız değişken iletilebilir:

- `stat`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, pass `stat = "identity"`
- `alpha`: Control density of the color
- `fill`: Change the color of the bar
- `size`: Control the size the bar	

Çubukların rengini değiştirme

Çubukların rengini değiştirebilirsiniz. Çubukların renklerinin hepsinin benzer olduğunu unutmayın.

# Change the color of the bars
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar(fill = "coral") +
    theme_classic()

Kod Açıklama

  • Çubukların renkleri geometrik nesnenin içindeki aes() eşlemesi tarafından kontrol edilir (yani ggplot()'ta değil). Rengi dolgu argümanlarıyla değiştirebilirsiniz. Burada mercan rengini siz seçersiniz.

Çıktı:

Çubukların Rengini Değiştirme

Bu kodu kullanabilirsiniz:

grDevices::colors()

R'de bulunan tüm renkleri görmek için. Yaklaşık 650 renk vardır.

Yoğunluğu değiştir

Çubukların renginin yoğunluğunu artırabilir veya azaltabilirsiniz

# Change intensity
ggplot(mtcars,
        aes(factor(cyl))) +
    geom_bar(fill = "coral",
        alpha = 0.5) +
    theme_classic()

Kod Açıklama

  • Çubuğun yoğunluğunu artırmak/azaltmak için alfa değerini değiştirebilirsiniz. Büyük alfa yoğunluğu artırır, düşük alfa ise yoğunluğu azaltır. alfa 0 ile 1 arasında değişir. 1 ise renk paletle aynıdır. 0 ise renk beyazdır. Alfa = 0.1'i seçersiniz.

Çıktı:

Yoğunluğu Değiştir

Gruplara göre renk

Çubukların renklerini değiştirebilirsiniz; bu, her grup için farklı bir renk anlamına gelir. Örneğin, cyl değişkeninin üç düzeyi vardır, o zaman çubuk grafiğini üç renkle çizebilirsiniz.

# Color by group
ggplot(mtcars, aes(factor(cyl),
        fill = factor(cyl))) +
    geom_bar()

Kod Açıklama

  • aes() içindeki argüman dolgusu çubuğun renginin değiştirilmesine olanak sağlar. Fill = x ekseni değişkenini ayarlayarak rengi değiştirirsiniz. Örneğinizde x ekseni değişkeni cyl'dir; doldur = faktör(sil)

Çıktı:

Gruplara Göre Renk

Çubuklara grup ekleme

Y eksenini başka bir faktör seviyesine göre daha da bölebilirsiniz. Örneğin, silindir tipine göre otomatik ve manuel şanzıman sayısını sayabilirsiniz.

Aşağıdaki gibi ilerleyeceksin:

  • Adım 1: mtcars veri kümesiyle veri çerçevesini oluşturun
  • Adım 2: Otomatik şanzıman için am değişkenini auto ve manuel şanzıman için man olarak etiketleyin. ggplot() fonksiyonunda factor() kullanmanıza gerek kalmaması için am ve cyl'yi bir faktör olarak dönüştürün.
  • Adım 3: Silindir başına iletim sayısını saymak için çubuk grafiğini çizin
library(dplyr)
# Step 1
data <- mtcars % > % 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

Veri setiniz hazır, grafiği çizebilirsiniz;

# Adım 3

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar() +
    theme_classic()

Kod Açıklama

  • Ggpplot() veri kümesi verilerini ve aes() öğesini içerir.
  • aes()'e x ekseni değişkenini ve çubuğu doldurmak için hangi değişkenin gerekli olduğunu (örn. am) eklersiniz.
  • geom_bar(): Çubuk grafiğini oluşturun

Çıktı:

Barlara Grup Ekleme

Eşleme, çubuğu her seviye için bir tane olmak üzere iki renkle dolduracaktır. Veri setindeki diğer faktör değişkenlerini seçerek grubu değiştirmek zahmetsizdir.

Yüzde cinsinden çubuk grafik

Çubuğu ham sayım yerine yüzde olarak görselleştirebilirsiniz.

# Yüzde cinsinden çubuk grafik

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = "fill") +
    theme_classic()

Kod Açıklama

  • Y ekseninde yüzde içeren bir grafik oluşturmak için geom_bar() bağımsız değişkeninde konum = "doldur" seçeneğini kullanın.

Çıktı:

Yüzde Olarak Çubuk Grafik

Yan yana çubuklar

Sütun grafiğini grup değişkeniyle yan yana çizmek kolaydır.

# Bar chart side by side
ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = position_dodge()) +
    theme_classic()

Kod Açıklama

  • pozisyon=position_dodge(): Çubukların nasıl düzenleneceğini açıkça anlatır

Çıktı:

Yan Yana Çubuklar

Histogram

Çubuk grafik eğitiminin ikinci bölümünde, değişken grubunu y eksenindeki değerlerle temsil edebilirsiniz.

Amacınız her silindir türü için galon başına ortalama kilometreyi gösteren bir grafik oluşturmaktır. Bilgilendirici bir grafik çizmek için şu adımları izleyeceksiniz:

  • Adım 1: Silindir başına galon başına ortalama mil ile yeni bir değişken oluşturun
  • Adım 2: Temel bir histogram oluşturun
  • 3. Adım: Yönü değiştirin
  • 4. Adım: Rengi değiştirin
  • 5. Adım: Boyutu değiştirin
  • 6. Adım: Grafiğe etiket ekleyin

) 1 Adım Yeni bir değişken oluştur

Arabadaki silindir sayısına göre galon başına ortalama mili döndüren data_histogram adlı bir veri çerçevesi oluşturursunuz. Bu yeni değişkene ortalama_mpg adını verirsiniz ve ortalamayı iki ondalık sayıyla yuvarlarsınız.

# Adım 1

data_histogram <- mtcars % > %
mutate(cyl = factor(cyl)) % > %
group_by(cyl) % > %
summarize(mean_mpg = round(mean(mpg), 2))

) 2 Adım Temel bir histogram oluşturun

Histogramı çizebilirsiniz. Müşteriye teslim edilmek üzere iletişim kurmaya hazır değil ancak bize trend hakkında bir sezgi veriyor.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity")

Kod Açıklama

  • aes()'in artık iki değişkeni var. cyl değişkeni x eksenini ifade eder ve ortalama_mpg ise y eksenini ifade eder.
  • Y eksenindeki değişkeni sayısal bir değer olarak belirtmek için stat=”identity” argümanını iletmeniz gerekir. geom_bar, varsayılan değer olarak stat=”bin”i kullanır.

Çıktı:

Histogram

) 3 Adım Yönü değiştir

Grafiğin yönünü dikeyden yataya değiştirirsiniz.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity") +
    coord_flip()

Kod Açıklama

  • Grafiğin yönünü coord_flip() ile kontrol edebilirsiniz.

Çıktı:

Histogram

) 4 Adım rengi değiştir

Çubukların renklerini x ekseni değişkeninin faktör düzeyine göre ayırt edebilirsiniz.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    coord_flip() +
    theme_classic()

Kod Açıklama

  • Fill= silindir eşlemesi ile grafiği gruplara göre çizebilirsiniz. R, silindir değişkeninin seviyelerine göre renkleri otomatik olarak halleder

Çıktı:

Histogram

) 5 Adım Boyutunu değiştirmek

Grafiğin daha güzel görünmesini sağlamak için çubuğun genişliğini azaltırsınız.

graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity",
        width = 0.5) +
    coord_flip() +
    theme_classic()

Kod Açıklama

  • geom_bar() içindeki genişlik argümanı çubuğun boyutunu kontrol eder. Daha büyük değer genişliği arttırır.
  • Grafiği değişken grafikte sakladığınızı unutmayın. Bunu yaparsınız çünkü bir sonraki adım değişken grafiğinin kodunu değiştirmeyecektir. Kodun okunabilirliğini artırır.

Çıktı:

Histogram

) 6 Adım Grafiğe etiket ekleme

Son adım, etikete ortalama_mpg değişkeninin değerinin eklenmesinden oluşur.

graph +
    geom_text(aes(label = mean_mpg),
        hjust = 1.5,
        color = "white",
        size = 3) +
    theme_classic()

Kod Açıklama

  • geom_text() işlevi metnin estetiğini kontrol etmek için kullanışlıdır.
    • label=: Çubukların içine bir etiket ekleyin
    • ortalama_mpg: Etiket için ortalama_mpg değişkenini kullanın
  • hsadece etiketin konumunu kontrol eder. 1'e kapalı değerler etiketi çubuğun üst kısmında görüntüler, daha yüksek değerler ise etiketi alta getirir. Grafiğin yönü dikey ise hjust'ı vjust olarak değiştirin.
  • color=”white”: Metnin rengini değiştirir. Burada beyaz rengi kullanıyorsunuz.
  • size=3: Metnin boyutunu ayarlayın.

Çıktı:

Histogram

ÖZET

Çubuk grafik, x ekseni kategorik bir değişken olduğunda kullanışlıdır. Y ekseni bir sayım veya özet istatistik olabilir. Aşağıdaki tabloda çubuk grafiğin ggplot2 ile nasıl kontrol edileceği özetlenmektedir:

Nesnel Kod
saymak
ggplot(df, eas(x= factor(x1)) + geom_bar()
Farklı dolgu rengiyle sayın
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar()
Yığılmış gruplarla sayın
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Gruplarla yan yana sayın
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar()
% olarak yığılmış gruplarla sayın
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Değerler
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity")