Kurs

R, yoğunluk grafikleri, nokta grafikleri, kutu grafikleri ve saçılım grafikleri gibi temel türlerden, olasılık grafikleri gibi istatistiksel olarak daha karmaşık türlere kadar farklı grafik türleri oluşturmanıza olanak tanır.
Ayrıca, düşük özelleştirmeyle temel grafikler üretmekten, etkileşimli grafiklerle birlikte kapsamlı özelleştirme içeren gelişmiş grafikler çizmeye kadar ilerlemenizi sağlar. Yine de, R grafiklerimiz için her zaman istediğimiz sonuçları elde edemeyiz: Stack Overflow, grafiklerle ilgili sorularımızla dolup taşıyor ve bunların birçoğu tekrar eden türden.
İşte bu yüzden DataCamp, sık sorulan tüm soruları ve en yüksek oy alan cevaplarını tek bir blog yazısında bir araya getirmeye karar verdi.
R'de grafik oluşturmayı pratik etmek için, R'de veri görselleştirme kursunu deneyin.
15 R Grafik Sorusu
1. Boş Bir R Grafiği Nasıl Çizilir
Yeni Bir Grafik Çerçevesi Açın
R'de aşağıdaki gibi boş bir grafik çerçevesi açabilir ve grafik aygıtını etkinleştirebilirsiniz:Not edin ki plot.new() ve frame() işlevleri, eksenleri, etiketleri veya çerçevesi olmayan yeni bir grafik çerçevesi tanımlar. Bu, yeni bir grafik oluşturulacağını belirtir: Henüz açık bir grafik penceresi yoksa yeni bir pencere açılır, aksi halde mevcut pencere yeni grafiği tutacak şekilde hazırlanır. Bu işlevler hakkında daha fazlasını buradan okuyabilirsiniz.
Grafik Penceresinin Ölçülerini Ayarlayın
Az önce yaptığınız boş grafiğin yatay ve dikey boyutlarını ayarlamak için plot.window() işlevini de kullanabilirsiniz:
plot.new()
pWidth = 3
pHeight = 2
plot.window(c(0,pWidth),
c(0,pHeight))
Gerçek Anlamda Boş Bir Grafik Çizin
plot() işleviyle boş bir grafik çizebilirsiniz. Ayrıca, mtext() ve title() işlevleriyle eksenleri, eksen etiketlerini ve bir başlığı ekleyerek boş grafiği doldurun.
Grafik için (5,5) koordinatlarını verirsiniz, ancak type argümanını "n" yaparak herhangi bir çizim göstermezsiniz.
İpucu: bu argümanı "p" veya "b" olarak ayarlamayı deneyin ve ne olduğuna bakın!
Ayrıca grafiği açıklama notlarıyla belirtmezsiniz, ancak x ve y eksenlerinde 0 ile 10 arasında sınırlar koyarsınız.
Son olarak, box() işlevini kullanarak grafiğinizin etrafına bir kutu çizmeyi ve points() işleviyle birkaç nokta eklemeyi seçebilirsiniz:
Not edin ki birden çok noktayı aynı anda çizmek için x ve y koordinatlarını vektörlerde toplayabilirsiniz. pch argümanı bir sembol seçmenizi sağlar; cex argümanına atanan değer ise çizilen metin ve sembollerin varsayılan ayara göre ne kadar ölçekleneceğini belirtir.
İpucu: hangi sayının hangi sembole karşılık geldiğini görmek istiyorsanız, buraya tıklayın.
2. R Grafiklerinin Eksen Etiketleri ve Başlığı Nasıl Ayarlanır
R grafiklerinin eksenleri, Stack Overflow sorularının en popüler konularından birini oluşturur; Bu konuyla ilgili sorular oldukça çeşitlidir.
DataCamp'in oldukça yaygın bulduğu soru türlerini öğrenmek için okumaya devam edin!
Eksenleri Adlandırın (Üst/Alt Simgeyle) ve Bir R Grafiğine Başlık Koyun
Eksenleri kolayca adlandırabilir ve grafiğinizi kitleniz için daha özgül ve anlaşılır kılmak üzere bir başlık ekleyebilirsiniz.
Bunu, ana başlık için main, alt başlık için sub, x ekseni etiketi için xlab ve y ekseni etiketi için ylab argümanlarını ekleyerek kolayca yapabilirsiniz.
Not edin ki başlıkta üst veya alt simge kullanmak isterseniz, bunları plot() işlevinin main argümanında kolayca ekleyebilirsiniz. Bir expression() kullanmaya ve üst simgeler için ^ simgesini, alt simge için ise köşeli parantezleri kullanmaya dikkat edin.
Aşağıdaki DataCamp Light bölümünde deneyin:
expression() ve paste() işlevlerini birleştiren kodu kullanarak eksen etiketlerinizde Yunanca harfler de bulundurabilirsiniz. Şu kod parçasını çalıştırın:
Eksen Etiketlerinin Görünümünü Ayarlayın
X ve y ekseni etiketlerinin görünümünü ayarlamak içincol.lab ve cex.lab argümanlarını kullanabilirsiniz. İlk argüman x ve y ekseni etiketlerinin rengini değiştirmek için, ikincisi ise cex ayarına (varsayılan) göre x ve y ekseni etiketlerinin boyutunu belirlemek için kullanılır.
Bu argümanlar hakkında daha fazla bilgi için bu sayfaya gidin.
Bir Grafiğin Eksen Etiketlerini ve Açıklamalarını Kaldırın
Bir grafiğin eksen değerlerinden kurtulmak istiyorsanız, önce xaxt ve yaxt argümanlarını ekleyip "n" olarak ayarlayabilirsiniz. Bu argümanlar, x ekseni türünü belirten bir karakter alır. Aşağıdaki komutta olduğu gibi "n" verirseniz, eksenin çizimini bastırabilirsiniz.
xaxt ve yaxt argümanlarına başka herhangi bir karakter vererek x ve y eksenlerinin çizileceğini unutmayın.
ann açıklama argümanını ekleyip FALSE olarak ayarlayabilirsiniz.
İpucu: aradığınız bilgi bu değil mi? Bu sayfaya gidin.
Bir Grafiğin Eksen Etiketlerini Döndürün
Her eksene karşılık gelen sayıları döndürmek içinaxis() işlevine las argümanını ekleyebilirsiniz:
Not edin nasıl ki bu, aslında plot() işlevine, henüz eksenlerin çizilmeyeceğini belirten bir argüman eklemenizi gerektiriyor: bu görev, sonrasında gelen iki axis() işlevinindir.
las argümanı üç değerden birini alabilir. Seçtiğiniz seçeneğe göre etiketin konumu değişir: 0 seçerseniz etiket her zaman eksene paralel olur (varsayılan); 1 seçerseniz etiket yatay yerleştirilir. Eksene dik olmasını isterseniz 2'yi, dikey yerleştirilmesini isterseniz 3'ü seçin.
Ayrıca daha fazlası da var. axis() işlevinin sunduğu olanaklar hakkında daha fazla bilgi edinmek istiyorsanız okumaya devam edin!
R Grafiğinizin Eksen Etiketlerini Taşıyın
Yani, eksen etiketlerini etrafta taşımak mı istiyorsunuz?
Merak etmeyin, bunu axis() işleviyle yapabilirsiniz; Bu işlevin, bu derste daha önce de fark etmiş olabileceğiniz gibi, önce eksenleri nereye çizmek istediğinizi belirtmenize izin verdiğini unutmayın. Diyelim ki x eksenini grafik alanının üstüne, y eksenini ise sağına çizmek istiyorsunuz.
Unutmayın axis() işlevine 1 veya 2 geçirirseniz, eksenler sırasıyla grafik alanının altına ve soluna çizilir. Bunun bir örneğini görmek için biraz yukarı kaydırın ve önceki kod parçasına bakın!
axis() işlevine 3 ve 4 geçirmeniz gerekeceği anlamına gelir:
Gördüğünüz gibi, önce temel olarak x ve y'yi çizersiniz, ancak eksenleri ve açıklamaları eklersiniz. Ardından, görmek istediğiniz eksenleri eklersiniz ve konumlarını grafiğe göre belirtirsiniz.
axis() işlevinin sağladığı esneklik giderek artıyor! Bu temel R işlevini kullanarak başka neleri çözebileceğinizi görmek için bir sonraki sık sorulan soruya göz atın.
İpucu: eksen etiketlerindeki metni hjust ve vjust ile nasıl hareket ettireceğinize dair daha fazlası için son soruya gidin!
3. R Grafiğinizin Çentik İşaretlerini Nasıl Eklersiniz ve Aralıklarını Nasıl Değiştirirsiniz
R Grafiğinizin Çentik İşaretlerinin Aralıkları Nasıl Değiştirilir
Grafiğinizin çentik işaretlerini R'nin belirlemesine izin vermek oldukça sinir bozucu olabilir ve bunları ayarlamak isteyeceğiniz bir zaman gelebilir.
1. Grafiğinizin Çentik İşaretlerini Belirlemek için axis() İşlevini Kullanma
Gördüğünüz gibi önce çentik işaretlerinin konumlarını ve etiketlerini tanımlarsınız. Sonra, eksen türünü "n" olarak belirterek eksenin çizimini bastırıp grafiğinizi çizersiniz.
Sonra asıl iş başlar:
axis()işlevi, eksenin grafiğin hangi tarafına çizileceğini belirtmenizi sağlar. Bu durumda argüman1ile tamamlanmıştır; bu, eksenin alta çizileceği anlamına gelir. Değer2olsaydı eksen sola,3veya4olsaydı sırasıyla üste veya sağa çizilirdi;atargümanı, çentik işaretlerinin hangi noktalara çizileceğini belirtmenize olanak tanır. Bu örnekteV1içinde tanımlanan konumları kullanırsınız;- Benzer şekilde, kullanmak istediğiniz
labelsdeğerleriV2içinde belirtilenlerdir; tckile çentiklerin yönünü ayarlarsınız: bu argümana negatif bir değer vererek çentiklerin eksenin altında görünmesini belirtirsiniz.
İpucu: tck argümanına pozitif bir değer geçirmeyi deneyin ve ne olduğuna bakın!
tcl ile daha da özelleştirebilir, çentik etiketlerinin görünümünü ise cex.axis, col.axis ve font.axis ile kontrol edebilirsiniz.
2. R Grafiğinizin Çentik İşaretlerini Belirlemek için Diğer İşlevleri Kullanma
Çentik işaretlerinin konumlarını ve aralarındaki aralık sayısını tanımlamak için par() ve plot() işlevlerini de kullanabilirsiniz.
xaxp argümanını kullanırsınız; x ekseninin uçlarında yer alan çentik işaretlerinin konumlarını ve ardından bunlar arasındaki aralık sayısını geçersiniz:
Aşağıdaki kodu çalıştırarak temelde aynı sonucu da elde edebilirsiniz:
Not edin ki bu yalnızca logaritmik ölçek kullanmıyorsanız çalışır. Logaritmik koordinatlar true olarak ayarlanmışsa, yani par(xlog=T) ise, xaxp'ye verdiğiniz üç değerin anlamı farklıdır: küçük bir aralık için n negatiftir. Aksi halde n, 1:3 aralığındadır, bir durum numarası belirtir ve x1 ile x2, kullanıcı koordinatları içinde 10'un en düşük ve en yüksek kuvvetleridir, 10 ^ par(“usr”)[1:2].
Bu örnekte par() işlevini kullanırsınız: xlog'u TRUE yapar ve xaxp argümanını ekleyerek uç çentik işaretlerinin koordinatlarını ve aralarındaki aralık sayısını verirsiniz. Bu durumda minimum değeri 1, maksimum değeri 4 olarak ayarlar ve her çentik işareti arasındaki aralık sayısının 3 olması gerektiğini eklersiniz.
Ardından x ve y'yi çizer, x veya y ekseninin ya da her ikisinin logaritmik ölçekte çizilip çizilmeyeceğini belirtmek için log argümanını eklersiniz. Bunu yapmak için log argümanına "x", "y" ve "xy" değerlerini geçebilirsiniz.
Bir R Grafiğine Küçük Çentik İşaretleri Nasıl Eklenir
Hmisc paketindeki minor.tick() işleviyle grafiğinize küçük çentik işaretlerini hızlıca ekleyebilirsiniz:
nxargümanı, eksendeki büyük çentik işaretleri arasındaki alanı kaç aralığa bölmek istediğinizi belirtmenize olanak tanır. Buna1değeri verirseniz küçük çentik işaretleri bastırılır;ny,nxile aynı şeyi yapmanızı sağlar ama y ekseni için;tick.ratio, küçük çentik işaretlerinin uzunluklarının büyük çentik işaretlerine oranını belirtir. İkincisinin uzunluğupar(tck=x)ifadesinden alınır.
4. İki Farklı X veya Y Ekseni Nasıl Oluşturulur
İlk seçenek, ilk grafiği oluşturmak ve R'nin grafik aygıtını temizlemesini engellemek içinpar() işlevini new argümanı TRUE olacak şekilde çalıştırmaktır:
Ardından, plot() ile ikinci grafiği oluşturursunuz. Verileri geçin ve ardından type, axes, bty, xlab ve ylab gibi bazı argümanları ayarladığınızdan emin olun:
type: çizgilerle çizim yaptığınızdan emin olmak içinlgeçebilirsiniz;axes, eksenlerin çizilmemesi içinFALSEolarak ayarlanır;bty, grafiğin etrafındaki kutunun çizilmesini bastırır;xlabboş bir dizeye ayarlanır; böylece x ekseninde etiket olmaz veylabda boş bir dizeye ayarlanır; böylece y ekseninde de etiket olmaz.
Tümünü aşağıdaki DataCamp Light bölümünde inceleyin. Yukarıdaki kodların çalışma ortamınıza zaten yüklendiğini unutmayın. DataCamp Light kutusunun sağ tarafındaki R Konsolu'nu kullanarak iki kez kontrol edebilirsiniz:
Sonra, sırasıyla axis() ve mtext() ile bir eksen ekleme ve grafiğin kenar boşluklarına metin yazma zamanı.
axis() işlevine side argümanını ekleyip ona 4 değerini atayarak sağ tarafa yeni bir eksen ekleyebilirsiniz. Sonra, çentik işaretlerinin hangi noktalara çizileceğini belirtmek için at argümanını belirlersiniz. Bu durumda, z içindeki değerlerin aralığını kapsayan, eşit aralıklı n+1 “yuvarlak” değerin bir dizisini pretty() işleviyle hesaplarsınız. Bu, ikinci grafiğinizin, z adını verdiğiniz y eksenindeki sayılara gerçekten sahip olmanızı sağlar.
Tüm bunları aşağıda deneyin:
Not edin ki side argümanı üç değerden birini alabilir: altta metin için 1, solda 2, üstte 3 ve sağda 4. line argümanı, metnin hangi kenar boşluğu satırından başladığını belirtir.
Kodunuzun nihai sonucu şöyle görünecektir:
set.seed(101)
x <- 1:10
y <- rnorm(10)
z <- runif(10, min=1000, max=10000)
plot(x, y)
par(new = TRUE)
plot(x,
z,
type = "l",
axes = FALSE,
bty = "n",
xlab = "",
ylab = "")
axis(side=4,
at = pretty(range(z)))
mtext("z",
side=4,
line=3)
Ek bir alıştırma olarak, iki farklı x eksenine sahip bir R grafiği oluşturmayı deneyin! Bunu aşağıdaki DataCamp Light bölümünde yapın:
Temel plot(), axis() ve mtext() işlevleriyle tüm bunları manuel olarak yapabilmenize rağmen, bunların tümünü otomatikleştiren paketler de vardır: plotrix paketinin twoord.plot() işlevi ve latticeExtra paketinin doubleYScale() işlevi oldukça kullanışlıdır ve aynı işi yapmak istiyorsanız belki biraz daha hızlıdır:
Not edin ki yukarıdaki örnek bu veri setiyle yapılmıştır. Verilerin içe aktarılması veya read.table() işlevi hakkında herhangi bir şüpheniz varsa, DataCamp'in R'de veri içe aktarma hakkındaki dersine göz atın.
5. R Grafiğinin Gösterge (Lejant) Kutusu Nasıl Eklenir veya Değiştirilir
Temel R ile Bir R Grafiğinin Gösterge (Lejant) Kutusunu Ekleme ve Değiştirme
legend() işleviyle R grafiğinize kolayca bir lejant ekleyebilirsiniz:
legend() belgesinde açıklanan pt.cex ve title.cex argümanlarının pek de işe yaramadığını unutmayın. Bazı geçici çözümler vardır:
- Lejantın başlığını veya etiketlerini
legend()'atext.fontargümanını ekleyerek farklı bir yazı tipinde verin:
- Lejantı farklı
cexargüman değerleriyle iki kez çizin
İpucu: R'de kullanabileceğiniz renkler hakkında daha fazla bilgi edinmek istiyorsanız, bu çok faydalı PDF belgesine göz atın.
ggplot2 İçinde Bir R Grafiğinin Lejantı ve Etiketleri Nasıl Eklenir ve Değiştirilir
Ggplot2 grafiğinize lejant eklemek oldukça kolaydır. Şunları doğrudan çalıştırabilirsiniz:
Ve bu size varsayılan bir lejant verir. Ancak çoğu durumda, lejantın görünümünü biraz daha ayarlamak isteyeceksiniz.
ggplot2'de lejant başlığını ve etiketlerini değiştirmenin iki yolu vardır:
- Ölçeğe farklı bir başlık ve etiketler kullanmasını söyleyin
colour veya shape gibi argümanları veya diğer estetikleri belirlediyseniz, adları ve etiketleri sırasıyla scale_color_discrete() ve scale_shape_discrete() işlevleriyle değiştirmeniz gerekir:
Grafik, DataCamp Light bölümünün Plot sekmesinde biraz sıkışık görünebilir; ancak bu kodu RStudio'da çalıştırırsanız bir sorun olmaz.
geom_point() işlevine ve labels argümanlarına shape argümanını eklerseniz iki lejant oluşturabileceğinizi unutmayın!
Lejantı grafiğin altına taşımak isterseniz legend.position değerini "bottom" olarak belirtebilirsiniz. Öte yandan, legend.justification argümanı, lejantı grafiğin içine konumlandırmanıza olanak tanır.
İpucu: ggplot'a farklı adlar ve etiketler kullanması gerektiğini bildirmek için kullanılabilecek her türlü ölçeği buradan inceleyin.
- Veri çerçevesini faktör istenen biçime sahip olacak şekilde değiştirin
Ardından, adları ve etiketleri çizim kodunuzda fazladan satırlarla değiştirme “zahmetinden” kaçınarak, ggplot2'de grafiğinizi oluşturmak için yeni faktör adlarını kullanabilirsiniz.
İpucu: ggplot2 için eksiksiz bir kopya kağıdı (cheat sheet) için buraya gidebilirsiniz.
6. R Grafiğinize Izgara Nasıl Çizilir
Temel R ile R Grafiğinize Izgara Çizmek
Bazı amaçlar için grafiğinize bir ızgara eklemeniz gerekebilir.grid() işlevini kullanarak grafiğinize kolayca bir ızgara ekleyebilirsiniz:
ggplot2 ile Bir R Grafiğinde Izgara Çizmek
Aşağıdaki kod bloğu, ggplot2 paketiyle grafiğinizde bir ızgara olduğundan nasıl emin olabileceğinizi gösterir. chol verisinin önceden yüklendiğini ve yukarıdaki veri işleme adımlarının uygulandığını unutmayın.
Verinin nasıl göründüğünden emin değilseniz, DataCamp Light bloğunun R Konsolu'nda veri çerçevesinin ilk satırlarını yazdırın:
İpucu: küçük ızgara çizgilerini istemiyorsanız, element_blank() öğesini panel.grid.minor'a geçirin.
Arka planı bir renkle doldurmak isterseniz, kodunuza panel.background = element_rect(fill = "navy") ekleyin. Bunun nasıl yapıldığını aşağıdaki DataCamp Light bloğunda görebilirsiniz. chol verisi tıpkı önceki gibi yüklenmiş ve hafifçe işlenmiştir. Kendiniz deneyin!
7. Arka Planı PNG Olan Bir Grafik Nasıl Çizilir
png paketinin yardımıyla arka planı .png olan bir grafiği hızla çizebilirsiniz. Gerekirse paketi kurun, çalışma alanınızda library() işleviyle etkinleştirin ve grafik çizmeye başlayabilirsiniz!
Önce, görseli yüklemek isteyeceksiniz. Resmin yolunu belirtmek için readPNG() işlevini kullanın!
ipucu: çalışma dizininizin neresi olduğunu kontrol edebilir ve aşağıdaki komutları çalıştırarak bunu değiştirebilirsiniz.
Resminiz çalışma dizininize kaydedildiyse, tüm yolu vermek yerine doğrudan readPNG("picture.png") belirtebilirsiniz.
Sonraki adımda, grafik alanını ayarlamak ve rasterImage() içindeki grafiksel parametreleri ayarlamak için par() işlevini çağırmak istersiniz. Çizim bölgesinin kullanıcı koordinatlarının uç değerlerini tanımlamak için usr argümanını kullanırsınız. Bu durumda, 1, 3, 2 ve 4 değerlerini verirsiniz.
Ardından bir ızgara çizer ve birkaç çizgi eklersiniz:
install.packages("png")
library(png)
image <- readPNG("<path to your picture>")
getwd()
setwd("<path to a folder>")
plot(1:2, type='n', main="Plotting Over an Image", xlab="x", ylab="y")
lim <- par()
rasterImage(image, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])
grid()
lines(c(1, 1.2, 1.4, 1.6, 1.8, 2.0), c(1, 1.3, 1.7, 1.6, 1.7, 1.0), type="b", lwd=5, col="red")
DataCamp logosunu kullanırsanız aşağıdaki sonucu elde edebilirsiniz:
library(png)
image <- readPNG("datacamp.png")
plot(1:2, type="n", main="Plotting Over an Image", xlab="x", ylab="y", asp=1)
lim <- par()
rasterImage(image, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])
lines(c(1, 1.2, 1.4, 1.6, 1.8, 2.0), c(1.5, 1.3, 1.7, 1.6, 1.7, 1.0), type="b", lwd=5, col="red")

readPNG() girdisi olarak bir .png dosyası vermeniz gerektiğini ve isterseniz aynı prosedürü jpg görsellerle çalışmak için de izleyebileceğinizi unutmayın. Elbette bu durumda jpeg kütüphanesini yüklemeniz gerekir!
Bu örnekte grafikte kullanmak üzere önce webden bir görsel indirdiğinizi, ancak dilerseniz bir görseli yerel olarak kaydedip readJPEG() işlevine dosya yolunu vererek çizim sırasında kullanabileceğinizi de unutmayın.
Ayrıca, bu örneğin, kodu ve çıktıları tek bir yerde bulabileceğiniz, R veri görselleştirmesi için bolca ilham sunan R Graph Gallery'den alındığını da not edin! İlham arıyorsanız ya da grafikleriniz için gereken kodu hızla bulmanın bir yoluna ihtiyaç duyuyorsanız idealdir!
8. R Grafiğinde Noktaların Boyutu Nasıl Ayarlanır
Temel R ile R Grafiğinde Noktaların Boyutunu Ayarlamak
Temel R ile noktaların boyutunu ayarlamak için basitçecex argümanını kullanabilirsiniz:
symbols() işlevi aracılığıyla simgeleriniz üzerinde çok daha fazla denetim sağlar:
Bu grafikteki daireler yarıçap olarak df$x3 değerlerini alır; inches argümanı ise simgelerin boyutunu denetler. Bu argüman pozitif bir sayı olarak girildiğinde, simgeler, en büyük boyut bu inç cinsinden değere eşit olacak şekilde ölçeklendirilir.
ggplot2 ile R Grafiğinizde Noktaların Boyutunu Ayarlamak
Bu durumda, saçılım grafiğinizdeki noktaların boyutunu ayarlamak isteyeceksiniz. Bunu size argümanıyla yapabilirsiniz. chol verisinin sizin için yüklendiğini unutmayın:
size argümanını geom_point() işlevine de geçebileceğinizi unutmayın:
ggplot(chol,
aes(x=chol$WEIGHT, y=chol$HEIGHT)) +
geom_point(size = 2)
Aynı sonucu elde edeceksiniz, ancak sözüme güvenmeyin! DataCamp Light bloğundaki son kod parçasını bu parça ile değiştirmeyi deneyin.
9. R Verinize Düzgün Bir Eğri Nasıl Uydurulur
loess() işlevi muhtemelen bu tür bir soru için her R programcısının favori çözümüdür. Aslında “yerel uyum kullanarak bir veya daha fazla sayısal yordayıcı tarafından belirlenen polinom bir yüzey uydurur”.
Kısacası, veriniz vardır ve loess() işlevini kullanarak y ile x arasında ilişki kurarsınız. Bununla, sayısal yanıtı ve bir ile dört arasında sayısal yordayıcıyı belirtmiş olursunuz.
x ve y'yi çizer ve orijinal grafikte, lo değerlerini öngördüğünüz yerlere çizgiler eklersiniz:
10. R Grafiğinde Hata Çubukları Nasıl Eklenir
Temel R ile Hata Çubukları Çizmek
Kötü haber: R doğrudan hata çubukları çizemiyor. İyi haber: Ek paketler yüklemeye gerek kalmadan yine de hata çubuklarını çizebilirsiniz!
Önce, veri çerçevenizin bazı özet istatistiklerini hesaplamak için aşağıdaki işlevi tanımlamanız gerekecek:
summarySE <- function(data=NULL, measurevar, groupvars=NULL, na.rm=FALSE,
conf.interval=.95, .drop=TRUE) {
library(plyr)
# New version of length which can handle NA's: if na.rm==T, don't count them
length2 <- function (x, na.rm=FALSE) {
if (na.rm) sum(!is.na(x))
else length(x)
}
# This does the summary. For each group's data frame, return a vector with
# N, mean, and sd
datac <- ddply(data, groupvars, .drop=.drop,
.fun = function(xx, col) {
c(N = length2(xx[[col]], na.rm=na.rm),
mean = mean (xx[[col]], na.rm=na.rm),
sd = sd (xx[[col]], na.rm=na.rm)
)
},
measurevar
)
# Rename the "mean" column
datac <- rename(datac, c("mean" = measurevar))
datac$se <- datac$sd / sqrt(datac$N) # Calculate standard error of the mean
# Confidence interval multiplier for standard error
# Calculate t-statistic for confidence interval:
# e.g., if conf.interval is .95, use .975 (above/below), and use df=N-1
ciMult <- qt(conf.interval/2 + .5, datac$N-1)
datac$ci <- datac$se * ciMult
return(datac)
}
İşlev tanımının bu kaynaktan alındığını ve ayrıca Rmisc kütüphanesi aracılığıyla da kullanılabildiğini unutmayın.
Sonra, bununla sizin için önceden yüklenmiş olan chol verisinin bazı istatistiklerini hesaplayabilirsiniz. Ardından, elde edilen bu sayıları kullanarak grafiğinizi oluşturabilirsiniz.
Bu alıştırmaya başlamadan önce veriyi incelemeyi unutmayın!
arrows() işlevinin alabileceği tüm argümanları okumak isterseniz, buraya gidin.
ggplot2 ile Hata Çubukları Çizmek
Ortalamanın Standart Hatasını Temsil Eden Hata Çubukları
Önce verinizi summarySE() işleviyle (ya da yukarıda tanımlanan işleve benzer bir işleve) Rmisc paketinden özetleyin. Ardından, ortaya çıkan veri çerçevesini kullanarak bazı değişkenleri, örneğin ortalamanın standart hatasıyla birlikte hata çubukları çizerek görselleştirebilirsiniz.
position_dodge() function:
İpucu: “geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?” gibi bir hata alırsanız, genellikle group estetiğini ayarlamanız gerekir.
Güven Aralıklarını Temsil Eden Hata Çubukları
Rmisc kütüphanesinin summarySE() işleviyle veya önceki bölümde tanımladığınız işleve göre verinizin özetinden devam ederek, güven aralıklarını temsil eden hata çubukları da çizebilirsiniz. Bu örnekte, %95 güven aralığına sahip hata çubukları çizilir.
Hata çubuklarının renginin şimdi colour argümanıyla siyah olarak ayarlandığına dikkat edin.
Standart Sapmayı Temsil Eden Hata Çubukları
Son olarak, summarySE() işlevinin Rmisc paketindeki sonucunu veya son bölümlerden birinden kopyaladığınız işlev tanımını kullanarak standart sapmayı temsil eden hata çubuklarını da çizebilirsiniz.
Özellikle, geom_errorbar() işlevine verdiğiniz ymin ve ymax argümanlarını ayarlamanız yeterlidir:
Büyük ipucu*: ortalamaları ve hata çubuklarını nasıl çizeceğinize dair daha ayrıntılı örnekler için buraya da bakın.
11. Bir Grafiği Diske Görsel Olarak Nasıl Kaydedersiniz
dev.copy() işlevini, mevcut grafik aygıtında oluşturduğunuz grafiği sizin belirttiğiniz bir aygıta veya klasöre kopyalamak için kullanabilirsiniz.
x <- seq(0,2*pi,0.1)
y <- sin(x)
plot(x,y)
dev.copy(jpeg,
filename="<path to your file/name.jpg>");
dev.off();
(x)
(y)
12. İki R Grafiğini Yan Yana Nasıl Çizersiniz
Temel R Kullanarak İki Grafiği Yan Yana Çizin
Bunu temel R komutlarıyla yapabilirsiniz:par() işlevine mfrow argümanını ekleyerek 1 ve 2’den oluşan bir vektör belirtmiş olursunuz: bu durumda tüm şekiller, aygıtta satırlara göre 1x2’lik bir dizide çizilir (mfrow).
Başka bir deyişle, yukarıdaki kutu grafikleri tek bir satırda iki sütun içinde basılacaktır.
ggplot2 Kullanarak İki Grafiği Yan Yana Çizin
Grafikleri yan yana yerleştirip sınırları belirtmek istemiyorsanız, grafiklerinizi yan yana çizdirmek için ggplot2 paketini kullanmayı düşünebilirsiniz.
Veriniz chol ve summarySE() işlevi yüklenmiştir. Nasıl göründüklerinden emin değilseniz R Konsolu’nda inceleyin:
Yalnızca facet_grid() işlevini ekleyerek iki grafiği yan yana istediğinizi belirtmenize dikkat edin. Grafiklerin nasıl çizileceğini belirlemek için kullanılan öğe MORT’tur; yukarıda açıkça görebilirsiniz!
gridExtra Kullanarak Daha Fazla Grafiği Yan Yana Çizin
Grafikleri yan yana bastırmak için gridExtra paketini kullanabilirsiniz; Paketin çalışma alanınızda kurulu ve etkin olduğundan emin olun ve ardından şuna benzer bir şey çalıştırın:
Burada yine iki grafiğin size nasıl görüneceğini ncol argümanı sayesinde belirlediğinize dikkat edin.
lattice Kullanarak Daha Fazla Grafiği Yan Yana Çizin
ggplot2 paketli çözüme benzer şekilde, lattice paketi de sınırları ya da grafiklerin yan yana nasıl basılacağını belirtmenizi gerektirmez.
Bunun yerine, bwplot() kullanarak bir kutu grafiği türünde trellis grafikleri yaparsınız. Trellis grafikleri, bir değişkeni veya değişkenler arası ilişkiyi, bir ya da daha fazla başka değişkene koşullandırarak görüntüler.
Bu durumda, chol veri setini kullanıyorsanız (ki bunu burada bulabilirsiniz veya read.table() işleviyle yükleyebilirsiniz), CHOL değişkenini, SMOKE ve MORT düzeylerinin her bir kombinasyonu için ayrı ayrı gösterirsiniz.
Aşağıdaki DataCamp Light parçasında verilerin sizin için yüklendiğine dikkat edin!
gridBase ile Grafikleri Yan Yana Çizme
İki grafiği yan yana yerleştirmenin bir başka yolu da, “temel ve grid grafiklerinin entegrasyonu”nu sağlayan gridBase paketini kullanmaktır. Bu, temel bir R grafiğiyle bir ggplot’u yan yana koymak istediğinizde kullanışlı olabilir.
Şöyle çalışırsınız: önce çalışma alanınızda gerekli paketleri etkinleştirirsiniz. Bu durumda, iki grafiği yan yana koymak için gridBase’e ve grafiklerinizi gerçekten üretmek için grid ile ggplot2’ye hazır olmak istersiniz:
library(grid)
library(gridBase)
library(ggplot2)
plot.new()
gl <- grid.layout(nrow=1,
ncol=2)
vp.1 <- viewport(layout.pos.col=1,
layout.pos.row=1)
vp.2 <- viewport(layout.pos.col=2,
layout.pos.row=1)
pushViewport(viewport(layout=gl))
pushViewport(vp.1)
par(new=TRUE,
fig=gridFIG())
plot(x = 1:10,
y = 10:1)
popViewport()
pushViewport(vp.2)
ggplotted <- qplot(x=1:10,y=10:1, 'point')
print(ggplotted, newpage = FALSE)
popViewport(1)
İsterseniz ve ihtiyaç duyarsanız, yerleşimi ayarlamak için boş bir grafik başlatabilirsiniz. İki grafiğin yan yana üretilmesini istediğiniz için bir satır ve iki sütundan oluşan bir grid yerleşimi yapmanız gerektiğine dikkat edin.
Şimdi ızgaranın hücrelerini görüntü alanlarıyla doldurmak istersiniz. Bunlar, söz konusu bölgeler içindeki koordinatların yardımıyla grafik aygıtınızda dikdörtgen bölgeler tanımlar. Bu durumda, gerçek x veya y koordinatları yerine, yukarıda açıklanan ızgara özelliklerini kullanmak çok daha kullanışlıdır. Bu yüzden layout.pos.col ve layout.pos.row argümanlarını kullanmalısınız.
Görüntü alanları yalnızca tanım ya da betimleme olduklarından, çizimde herhangi bir etki görebilmeden önce bu tür nesnelerin görüntü alanı ağacına itilmesi gerekir. Bunu başarmak için pushViewport() işlevini kullanmak istersiniz.
Artık ilk dikdörtgen bölgeyi vp.1 ViewPort ağacına eklemeye geçebilirsiniz; ardından gridFig() ile R’ye bir grid görüntü alanı içine (yani vp.1) temel bir grafik çizmesini söylersiniz. fig argümanı normalde aygıtın görüntü bölgesindeki şekil bölgesinin koordinatlarını alır. Bu durumda, par() işlevinde new = TRUE ekleyerek yeni bir grafiği mevcut bir grafiğe eklemek için fig argümanını kullanırsınız. Temel grafiği çizer ve görüntü alanını ağaçtan kaldırırsınız:
plot.new()
gl <- grid.layout(nrow=1,
ncol=2)
vp.1 <- viewport(layout.pos.col=1,
layout.pos.row=1)
vp.2 <- viewport(layout.pos.col=2,
layout.pos.row=1)
pushViewport(viewport(layout=gl))
pushViewport(vp.1)
par(new=TRUE,
fig=gridFIG())
plot(x = 1:10,
y = 10:1)
popViewport()
İki grafiğin yan yana üretilmesini istediğiniz için, bir grafiği ilk sütuna, diğerini ikinci sütuna ve ikisini de birinci satıra yerleştirmek istersiniz.
pushViewport() işlevinin, kendi içinde bir layout argümanı içeren viewport() işlevini aldığına dikkat edin. Bu son argüman, “görüntü alanını alt bölgelere ayıran bir grid yerleşim nesnesi”ni belirtir.
Ayrıca, popViewport() işlevinde ağaçtan kaç görüntü alanını kaldırmak istediğinizi belirten bir argüman belirtebileceğinizi de unutmayın. Bu değer 0 ise, kök görüntü alanına kadar olan tüm görüntü alanlarını kaldırmak istediğinizi belirtir. Bu argümanın varsayılan değeri 1’dir.
İkinci dikdörtgen bölgeyi vp.2 ViewPort ağacına eklemeye geçin. Ardından ggplot’u oluşturabilir ve görüntü alanını ağaçtan kaldırabilirsiniz.
pushViewport(vp.2)
ggplotted <- qplot(x=1:10,
y=10:1,
'point')
print(ggplotted,
newpage = FALSE)
popViewport(1)
qplot() ile oluşturulan grafik nesnesini gerçekten çizmek ve görüntülemek için yazdırmanız gerektiğine dikkat edin. Aynı zamanda newpage = FALSE belirtmek istersiniz; aksi takdirde yalnızca qplot()’u görürsünüz…
Ayrıca, unutmayın ki popViewport() işlevinde kaldırılacak görüntü alanlarının varsayılan değeri 1’dir. Bu da kodda popViewport(1) yazmayı bir ölçüde gereksiz kılar.
13. Birden Fazla Doğruyu veya Noktayı Nasıl Çizersiniz
Aynı R Grafiğinde Birden Fazla Doğruyu veya Noktayı Temel R ile Çizme
Aynı grafikte iki veya daha fazla grafiği çizmek için, esasen R’de tipik bir temel grafik oluşturarak başlarsınız. Sonra da grafiğe daha fazla doğru veya nokta eklersiniz. Bu durumda, grafiğe daha fazla doğru eklediğiniz için daha fazla y ekseni tanımlarsınız:Ardından bu doğruların lines() işlevi kullanılarak çizildiğini görürsünüz.
Bu size aşağıdaki sonucu verir:
lines() işlevinin üç argüman aldığını not edin: çizmek istediğiniz x ekseni ve y ekseni ile, hangi renkte çizmek istediğinizi belirttiğiniz renk (col argümanı). Ayrıca şu özellikleri de ekleyebilirsiniz:
| Özellik | Argüman | Girdi |
|---|---|---|
| Çizgi türü | lty |
Tamsayı veya karakter dizisi |
| Çizgi kalınlığı | lwd |
Tamsayı |
| Çizim türü | pch |
Tamsayı veya tek karakter |
| Çizgi bitiş stili | lend |
Tamsayı veya dize |
| Çizgi birleşim stili | ljoin |
Tamsayı veya dize |
| Çizgi köşe sınırı | lmitre |
1’den küçük tamsayı |
İşte bazı örnekler:
lines(x,y2,col="green", lty = 2, lwd = 3)
lines(x,y2,col="green", lty = 5, lwd = 2, pch = 2)
lines(x,y3,col="black", lty = 3, lwd = 5, pch = 3, lend = 0, ljoin = 2)
lines(x,y4,col="blue", lty = 1, lwd = 2, pch = 3, lend = 2, ljoin = 1, lmitre = 2)
pch argümanının lines() işleviyle pek iyi çalışmadığını ve en iyisinin onu yalnızca points() ile kullanmak olduğunu unutmayın.
points() işlevini kullanabilirsiniz:
points() işlevine, yukarıda listelenen ve lines() işleviyle kullandığınız aynı argümanları ekleyebilirsiniz. Ancak bazı eklemeler vardır:
| Özellik | Argüman | Girdi |
|---|---|---|
| Arka plan (dolgu) rengi | bg |
Yalnızca pch = 21:25 ise |
| Karakter (veya sembol) ölçekleme | cex |
Tamsayı |
Bu argümanların kod örnekleri şöyledir:
points(x,y4,col="blue", pch=21, bg = "red")
points(x, y5, col="yellow", pch = 5, bg = "blue")
Yukarıda gördüğünüz grafiğe bu değişiklikleri dahil ederseniz, aşağıdaki sonucu elde edersiniz:
Tek Bir R Grafiğinde Birden Fazla Doğruyu veya Noktayı ggplot2 ile Çizme
ggplot2 paketi, katmanlar oluşturmanıza da olanak tanır; bu sayede iki veya daha fazla grafiği aynı R grafiğinde zorlanmadan ve oldukça kolay bir şekilde çizebilirsiniz:
14. R Grafiklerinizde En-Boy Oranını Nasıl Sabitlersiniz
Eksenlerin boyutlarına orantılı olduğu bir görüntü olarak R grafiğinizi kaydetmek istiyorsanız, bu en-boy oranını sabitlemek istediğinizin bir işaretidir.
Temel R ile En-Boy Oranını Ayarlama
Grafiklerinizi üretmek için temel R komutlarıyla çalışırken,plot() işlevinin asp argümanını, bir tamsayı ile birlikte ekleyerek en-boy oranını ayarlayabilirsiniz. Önce tanımlı bir en-boy oranı olmayan bu ilk örneğe bakın:
asp argümanıyla en-boy oranının tanımlandığı grafikle karşılaştırın:
Grafiklerinizin En-Boy Oranını ggplot2 ile Ayarlama
ggplot2 grafiklerinin en-boy oranını sabitlemek için, “eksende veri birimlerinin fiziksel temsilleri arasında belirli bir oranı zorlayan sabit ölçekli koordinat sistemi” sağlayan coord_fixed() işlevini eklemeniz yeterlidir.
Başka bir deyişle, bu işlev, x eksenindeki bir birime karşılık gelen y ekseninde kaç birim olacağını belirtmenize olanak tanır. Varsayılan her zaman 1’dir; bu da x eksenindeki bir birimin, y eksenindeki bir birimle aynı uzunlukta olduğu anlamına gelir. Oranınız daha yüksek bir değere ayarlanmışsa, y eksenindeki birimler x eksenindekilerden daha uzundur; tersi durumda ise daha kısadır.
Şu örnekleri karşılaştırın:Grafiklerinizin En-Boy Oranını MASS ile Ayarlama
Ayrıca, MASS paketini de düşünebilirsiniz; bu paket, geometrik olarak eşit ölçekler üreten eqscplot() işlevini içerir. Bunu dağılım grafikleri için yapar:
İpucu: Yukarıdaki kodu çalıştırmadan önce yeni bir çizim çerçevesi başlatmanız iyi olabilir!
eqscplot() işlevine, dağılım grafiğinin görünümünü özelleştirmek için ek argümanlar verebileceğinizi unutmayın!
15. ggplot2 İçinde hjust ve vjust Ne İşe Yarar
Temelde bu argümanları, ggplot’unuzdaki metnin konumunu ayarlamak istediğinizde kullanırsınız. hjust yatay hizalamayı tanımlamanızı sağlar; vjust ise dikey hizalamayı kontrol etmek içindir. Daha fazla bilgi için geom_text() belgelendirmesine bakın.
Ne olduğunu göstermek için, expand.grid() işleviyle faktörlerin tüm kombinasyonlarından bir veri çerçevesi oluşturabilirsiniz:
hjustvjust <- expand.grid(hjust=c(0, 0.5, 1),
vjust=c(0, 0.5, 1),
angle=c(0, 45, 90),
text="Text"
)
hjust ve vjust değerlerinin yalnızca 0 ile 1 arasında olabileceğini unutmayın.
0, metnin sola hizalandığı anlamına gelir; Başka bir deyişle tüm metin sol kenara hizalanır. Bu genellikle Microsoft Word gibi metin düzenleyicilerde gördüğünüzdür.1, metnin sağa hizalandığı anlamına gelir: tüm metin sağ kenara hizalanır.
ggplot() işleviyle, x ve y eksenlerini sırasıyla hjust ve vjust olarak tanımlayarak çizebilirsiniz:
Ayrıca, metinsel açıklamalardan sorumlu olan geom_text() içine hjust ve vjust argümanlarının nasıl eklendiğine dikkat edin.
Yukarıdaki grafikte, (0,0) noktasındaki metnin hem yatay hem dikey olarak sola hizalandığını görürsünüz. Öte yandan, (1,1) noktasındaki metin hem yatay hem de dikey yönde sağa hizalanmıştır. (0.5,0.5) noktası tam ortadadır: yatay ve dikey yönler açısından ne sola ne de sağa gerçekten hizalanmıştır.
Bu argümanlar eksen metnini değiştirmek için tanımlandığında, eksen metninin yatay hizalamasının x eksenine değil, tüm grafiğe göre belirlendiğine dikkat edin!vjust argümanını tanımlamanın grafiğinizin gösterimine ne yaptığını kendiniz de deneyin:
Yukarıdaki kodun alındığı mükemmel özgün tartışmaya gitmek için buraya tıklayın.
Son Bir Not…
R grafiklerinizi en iyi görünecek şekilde yapmanız için 10 ipucu listeleyen bu yazıya göz atmaya değer!
Ayrıca, veri görselleştirme hakkında daha fazla bilgi almak isterseniz, Garrett Grolemund (Hands on Programming with R ve Data Science with R yazarı) tarafından verilen DataCamp’in etkileşimli ggvis ile veri görselleştirme kursunu incelemeyi düşünebilirsiniz.
Ya da belki de R Markdown ile raporlama kursumuz ilginizi çekebilir!
