13 Temmuz 2014 Pazar

R İle Basit Grafikler

R İLE BASİT GRAFİKLER OLUŞTURMA
> cars <- c(1, 3, 6, 4, 9)
> plot(cars)

 

> plot(cars, type="o", col="blue")
> title(main="Autos", col.main="red", font.main=4)

 



Trucks isimli yeni bir değişkenimiz olsun. Önceki grafiğe truck’ın grafiğini eklemek için lines() komutu kullanılır.
Grafikleri farklılaştırmak için farklı koutlar vardır.
pch: noktanın şeklini girmek için kullanılır.  Farklı sayılar girilerek farklı şekiller elde edilebilir.
pch=0,square
pch=1,circle
pch=2,triangle point up
pch=3,plus
pch=4,cross
pch=5,diamond
pch=6,triangle point down
pch=7,square cross
pch=8,star
pch=9,diamond plus
pch=10,circle plus
pch=11,triangles up and down
pch=12,square plus
pch=13,circle cross
pch=14,square and triangle down
pch=15, filled square blue
pch=16, filled circle blue
pch=17, filled triangle point up blue
pch=18, filled diamond blue
pch=19,solid circle blue
pch=20,bullet (smaller circle)
pch=21, filled circle red
pch=22, filled square red
pch=23, filled diamond red
pch=24, filled triangle point up red
pch=25, filled triangle point down red
cex: pch’ın boyutunu belirtir
cex.lab: eksen etiketlerinin boyutunu değiştirmek için kullanılır
lty (line type):  grafikte kullanılan çizginin türü
Örneğin aşağıdaki grafikte lty’nin çeşitli biçimleri görülmektedir.




lwd (line width):grafik çizgisinin kalınlığını belirtmek için kullanılır.
Grafikte renk değişiklikleri aşağıdaki kodlarla yapılabilir
seçenekler
tanım
col
grafik çizgisinin rengini değiştirmek için kullanılır. Some functions (e.g. lines) accept a vector of values that are recycled.
col.axis
eksenlerin rengini değiştirmek için kullanılır
col.lab
X ve y eksenlerinin etiketlerinin rengini değiştirmek için kullanılır
col.main
Ana başlık rengi
col.sub
Alt başlık rengi
fg
Çerçeve rengi
bg
Grafiğin arka fon rengi

Ayrıca n tane birbirini izleyen renk serisi rainbow(n), heat.colors(n), terrain.colors(n),  topo.colors(n), ve cm.colors(n) fonksiyonları ile elde edilebilir.

> pie(rep(1,12), col=rainbow(12))
 
> pie(rep(1,10), col=heat.colors(10))
> barplot(seq(1:12), col=topo.colors(12))


colors() yukarıdaki tablodaki tüm renklerin isimlerinin görüntülenmesini sağlar

> trucks <- c(2, 5, 4, 5, 12) 
> plot(cars, type="o", col="blue", ylim=c(0,12))
> lines(trucks, type="o", pch=22, lty=2, col="red")
> title(main="Autos", col.main="red", font.main=4)



trucks <- c(2, 5, 4, 5, 12)
plot(cars, type="o", cex=4,col="blue", ylim=g_range,col.lab="blue", col.axis="orange")
lines(trucks, type="o", pch=22, lty=2, col="red")
title(main="Autos", col.main="red", font.main=4 )






İki veya daha fazla değişkenin grafiği bir arada çizilmek istenirse eksenlerin uzunluğuna dikkat edilmelidir. Aksi belirtilmezse plot ile çizilen değişkenin eksen uzunluğu alınır, bu durumda diğer değişkenlerin bazı değerleri grafikte görünmeyebilir.  Bu durumu önlemek ve grafiğin en geniş açıklığa göre çizilmesi için tüm değişkenlere göre en geniş açıklık bulunmalıdır.
> g_range=range(cars, trucks)#en genis acikligin bulunması

Bu durumda eksen açıklığı plot kodunun içine aşağıdaki gibi girilmelidir.
plot(cars, type="o", cex=4,col="blue", ylim=g_range)
lines(trucks, type="o", pch=22, lty=2, col="red")
title(main="Autos", col.main="red", font.main=4)

axes=F seçilirse eksen çizgileri görünmez
ann=F seçilirse eksendeki sayılar görünmez 
plot(cars, type="o", col="blue", ylim=g_range,  axes=F, ann=F)
Eksenledeki karakterleri değiştirmek için öncelikle axes ve ann F yapılmalıdır


Eksenlerde herhangi bir değişiklik yapmak için axis(…) fonksiyonu kullanılır. 1, x eksenini 2, y eksenini gösterir.  at hangi sayılarda eksen adı girileceğini gösterir. lab ise ilgili eksen adlarını gösterir. Eksenlerdeki karakterlerin büyüklüğünü değiştirmek için cex.axis kullanılır.
> par(mar=c(4,4,2,2))
> plot(cars, type="o", col="blue", ylim=g_range,
+      axes=F, ann=F)
> axis(1, at=1:5, lab=c("Mon","Tue","Wed","Thu","Fri"),cex.axis=1.5)



y ekseninin değerlerini eklemek veya düzenlemek için axis( 2,…)  girilir. Ayrıca las=1 seçilerek eksen numaralarının dik olmaları sağlanır. 
> axis(1, at=1:5, lab=c("Mon","Tue","Wed","Thu","Fri"))
> plot(cars, type="o", col="blue", ylim=g_range, 
+      axes=F, ann=F)
> # Make x axis using Mon-Fri labels
> axis(1, at=1:5, lab=c("Mon","Tue","Wed","Thu","Fri"))
> axis(2, las=1, at=4*0:g_range[2])






box() ile grafiğin kutu içine alınması sağlanır.
> plot(cars, type="o", col="blue", ylim=g_range, 
+      axes=F, ann=F)
> # Make x axis using Mon-Fri labels
> axis(1, at=1:5, lab=c("Mon","Tue","Wed","Thu","Fri"))
> axis(2, las=1, at=4*0:g_range[2])
> box()



lines() fonksiyonu ile trucks değişkeninin grafiği  var olan plota eklenir.
plot(cars, type="o", col="blue", ylim=g_range, 
+      axes=F, ann=F)
> # Make x axis using Mon-Fri labels
> axis(1, at=1:5, lab=c("Mon","Tue","Wed","Thu","Fri"))
> axis(2, las=1, at=4*0:g_range[2])
> box()
> lines(trucks, type="o", pch=22, lty=2, col="red")




Eksenlerin başlığını ve ana başlık eklemek için title() fonksiyonu kullanılır.
> plot(cars, type="o", col="blue", ylim=g_range, 
+      axes=F, ann=F)
> # Make x axis using Mon-Fri labels
> axis(1, at=1:5, lab=c("Mon","Tue","Wed","Thu","Fri"))
> axis(2, las=1, at=4*0:g_range[2])
> box()
> lines(trucks, type="o", pch=22, lty=2, col="red")
> title(main="Autos", col.main="red", font.main=4)
> title(xlab="Days", col.lab=rgb(0,0.5,0))
> title(ylab="Total", col.lab=rgb(0,0.5,0))





legend() fonksiyonu ile hangi çizginin hangi değişkene ait olduğu belirtilir.
> plot(cars, type="o", col="blue", ylim=g_range, 
+      axes=F, ann=F)
> # Make x axis using Mon-Fri labels
> axis(1, at=1:5, lab=c("Mon","Tue","Wed","Thu","Fri"))
> axis(2, las=1, at=4*0:g_range[2])
> box()
> lines(trucks, type="o", pch=22, lty=2, col="red")
> title(main="Autos", col.main="red", font.main=4)
> title(xlab="Days", col.lab=rgb(0,0.5,0))
> title(ylab="Total", col.lab=rgb(0,0.5,0))
> legend(1, g_range[2], c("cars","trucks"), cex=0.8, 
+        col=c("blue","red"), pch=21:22, lty=1:2)










Birden fazla grafiğin aynı grafikte gösterilmesi

layout() veya par() fonksiyonları kullanılabilir
> oto = read.table("http://www-bcf.usc.edu/~gareth/ISL/Auto.data", header = T,na.strings = "?")
> attach(oto)
> par(mfrow=c(3,1))
> hist(weight)
> hist(horsepower)
> hist(mpg)




> par(mfrow=c(1,3))
> pie(rep(1,12), col=rainbow(12))
> barplot(seq(1:12), col=topo.colors(12))
> pie(rep(1,10), col=heat.colors(10))
 



> par(mfrow=c(2,2))
> plot(weight,mpg, main="agirlik ve benzin tuketimi sacilim grafigi")
> plot(horsepower,mpg, main="beygirgucu ve benzin tuketimi sacilim grafigi")
> hist(mpg, main="Benzin tuketimi histogram")
> boxplot(mpg, main="Benzin tuketimi Boxplot")






Layout() komutunun kullanılması
layout() komutunun girdileri matris gibidir. Matrisin her bir elemanı ilgili grafiğin yerini belirler.
> attach(mtcars)
The following objects are masked from mtcars (position 3):
 
    am, carb, cyl, disp, drat, gear, hp, mpg, qsec, vs, wt
The following objects are masked from mtcars (position 4):
 
    am, carb, cyl, disp, drat, gear, hp, mpg, qsec, vs, wt
The following object is masked from oto:
 
    mpg
> matrix(c(1,1,2,3), 2, 2, byrow = TRUE)
     [,1] [,2]
[1,]    1    1
[2,]    2    3
> layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))
> hist(wt)
> hist(mpg)
> hist(disp)

Örneğin komuta bakılırsa  1. Şekil  1. Satır  1. ve 2. Sütunda 2. şekil  2. Satır 1. Sütun, 3. Grafik 2. Satır 2. Sütunda olarak çizilecektir.




Bir grafiğin diğerinden daha az yer kaplaması isteniyorsa veya grafiklerin boyutları birbirine göre ayarlanmak isteniyorsa:
> layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE), 
+        widths=c(3,1), heights=c(1,2))
> hist(wt)
> hist(mpg)
> hist(disp



Yukarıdaki grafiklerde görüldüğü gibi widths(3,1)  1. Sütun genişliğinin 2. 3 katı kadar olacağını belirtir. heigts(1,2)  2. Satırın 1.’nin 2 katı olacağını belirtir.
Grafiğin pdf olarak saklanması
Grafiği pdf olarak saklamak daha net bir görüntü alınmasını sağlar. pdf() komutunun içine dosyanı adı ve kaydedilmek istenilen konum girilmelidir.
> pdf(file="C:/Users/KULLANICI/Dropbox/Rintroductionslides/grafik2.pdf",height=5,width=5)
> par(bg="yellow",mar=c(4,4,0,0))
> plot(cars, type="o", col="blue")
> dev.off()
null device 
          1
 
Grafiğin kenar boşluklarını ayarlamak için
par() fonksiyonu  içinde mar() komutu kullanılır
par(mar=c(alt kenar boşluk,sol boşluk,üst boşluk,sag boşluk))
> pdf(file="C:/Users/KULLANICI/Dropbox/Rintroductionslides/grafik2.pdf",height=5,width=5)
> par(bg="yellow",mar=c(4,4,0.5,0.5))
> plot(cars, type="o", col="blue")
> dev.off()
null device 
          1 

Grafiğe metin ekleme
text( ) ve mtext( ) fonksiyonları ile grafiklere metin eklenebilir. text( ) places text grafiğin içine mtext( ) kenarlardan birine metin eklenmesini sağlar.
text(location, "metin", pos, ...)
mtext("metin",
 side, line=n, ...)
seçenekler
tanım
location
x,y coordinate olabilir. . Alternatively, the text can be placed interactively via mouse by specifying location as locator(1).
pos
pozisyon. 1=below, 2=left, 3=above, 4=right. Noktanın neresine metin konması gerektiğini belirtir
side
Metinin konulması istenen kenar. 1=bottom, 2=left, 3=top, 4=right. you can specify line= to indicate the line in the margin starting with 0 and moving out. you can also specify adj=0 for left/bottom alignment or adj=1 for top/right alignment.
> plot(wt, mpg, main="Milage vs. Car Weight", 
+      xlab="Weight", ylab="Mileage", pch=18, col="blue")
> abline(v=3)
> abline(h=20)
> text(3, 20, "a", cex=2, pos=1, col="red")
> text(3, 20, "b", cex=2, pos=2, col="blue")
> text(3, 20, "c", cex=2, pos=3, col="darkgreen")
> text(3, 20, "d", cex=2, pos=4, col="purple")



Grafiğin her noktasına isim verilmek istenirse aşağıdaki kod kullanılabilir.
> plot(wt, mpg, main="Milage vs. Car Weight",
+      xlab="Weight", ylab="Mileage", pch=18, col="blue")
> text(wt, mpg, row.names(mtcars), cex=0.6, pos=4, col="red")




Grafiğin Puntoları
Grafiğin puntoları istenilen şekilde değiştirilebilir.
seçenek
tanım
font
Metinlerin puntoları Integer specifying font to use for text. 
1=düz, 2=koyu, 3=italik, 4=koyu italik, 5=sembol
font.axis
Eksenlerdeki karakterlerin puntoları
font.lab
X ve y eksenlerinin etiketlerinin puntoları
font.main
Ana başlığın puntoları
font.sub
Alt başlıkların puntoları
ps
punto büyüklüğü
metin büyüklüğü=ps*cex
family
Metinlerin yazılması için kullanılan punto ailesi. "serif", "sans", "mono", "symbol".
 
par(mar=c(4,4,2,2))
plot(cars, type="o", col="blue", ylim=g_range, 
     axes=F, ann=F)
axis(1, at=1:5, lab=c("Mon","Tue","Wed","Thu","Fri"),cex.axis=1.5,font.axis=4)
axis(2, las=1, at=4*0:g_range[2],cex.axis=2,font.axis=2)
 



> plot(1:10,1:10,type="n")
> windowsFonts(
+   A=windowsFont("Arial Black"),
+   B=windowsFont("Bookman Old Style"),
+   C=windowsFont("Comic Sans MS"),
+   D=windowsFont("Symbol")
+ )
> text(3,3,"Hello World Default")
> text(4,4,family="A","Hello World from Arial Black")
> text(5,5,family="B","Hello World from Bookman Old Style")
> text(6,6,family="C","Hello World from Comic Sans MS")
> text(7,7,family="D", "Hello World from Symbol")













Çubuk Grafiklerinin Oluşturulması
> cars <- c(1, 3, 6, 4, 9)
> trucks <- c(2, 5, 4, 5, 12)
> suvs=c(4,4,6,6,16)
>
>
> barplot(cars)




> par(mar=c(4, 4, 1, 1))
> barplot(autos_data$cars, main="Cars", xlab="Days", 
+         ylab="Total", names.arg=c("Mon","Tue","Wed","Thu","Fri"),
+         border="blue", density=c(10,20,30,40,50))





> barplot(as.matrix(autos_data), main="Autos", ylab= "Total",beside=T, col=rainbow(5),names.arg=c("cars","trucks","suvs"))
> legend("topleft", c("Mon","Tue","Wed","Thu","Fri"), cex=0.6, bty="n", fill=rainbow(5));



space: her bir çubuk arasındaki genişliktir.
> #grafigin sag tarafinda legend eklemek için bosluk birakilmistir
> par(xpd=T, mar=par()$mar+c(0,0,0,4))
> barplot(t(autos_data), main="Autos", ylab="Total",
+         col=heat.colors(3), space=0.1, cex.axis=0.8, las=1,
+         names.arg=c("Mon","Tue","Wed","Thu","Fri"), cex=0.8)
> #legend 6,30 koordinatlarına konulmustur
> legend(6, 30, names(autos_data), cex=0.8, fill=heat.colors(3));