R dapat digunakan untuk membuat grafik dengan banyak fungsi grafik yang sudah disediakan. Package untuk membuat grafik di antara yaitu graphics, ggplot2, dan lattice. Materi yang akan dibahas yaitu fungsi-fungsi pada package graphics dengan perintah dasarnya yaitu fungsi plot.
Plot grafik digambarkan dalam sebuah media yaitu devices. Beberapa device yang ada di R: X11, windows, postscript, pdf, pictex, png, jpeg, bmp, xfig, bitmap.
Sewaktu menjalankan plot untuk membuat grafik, terdapat devices default yang digunakan:
Disarankan file grafik disimpan menggunakan jpeg atau png.
Berikut adalah beberapa fungsi dalam devices:
dev.list() : digunakan untuk melihat daftar device yang sudah dibuatdev.cur() : digunakan untuk melihat device aktifdev.set() : digunakan untuk mengganti device aktifdev.off() : digunakan untuk menutup device yang aktifgraphics.off() : digunakan untuk menutup semua devicedev.copy() : digunakan untuk mencopy isi dari deviceplotPerintah grafik dasar dengan syntax: plot(x,y,...)
x dan y merupakan vektor untuk koordinat pada grafik, sementara … adalah pilihan lain.
x <- 1:16
y <- rnorm(16,8,1)
plot(x,y)Bila hanya ada 1 peubah dalam argumen fungsi maka output berupa plot antara indeks (sumbu x) dengan nilai peubah (sumbu y).
plot(y)plot(x)typePilihan type digunakan untuk bentuk grafik:
par(mfrow=c(3,3))
plot(x,y,type="p") # titik (default)
plot(x,y,type="l") # garisplot(x,y,type="b") # garis & titik
plot(x,y,type="o") # garis & titik overlaidplot(x,y,type="n") # nothing
plot(x,y,type="s") # tangga, segmen pertama horizontalplot(x,y,type="S") # tangga, segmen pertama vertikal
plot(x,y,type="h") # garis vertikal dari sumbu-x ke titik sesuai nilai yPilihan karakter yang sering digunakan yaitu
pch untuk mengatur simbol dari titik koordinat plot.cex untuk mengatur ukuran/size dari pch, semakin besar nilainya (>1) maka semakin besar ukuran simbolnya.Berikut adalah ilustrasinya
par(mfrow=c(2,2))
plot(x,y,pch="*")
plot(x,y,pch=19)plot(x,y,pch="*",cex=2)
plot(x,y,pch=19,cex=2)Pilihan garis yang sering digunakan yaitu
lty untuk mengatur tipe garis (1=solid, 2=small breaks, dll).lwd untuk mengatur ketebalan garis, semakin besar angka maka garis akan semakin tebal.Berikut adalah ilustrasinya.
par(mfrow=c(2,2))
plot(x,y,type="l",lty=1)
plot(x,y,type="l",lty=2)plot(x,y,type="l",lty=1,lwd=2)
plot(x,y,type="l",lty=2,lwd=2)axes berupa boolean apakah sumbu axis pada sumbu x dan y digambarkan
par(mfrow=c(1,2))
plot(x,y,axes=TRUE)
plot(x,y,axes=FALSE)xlim digunakan untuk membatasi sumbu x dengan nilai yang ditentukan. misalkan xlim=c(0,10)
par(mfrow=c(1,2))
plot(x,y)
plot(x,y,xlim=c(0,10))berarti sumbu x dibatasi hanya antara 0 sampai 10
ylim digunakan untuk membatasi sumbu y dengan nilai yang ditentukan. misalkan ylim=c(5,8)
par(mfrow=c(1,2))
plot(x,y)
plot(x,y,ylim=c(5,8))berarti sumbu y dibatasi hanya antara 5 sampai 8
col digunakan untuk mengganti warna titik/garis. Terdapat beberapa cara:
par(mfrow=c(3,3))
plot(x,y,pch=19,col=1)
plot(x,y,pch=19,col=2)plot(x,y,pch=19,col=3)
plot(x,y,pch=19,col=4)plot(x,y,type="l",col=5)
plot(x,y,type="l",col=6)plot(x,y,type="l",col=7)
plot(x,y,type="l",col=8)par(mfrow=c(2,3))
plot(x,y,pch=19,col="red")
plot(x,y,pch=19,col="orange")plot(x,y,pch=19,col="yellow")
plot(x,y,type="l",col="green")plot(x,y,type="l",col="blue")
plot(x,y,type="l",col="purple")list warna yang bisa digunakan dapat dilihat pada:
warna <- data.frame(colors())
warnargb()par(mfrow=c(2,3))
plot(x,y,pch=19,col=rgb(1,0,0)) #merah
plot(x,y,pch=19,col=rgb(0,1,0)) #hijauplot(x,y,pch=19,col=rgb(0,0,1)) #biru
plot(x,y,type="l",col=rgb(0,0,0)) #hitam plot(x,y,type="l",col=rgb(1,1,1)) #putih
plot(x,y,type="l",col=rgb(0.5,0.5,0.5)) #abu-aburainbow()```r
par(mfrow=c(1,2))
a <- c("A","B","C","D","E")
b <- c(8,2,5,8,4)
barplot(b,col=rainbow(3))
pie(b,labels=a,col = rainbow(length(b)))
```
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAApkAAAGbCAMAAAC4UXv2AAAAYFBMVEUAAAAAADoAAGYAAP8AOjoAOpAAZrYAZv8A/wAA/2Y6AAA6ADo6kNtmAABmZjpmtv+QOgCQ2/+2ZgC225C2///MAP/M/wDbkDrb////AAD/tmb/trb/25D//7b//9v///8zDZLlAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAMMElEQVR4nO3dC3fayB2G8YnbOE3WNNh1S0ID+v7fcpEQF4Fuo/mP5tXoec4eZ4+XFdLwy+iCjVxBpJhLvQJErSGTNEMmaYZM0gyZpBkySTNkkmbIJM2QSZohkzRDJmmGTNIMmaQZMkkzZJJmyCTNkEmaIZM0QyZphkzSDJmkGTJJM2SSZsgkzZBJmiGTNEMmaYZM0gyZpBkySTNkkmbIJM2QSZohkzRDJmmGTNLMT+aHc6/HrXPuZ6TVIarzkrn7+uuE87UoDpu3WCtEVOUj87g9edx/eS/ORoki5iPzsDntxPcvn8Xl620p156+0ZnZJjyU8KnJMOM58yrz91DxZKZ7ajJs2nFmZbRvccikwIzPzZFJRhm/Ssgko5BJmiGTNEMmaYZM0gyZpBkySTNkkmbIJM2QSZohkzRDJmmGTNIMmaQZMkkzZJJmyCTNkEmaIZM0QyZphkzSDJmkGTJJM2SSZsgkzZBJmiGTNEMmaYZM0gyZpBkySTNkkmbIJM2QSZohkzRDJmmGTNIMmaQZMkkzZJJmyCTNkEmaIZM0QyZphkzSDJmkGTJJM2SSZsgkzZBJmiGTNEMmaYbMzPpwZV/eU69HcMjMrI+vv05fd2NpumZRV80vZGbWWeZh8zbwuJri49Do8ERmZl1k/ux+SBtJPZ7IzKx6b/7a/l+HUArxRGZmnc+AXOXzodO3/zeO5R3P+bfgsrZxFofMVJ3nzL17nDRLlmV+NEucfU/mhg5np4fMzDrLLD5ePu+/W7OcILPP5p+//t18Gsv8XqVye//86LlchszU1TJ3JZnrq3F1OUVm90599/KfHz1nWmF5vUoVzL/ee079kJm6y5xZ/lFv6J3LaTJ/t0+cx+3r6Z9YG+LzKlUXyT6qVdm1HWEXyEzf5TizmjrKLXUNmJNpttjcn3adoy/pe+cn8+fp70l1zLt/PIx5eBMBmalqvDvp3KPL6TKfbZZ/CYYv6U/Nb2/+erlSxpy5iJ5dhsh8GLk/P0qUH7HOgbxepcPm5bOaNPddczgyhWpzaUhzV+8mI50Deb5K+/PKdB72IlOndpdhMq+n6a6oT34Om0jnQFzPzLUumGEyf58PN91tvxnrHAiZedaxJ7eQWQ6gu16eqg83I2xBnMUhM23dLo1onkBeji8jnQMhM8N6Jkwbmf3vphttRJzFITNh/S5NZM4wiMjMriGYC6GJzNwahmkjM/YwIjOzRsA0khl5HJGZVQPnPrYy4w4kMnPKff+eDU1kZtQJ5jiaVjJjDiUyM6qSOYammcyIY4nMfDrDzIUmMrPpAnMMTTuZ0UYTmbl0gzmCpqHMWMOJzEy6hzkvTWSOXYV0T52wJsxhmvqTJjLz6FHmEE1LmXEGFJlZ9ARzVplRRhSZOfQMc/mTJjIzqA3mEE35SROZGdQus5+mrcwIY4rM5dcBc+E0kbn4OmH200Tm3DyQOY6msUzzUUXm0uuD2UcTmXPzQGYeNJG58AZg9tC0lmk8rshceIMyO2kic2Ye65I5DHOpNBcj0w0X66mVGyOziyYyTbbC/WOoNcocBbOLprlM05FF5pIbCbODJjJNNgKZLY2WuUCayFxw42G200SmxTYg8zkfmW007WUaji0yF5yXzHloIhOZhaRMu8FF5oLzk9lCE5kGW4DMpzxhttBEpsEWIPMpb5lz0ETm2mQet865xt0+/WE+00Rm+BasXObeVbcfvb9f2RSZjzSFd+fIXET1faGO29usOQnmDDSRuSqZl7t2//92u7KJMh9oIjN4A1Yts74vbqOpMps0dXfnyFxCh03zrqPV7XKnymzQRGbw+iOz0elEfbLMZdBE5hJq2ZsHwGzQRGbo6q9a5vUMaO8u924OknlHE5mhq79umc9XjcJkRqWJzBXJPF9pP25vV9oDZd5oIjNw9Vcu83QS1Hx3MlTmlSYyA1d/7TIfC5YZjyYy1ywzHOaVJjLDVh+ZjSxk1jRFd+fIXGbInLg4ZEbORGYsmshEpglNZAatPTIbGcmsaCIzaO2R2chKZhSayWTWb5X1LQ6ZcTODWdFcvMzqbYi6l8/WhyBzngxlnmguXmb9a1LMmemzlPndLV/madYs37l9lvn4ub+LkDn6U4wFM5VpTjPJcWb5e6WZzJnuX0OtR6Z1Fpvo+z/s3Bsyk2d5BuTct2/uv6YlkXmaMf+JzNTZXTQ6sfxmLTPVVaPj1iEzcUZvTtYurWlypX29Mi1+PPPG0pomMpFpxNKYJjKROdXlI0tkItOogE/oaHVpShOZyDRjaUoTmci0Y2lJE5nI9HLZzxKZyLTI97YWI1za0UQmMi1ZmtG0GTZkZi7Tg6UVTWSuWeZImn4skYnM8EbI9JwuzWgiE5nWLG1oIhOZdntxQ5pGo4bM/GROni6RiUyDOmgGsjSgiUxkxmAZThOZyDQ8uDSkicyVy3ygaTRdIhOZwblILANpWg0aMhcv05xlGE1kItP44NKGptmYIXPJMqNMl8j0XDIyH4vHcjpNuyFD5oJlxoQ5kSYykVlI0kQmMgtFmYYjhkxkGtJEJjKr1GhaDhgykWlHE5nIrBObNJGJzDqtSfMyXh/1Z2Lf3Y59wqZZjM/z4pA5U1I0L5/P/hFE8rJl4YtoWxwyZyq6TA+arnxbqhwzZCJTTeY5ZCJTieZttJCJzEKI5p3M+gzoLWi7gkemdXHInC8RmneDxZyJzDJk+iwOmTMmQfN+rJCJzKr4ModpNoYKmcg8J0ATmchsK/n+vDlSl3PzL+8h2xQ2JF2LQ+a8JaYZY6CQicxgmlHGCZlZyExLE5nI7C7h/jzOMCEzE5npaEYaJWTmIjMVzViDhMxsZKahGW2MkInMEJnxhgiZ+chMQROZyBzT7DQjjhAyc5I5N82YA4TMrGTO+7uUUccHmXnJnJGmizs8yMxMZuTPe73RjD04yMxNZvxp080BE5kZypzjczXjD43fM+yccz+rf3n57F0cMpMWeY/uZoDpJ3P35b04bF4LZMoX9+YCcwyMz3Mct2/V16+/kClfRJrzDIvPsxw21Z68/AWkB5nu2uUbo3kMVz8QmX5Fu4XVTKPiP2ee+ng1mzNH80CmdzFozuXS9ziz9njYOGQuIHOa87n0Pzc/78+PW2QuIdu7/83pMv31TGRGzszmvC6Rmb1MK5uzjwUys5dpsVOfe8IskLkKmUXgxJnAJTLXInOyzbuL1DOvb5zFIVMw/516KpXV2sZZHDI187KZkGWBzJXJrN8NHrUPT7z1yFyVzPufVtBFWYXM7GXWn7NavXt3v0W9P0CTPmTmL7P6bOo/P8qfq13QFiFzJTKLfdBnU88fMtci87h9Tb0mXiFzLTJt7jgxX8hcjcyun/YWDZnI1AyZq5HJ3rz6E5kycQZ0vzhk6sRVo/vFIVOny5X2t9Qr4hcy85d59+7kgkJm9jIXGjKRqRkykakZMpGpGTKRqRkykakZMpGpGTKRqRkykakZMpGpGTKRqRkykakZMpGpGTKRqRkykakZMpGpGTKRqRkykakZMpGpGTKRqRkykakZMpGpGTKRqRkykakZMpGpGTKRqRkykakZMpGpGTKRqRkykakZMpGpGTKRqRkykakZMpGpGTKRqRkykakZMpGpGTKRqRkykakZMpGpmd/gH7fnux513vUVmWSU1+DvXH2HuL3ruFUcMskon8E/bq8edx13JEYmGeUz+IfN9d6F++b+3F17+kZny3kgpch4ziQyyvM4s540O48ziYzy22EdNue9HDMmxY5DKdIMmaQZMkkzZJJmyCTNkEmaIZM0QyZphkzSDJmkGTJJM2SSZsgkzZBJmiGTNEMmaYZM0gyZpBkySTNkkmbIJM2QSZohkzRDJmmGTNIMmaQZMkkzZJJmyCTNkEmaIZM0QyZphkzSDJmkGTJJM2SSZsgkzZBJmiGTNEMmaYZM0gyZpBkySTNkkmbIJM2QSZohkzRDJmmGTNIMmaQZMkkzZJJmyCTNkEmaIZM0QyZphkzSDJmkGTJJM2SSZsgkzZBJmiGTNEMmaYZM0gyZpBkySTNkkmbIJM2QSZohkzRDJmmGTNIMmaQZMkkzZJJmyCTNkEmaIZM0QyZphkzSDJmkGTJJM2SSZsgkzZBJmiGTNEMmaYZM0gyZpBkySTNkkmbIJM2QSZohkzRDJmmGTNLsbw0X3C7FTBBdAAAAAElFTkSuQmCC" />
Pada barplot karena rainbow di set =3 maka plot hanya memiliki 3 warna dan warna tersebut diulang kembali sesuai urutan. Penggunaan perbedaan warna yang lebih tepat yaitu untuk membedakan kategori data seperti pada pie chart.
main digunakan untuk memberi label pada judul utama paling atas
x1 <- rnorm(16,70,10)
x2 <- rnorm(16,80,10)
plot(x1,x2,main="Sebaran Nilai")sub digunakan untuk memberi label pada sub judul paling bawah
plot(x1,x2,main="Sebaran Nilai", sub="Plot antara nilai1 dan nilai2")xlab digunakan untuk memberi label sumbu x
plot(x1,x2,main="Sebaran Nilai", sub="Plot antara nilai1 dan nilai2",xlab="Nilai1")ylab digunakan untuk memberi label sumbu y
plot(x1,x2,main="Sebaran Nilai", sub="Plot antara nilai1 dan nilai2",xlab="Nilai1",ylab="Nilai2")Fungsi plot() akan menghapus grafik yang ada dan diganti dengan yang baru. Jika ingin menambahkan sesuatu pada grafik yang sudah ada, maka digunakan fungsi-fungsi: - points(x,y) : menambah tipe poin karakter
x <- 1:16
y <- rnorm(16,8,1)
xnew <- c(4,8,16)
ynew <- c(8,9,7)
plot(x,y,points(xnew,ynew,pch=19,col="blue"))lines(x,y) : menambah tipe garisplot(x,y,lines(x,y,col="blue"))abline (a,b), abline(h=y), abline(v=x) : menambahkan garis lurus berdasarkan fungsi y=a+bx, horisontal, dan vertikalpar(mfrow=c(2,2))
plot(x,y,abline(h=7))
plot(x,y,abline(v=14))plot(x,y,abline(4,0.5))
plot(x,y,abline(10,-0.5))segments(x1,y1,x2,y2) : menambahkan garis lurus dari titik (x1,y1) ke (x2,y2)arrows(x1,y1,x2,y2) : menambahkan garis dan panah dari titik (x1,y1) ke (x2,y2)par(mfrow=c(1,2))
plot(x,y,segments(4,7,12,9))
plot(x,y,arrows(4,7,12,9))poligons(x,y) : membuat poligonplot(x,y,polygon(x,y))text(x,y,teks) : menuliskan teks pada koordinat (x,y)mtext : menuliskan label pada judul dan garis sumbupar(mfrow=c(2,3))
plot(x,y,text(4.5,8.3,"ditandai"))
plot(x,y,mtext("label khusus",side=1))plot(x,y,mtext("label khusus",side=2))
plot(x,y,mtext("label khusus",side=3))plot(x,y,mtext("label khusus",side=4))Teladan untuk penggunaan mtext
f <- function(x) cumsum(x)
x <- 1:20
y <- f(x)
plot(x, y, xlab = "", ylab = "")
mtext("Plotting the expression", side = 3, line = 1)mtext(expression(y[i] == sum(x[j],j==1,i)), side = 3, line = -2.5)
mtext("The first variable", side= 1, line = 3)mtext("The second variable",side = 2, line = 3) Terdapat beberapa simbol dalam expression() sebagai teks:
axis digunakan untuk menambahkan titik-titik sumbu
x = 1:16
y = rnorm(16,7,1)
plot(x,y,type="n",axes=F)
axis(1, c(5,10,15,20))axis(2, c(5,6,7,8,9,10))box digunakan untuk membuat kotak axis
plot(x,y,type="n",axes=F)
axis(1, c(5,10,15,20))axis(2, c(5,6,7,8,9,10))
box()titledigunakan untuk menambahkan label untuk main, sub, xlab, ylab
plot(x,y,type="n",axes=F)
axis(1, c(5,10,15,20))axis(2, c(5,6,7,8,9,10))
box()title(main="Contoh plot", sub="Plot antara x dan y", xlab="Sumbu x", ylab="Sumbu y")Teladan:
plot(x,y,type="l",axes=F)
axis(1,c(1,3,7,10),c("Jan","Mar","Jul","Okt"))axis(2,seq(5,10,by=0.5))
box()abline(h=7)Berikut beberapa fungsi grafik yang sering digunakan
d <- round(rnorm(10,10,5))
e <- rep(c("A","B","C","D","E"),2)
par(mfrow=c(2,3))
barplot(d)
hist(d)boxplot(d)
pie(round(rnorm(5,10,5)), labels=e)qqplot(d,1:10)
qqnorm(d)Berikut beberapa fungsi grafik lainnya yang dapat digunakan
g <- matrix(c(1:16),nrow=4)
par(mfrow=c(2,2))
dotchart(d)
stars(g)image(g)pairs(g)Parameter-parameter dari grafik dapat disetting ulang melalui fungsi plot atau par(). Pilihan yang dikontrol oleh fungsi par() :
Terdapat 3 cara untuk menampilkan beberapa grafik dalam satu device
par() –> mfrow atau mfcolsplit.screen()layout()mfrow atau mfcol –> par(mfrow=c(2,2))mar untuk meningkatkan/menurunkan ruang sekeliling plotpar(mfrow=c(1,2))
plot(x,y,par(mar=c(4,4,4,4)))
plot(x,y,par(mar=c(2,2,2,2)))oma untuk meningkatkan/menurunkan ruang antara matriks plot
par(mfrow=c(2,2), oma=c(4,4,4,4))
plot(x,y)
plot(y,x)hist(x)
hist(y)ruang antar matriks plot di atas besar sehingga grafik ditampilkan berukuran kecil. Sementara untuk memperkecil ruang antar plot bisa dengan menurunkan nilai pada oma seperti berikut.
par(mfrow=c(2,2), oma=c(2,2,2,2))
plot(x,y)
plot(y,x)hist(x)
hist(y)par(mfrow=c(1,1)) mengembalikan ke layout defaultsplit.screensplit.screen() –> split.screen(c(2,2)) seperti par(mfrow=c(2,2))screen(i)close.screen(all=T) mengembalikan ke defaultx <- rnorm(10); y<- rnorm(10)
split.screen(c(2,2))[1] 1 2 3 4
screen(1)plot(x=1:10,x)
screen(2)plot(x=1:10,y)
screen(3)boxplot(x)
screen(4)boxplot(y)
close.screen(all=TRUE)Dengan fungsilayout()ukuran grafiknya lebih fleksibel (bervariasi) dibanding setting parameter atau fungsisplit.screen()`.Langkah pertama adalah membuat matriks rancangan dengan nilai integer positif (untuk area grafik) dan 0 untuk area kosong.
rancangan <- matrix(c(1,1,3,1,1,3,2,2,4,2,2,4), nrow=3)
obj <- layout(rancangan)
layout.show(obj)plot(x=1:10,x)
plot(x=1:10,y)boxplot(x,horizontal = TRUE)
boxplot(y,horizontal = TRUE)layout(1)Mahasiswa Statistika dan Sains Data IPB, annissa_nff@apps.ipb.ac.id↩︎