Terdapat beberapa package yang bisa digunakan untuk melakukan visualisasi data. Package standar grafik adalah graphics, tetapi terdapat beberapa package graphics lain seperti: lattice, grid, dan ggplot2

1. Grafik Dasar

Package yang akan digunakan dalam Pemrograman Grafik adalah package standar untuk grafik adalah graphics.

Pacakge graphics dalah package dasar dalam R. Sehingga tanpa dilakukan pemanggilan pacakge, fungsi di dalam R sudah bisa digunakan.

library(graphics)

Fungsi plot

Akan dibuat beberapa bentuk plot menggunakan fungsi plot() berdasarkan data vektor di bawah :

usia=c(23,33,21,54,31,37,30,38,44,28,45,21,46,44,30,25)
gaji=c(4,10,3.5,30,15,15,28,18,25,6,9,22,30,10,9,10)

Terdapat beberapa tipe plot yaitu :

  • Tipe Plot titik

Dapat digunakan dengan menambahkan type=“p” (point). Tipe ini merupakan tipe default dari plot()

plot(usia,gaji,type="p")

Selanjutnya dapat dirubah bentuk titiknya menjadi karakter/simbol seperi *,^, atau # dengan pch dan mengatur ketabalan karakternya dengan cex :

plot(usia,gaji,type="p",pch="*",cex=3) 

  • Tipe Plot Overplotted

Dapat digunakan dengan menambahkan type=“o” (overplotted)

plot(usia,gaji,type="o")

  • Tipe plot garis

Dapat digunakan dengan menambahkan type=“l” (line)

plot(usia,gaji,type="l",lwd=5) 

#lwd untuk ketebalan garis, hanya khusus untuk garis
plot(usia,gaji,type="l",lwd=1,lty=3) 

#lty untuk tipe garis

Akan dibuat plot sin(X) sebagai berikut

plot(sin,-pi, 2*pi)

Grafik Fungsi Distribusi Diskret

Selanjutnya tipe grafik untuk ds=istribusi diskret seperti Poisson adalah seperti di bawah. Dengan cara membangkitkan data berdistribusi Poisson (rpois) dan memasukkan paramternya, maka diperoleh grafik berikut

plot(table(rpois(50,10)),type="h",col="red",
lwd=1,main="rpois(100,lambda=5)")

Kombinasi Kurva Distribusi Normal

Akan dibuat berbagai perbandingan kurva dengan mean dan standar deviasai yang beragam.Terlihat bahwa semakin kecil standar deviasi, maka semakin ramping kurvanya.

x<-seq(-5,5,by=0.1) 
plot(x, dnorm(x, sd=1), type="l",ylab="", main=expression(paste("plot distribusi normal dengan bermacam ",mu," dan  ",sigma^2)))
lines(x,dnorm(x,sd=2,mean=0),lty=2,col="yellow",lwd=3)
lines(x,dnorm(x,sd=3,mean=0),lty=4,col="red",lwd=3)
lines(x,dnorm(x,sd=1,mean=-3),lty=3,col="green",lwd=3)
lines(x,dnorm(x,sd=1,mean=3),lty=3,col="blue",lwd=3)
abline(v=0)
legend("bottomleft", col=c("black","yellow","red","green","blue"),lty=c(1,2,4,3,3),lwd=c(1,3,3,3,3),
       c(expression(paste(mu,"=0 & ",sigma,"=1")), 
         expression(paste(mu,"=0 & ",sigma,"=2")),
         expression(paste(mu,"=0 & ",sigma,"=3")), 
         expression(paste(mu,"=-3 & ",sigma,"=1")),
         expression(paste(mu,"=3 & ",sigma,"=1"))))

Kombinasi Grafik Membentuk Sebuah Emoticon

Beberapa fungsi tambahan pada plot, dapat digunakan sebagai pelangkap plot itu sendiri. Pada contoh di bawah akan ditambahkan fungsi garis (lines) dan lingkaran (polygon).

xframe=c(0,50,50,0,0)
yframe=c(0,0,50,50,0)
plot(xframe,yframe,type="l",main="Emoticon_Smile",xlab="",ylab="")
polygon(xframe,yframe)

x1=c(0,50,50,0,0)
y1=c(25,25,50,50,25)
lines(x1,y1,col="black")
polygon(x1,y1,col="black")

x4=c(0,50,50,0,0)
y4=c(0,0,25,25,0)
lines(x4,y4,col="maroon")
polygon(x4,y4,col="maroon")

t=seq(0,2*pi,0.001)
xling=25+15*cos(t)
yling=25+15*sin(t)
polygon(xling,yling,col="yellow")
lines(xling,yling,col="yellow")

t=seq(0,2*pi,0.001)
xmata=20+3*cos(t)
ymata=30+3*sin(t)
lines(xmata,ymata,lwd=2)
polygon(xmata,ymata,col="white")

t=seq(0,2*pi,0.001)
xmata2=30+3*cos(t)
ymata2=30+3*sin(t)
lines(xmata2,ymata2,lwd=2)
polygon(xmata2,ymata2,col="white")

t=seq(0,2*pi,0.001)
xmata3=20+2*cos(t)
ymata3=30+2*sin(t)
lines(xmata3,ymata3)
polygon(xmata3,ymata3,col="black")

t=seq(0,2*pi,0.001)
xmata4=30+2*cos(t)
ymata4=30+2*sin(t)
lines(xmata4,ymata4)
polygon(xmata4,ymata4,col="black")

xhidung=c(24,26)
yhidung=c(22,22)
lines(xhidung,yhidung,lwd=4)

xhidung2=c(26,25)
yhidung2=c(22,24)
lines(xhidung2,yhidung2,lwd=4)

t=seq(-pi,0,0.001)
xmulut=25+5*cos(t)
ymulut=19+5*sin(t)
lines(xmulut,ymulut,lwd=3)

t=seq(-pi,0,0.001)
xmulut2=25+5*cos(t)
ymulut2=18+5*sin(t)
lines(xmulut2,ymulut2,lwd=3)


xmulut3=c(20,30)
ymulut3=c(19,19)
lines(xmulut3,ymulut3,type="l",lwd=3)

t=seq(0,2*pi,0.001)
xpipi=16+3*cos(t)
ypipi=24+3*sin(t)
polygon(xpipi,ypipi,col="maroon")
lines(xpipi,ypipi,col="maroon")

t=seq(0,2*pi,0.001)
xpipi2=34+3*cos(t)
ypipi2=24+3*sin(t)
polygon(xpipi2,ypipi2,col="maroon")
lines(xpipi2,ypipi2,col="maroon")

xkaca1=c(12,17)
ykaca1=c(32,30)
lines(xkaca1,ykaca1,lwd=3)

xkaca2=c(23,27)
ykaca2=c(29.5,29.5)
lines(xkaca2,ykaca2,lwd=3)

xkaca2.5=c(23,27)
ykaca2.5=c(29.75,29.75)
lines(xkaca2.5,ykaca2.5,lwd=3)

xkaca3=c(33,38)
ykaca3=c(30,32)
lines(xkaca3,ykaca3,lwd=3)

z=seq(-1,1,0.009)
x=32+(13*sin(z)*cos(z)*log(abs(z)))
y=33+(13*sqrt(abs(z))*cos(z))
polygon(x,y,col="red")
lines(x,y,type="l",col="red")

Membuat Beberapa Grafik dalam Satu Jendela

Untuk membuat beberapa plot dalam satu jendela (window), maka dapat dilakukan dengan menambahkan fungsi mfrow dan memberi informasi berapa jumlah baris dan kolom yang akan dibentuk. Seprti contoh di bawah akan dibat kombinasi 4 plot (2 baris dan 2 kolom).

jendela <- par(mfrow=c(2,2))
hist(gaji)
boxplot(usia)
title("Boxplot Usia")
boxplot(gaji)
title("Boxplot Gaji")
hist(usia)

par(jendela)

2. Pengolah Objek

Operasi aljabar sederhana vektor numerik dapat dilakukan dengan menggunakan karakter sebagai berikut : + : penjumlahan - : pengurangan * : perkalian / : pembagian ^ : pangkat %*% : perkalian (vektor/matriks) setara perkalian antara X’X dll

Vektor Numerik

Seperti pada operasi biasa, akan diberi contoh operasi penjumlahan secara simultan dan perkalian :

x1 <- c(seq(2,11,by=1))
x2 <- x1 + 1:2
x3 <- x1*x2
x2
##  [1]  3  5  5  7  7  9  9 11 11 13
x3
##  [1]   6  15  20  35  42  63  72  99 110 143

Vektor Karakter

Apabila ingin mencari tahu isi karakter, maka dapat dilakukan dengan fungsi substring()

nama <- c("Hanifa Izzati")
nama1 <- substring(nama,5,8)
nama2=nchar(nama)
nama1
## [1] "fa I"
nama2
## [1] 13

Objek Matriks

Dengan terlebih dahulu memasukkan data matriks, maka dapat dilakukan perkalian antar matriks :

m1 <- matrix(1:6,2,3)
m2 <- matrix(11:16,3,2,byrow=T)
m3 <- m1 %*% m2

Apabila ingin mencari nilai invers, maka dapat dilakukan dengan fungsi solve()

inv.m3 <- solve(m3)
inv.m3
##           [,1]      [,2]
## [1,]  7.333333 -5.583333
## [2,] -6.833333  5.208333

Jika ingin mencari nilai eigen, maka dapat dilakukan dengan fungsi eigen() dan vektro eigen adalah :

e.m3 <- eigen(m3) 
e.m3$values 
## [1] 300.92024465   0.07975535
e.m3[[2]] 
##            [,1]       [,2]
## [1,] -0.6059446 -0.7314538
## [2,] -0.7955069  0.6818910

3. Struktur Kendali

Terdapat beberapa instruksi

Perulangan “For”

anakayam1=function(n)
{
for (i in n:1)
{
cat ("anaka ayam turun",i,"mati satu tinggal",i-1,"\n")
}
}

anakayam1(5)
## anaka ayam turun 5 mati satu tinggal 4 
## anaka ayam turun 4 mati satu tinggal 3 
## anaka ayam turun 3 mati satu tinggal 2 
## anaka ayam turun 2 mati satu tinggal 1 
## anaka ayam turun 1 mati satu tinggal 0

Perulangan “Repeat dan Break”

anakayam2=function(n)
{
repeat
{
cat("anak ayam turun",n,"mati satu tinggal",n-1,"\n")
n=n-1
if(n==0)break
}
}

anakayam2(5)
## anak ayam turun 5 mati satu tinggal 4 
## anak ayam turun 4 mati satu tinggal 3 
## anak ayam turun 3 mati satu tinggal 2 
## anak ayam turun 2 mati satu tinggal 1 
## anak ayam turun 1 mati satu tinggal 0

Perulangan “While”

anakayam3=function(n)
{
while(n>0)
{
cat("anak ayam turun",n,"mati satu tinggal",n-1,"\n")
n=n-1
}
}

anakayam3(5)
## anak ayam turun 5 mati satu tinggal 4 
## anak ayam turun 4 mati satu tinggal 3 
## anak ayam turun 3 mati satu tinggal 2 
## anak ayam turun 2 mati satu tinggal 1 
## anak ayam turun 1 mati satu tinggal 0

Perulangan “If dan Else”

anakayam1=function(n)
{
for (i in n:1)
{
if(i>1)
{
cat ("anak ayam turun",i,", mati satu tinggal",i-1,"\n")
}
else if(i==1)
{
cat ("anak ayam turun",i,", mati satu anak ayam sudah tidak ada \n")
}
}
}

anakayam3(1)
## anak ayam turun 1 mati satu tinggal 0