R'de lolipop grafiği nasıl oluşturulur


Çubuk grafiğe benzer şekilde lolipop grafiği , kategorik bir değişkenin niceliksel değerlerini karşılaştırmak için kullanışlıdır. Lolipop grafiği, niceliksel değerleri temsil etmek için çubuk kullanmak yerine, sonunda daire bulunan çizgiler kullanır.

Lolipop grafiği, grafikteki renk miktarını en aza indirirken ve okuyucunun dikkatini grafikteki çizgiler veya diğer grafikler yerine grafikteki gerçek değerlere odaklarken birden fazla kategoriyi karşılaştırmanın harika bir yoludur. Birçok kişi lolipop tahtasının estetik açıdan da hoş olduğunu düşünüyor.

Bu eğitimde aşağıdaki lolipop grafiğini oluşturmak için gereken adımları inceleyeceğiz:

Örnek: R’deki Lolipop grafiği

Bu örnek için mtcars’ın yerleşik R veri kümesini kullanacağız:

 #view first six rows of mtcars
head(mtcars)

Temel bir lolipop grafiği

Aşağıdaki kod nasıl olduğunu gösterir   veri kümesindeki 32 arabanın her birinin mpg’sini (galon başına mil) karşılaştırmak için bir lolipop grafiği oluşturmak.

Araba adları veri kümesinin satır adlarında tanımlıdır, bu nedenle öncelikle veri kümesinde bu satır adlarını içeren yeni bir sütun oluştururuz.

Daha sonra lolipop grafiğini oluşturmak için kullanacağımız ggplot2 kütüphanesini yüklüyoruz.

Ggplot2 ile çizimdeki çizgileri oluşturmak için geom_segment’i kullanırız. Başlangıç ve bitiş x değerlerini sırasıyla 0 ve mpg olarak ayarladık. Başlangıç ve bitiş y değerlerini char olarak ayarladık:

 #create new column for car names
mtcars$car <- row.names(mtcars)

#load ggplot2 library
library(ggplot2)

#create lollipop chart
ggplot(mtcars, aes(x = mpg, y = car)) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point()

Etiket ekleme

Ayrıca label ve geom_text bağımsız değişkenlerini kullanarak grafiğe etiketler de ekleyebiliriz:

 ggplot(mtcars, aes(x = mpg, y = car, label = mpg )) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point() +
        geom_text(nudge_x = 1.5)

Veya etiketleri her satırın sonuna yerleştirmek yerine, daireleri büyüterek ve etiketin yazı tipi rengini beyaz olarak değiştirerek bunları dairelerin içine yerleştirebiliriz:

 ggplot(mtcars, aes(x = mpg, y = car, label = mpg)) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point( size = 7 ) +
        geom_text( color = 'white', size = 2 )

Değerleri ortalamayla karşılaştırın

Değerleri belirli bir sayıyla karşılaştırmak için lolipop grafiği de kullanabiliriz. Örneğin, veri setinde ortalama mpg değerini bulabilir ve ardından her arabanın mpg’sini ortalamayla karşılaştırabiliriz.

Aşağıdaki kod, ortalama mpg değerini bulmak ve ardından arabaları artan mpg sırasına göre düzenlemek için dplyr kütüphanesini kullanır:

 #load library dplyr
library(dplyr)

#find mean value of mpg and arrange cars in order by mpg descending
mtcars_new <- mtcars %>%
                arrange(mpg) %>%
                mutate(mean_mpg = mean(mpg),
                       flag = ifelse(mpg - mean_mpg > 0, TRUE, FALSE),
                       car = factor(car, levels = .$car))

#view first six rows of mtcars_new
head(mtcars_new)

Daha sonra aşağıdaki kod, dairenin rengini bayrak değerine (bu durumda DOĞRU veya YANLIŞ) eşit olacak şekilde ve her araba için başlangıç x değerini ortalama mpg değerine eşit olacak şekilde ayarlayarak lolipop grafiğini oluşturur.

 ggplot(mtcars_new, aes(x = mpg, y = car, color = flag )) +
        geom_segment(aes( x = mean_mpg , y = car, xend = mpg, yend = car)) +
        geom_point()

Bu tür renk paletini kullanarak hangi arabaların veri seti ortalamasından daha düşük ve daha yüksek mpg’ye sahip olduğunu kolayca belirleyebiliriz.

Varsayılan olarak R, grafik renkleri olarak mavi ve kırmızıyı kullanır. Ancak Scale_color_manual argümanını kullanarak istediğimiz renkleri kullanabiliriz:

 ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) +
        geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car)) +
        geom_point() +
        scale_color_manual(values = c("purple", "blue"))

Grafik estetiğini değiştirin

Son olarak, grafiğin estetiğini daha da değiştirmek ve profesyonel görünümlü bir nihai ürün oluşturmak için ggplot2’nin geniş yeteneklerini kullanabiliriz:

 ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) +
        geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car), color = "grey") +
        geom_point() +
        annotate("text", x = 27, y = 20, label = "Above Average", color = "#00BFC4", size = 3, hjust = -0.1, vjust = .75) +
        annotate("text", x = 27, y = 17, label = "Below Average", color = "#F8766D", size = 3, hjust = -0.1, vjust = -.1) +
        geom_segment(aes(x = 26.5, xend = 26.5, y = 19, yend = 23),
                     arrow = arrow(length = unit(0.2,"cm")), color = "#00BFC4") +
        geom_segment(aes(x = 26.5, xend = 26.5, y = 18, yend = 14),
                     arrow = arrow(length = unit(0.2,"cm")), color = "#F8766D") +
        labs(title = "Miles per Gallon by Car") +
        theme_minimal() +
        theme(axis.title = element_blank(),
              panel.grid.minor = element_blank(),
              legend.position = "none",
              text = element_text(family = "Georgia"),
              axis.text.y = element_text(size = 8),
              plot.title = element_text(size = 20, margin = margin(b = 10), hjust = 0),
              plot.subtitle = element_text(size = 12, color = "darkslategrey", margin = margin(b = 25, l = -25)),
              plot.caption = element_text(size = 8, margin = margin(t = 10), color = "grey70", hjust = 0))

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir