IT기술/BigData

R 그래프 함수 활용하기

dobbby 2014. 2. 18. 15:55
반응형

학습개요

그래프는  데이터를  시각적으로  보여주는데  중요한  역할을  한다.  

R프로그램에서  그래프  함수를  잘 활용하면  데이터를  보다  명료하고  해석이  용이하게  할  수  있다.  

이번  장은  R프로그램에서  활용할 수  있는  그래프  함수에  대해서  알아본다.


학습목표

1. PLOT  함수에  대해서  알아보자.

2. PLOT  함수  옵션에  대해서  알아보자.

3. R에서  제공하는  PLOT  종류에  대해서  알아보자.

4.  그래프에  유용한  함수들을  알아보자.

5.  통계분포  함수를  이용하여  그래프를  그려보자


주요용어

Plot, Points, Lines,  분포


1.  그래프  함수  활용

도입

그래프라는  개념이  없었다면  어떻게  되었을까?  간단한  자료는  쉽게  파악할  수  있지만  복잡한  자료는  그렇지  못할  것이다.  

머릿속으로  복잡한  자료의  구조나  형태를  파악하려면  머리가  몇  분도 안되서  아파  올  것이다.  

R프로그램은  그래픽이  매우  뛰어난  프로그램  언어이다.  

그러므로  우리는 R프로그램을  활용해  복잡한  통계데이터를  그래프화  할  수  있을  것이다.


(1)  기본적인  그래프  함수

• Plot()  함수

>plot(x,y,main=,sub=,xlab =, ylab=, type=,axes=“”,col=“”,pch=“”)

∙ x : X축의  자료, y: Y축의  자료

∙main : plot의  전체  제목 

∙sub : plot의  부  제목

∙xlab : x축  제목, ylab: y축의  제목.

∙type : plot의  형태를  결정.

∙axes : plot의  테두리  관련

∙col : plot의  색


예) 

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>plot(x, y, main="PLOT", sub="Test", xlab="number", ylab="value") 





• type의  종류

∙ "p" :  점

∙ "l" :  선

∙ "b" :  점과  선  ⇒ "c" :  “b"에서  점  제외.

∙ "o" :  점을  선이  통과

∙ "h" :  수직선으로  된  “histogram"

∙ "s" :  계단형  그래프

∙ "S" :  다른  계단형  그래프

∙ "n" :  그래프  없음


>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="p") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="l") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="b") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="c") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="o") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="h") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="s") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="S") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="n") 




• points()  함수

점을  그리는  함수.

>points(x, y, pch= , cex= )

tip1) pch=" " : " "  안에  내용이  바로  출력

pch=숫자  :  숫자에  해당되는  형태  출력

cex=숫자  :  숫자

가  클수록  큰  점

이  출력


예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>z<-c(3.5, 2.2, 1.5, 4.6, 6.9)

>a<-c(1,9,13) 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="n") 

>points(z, pch=1, cex=1)

>points(z, pch=3, cex=1)

>points(z, pch=5, cex=1)

>points(z, pch=7, cex=1)

>points(z, pch=9, cex=1)

>points(z, pch=11, cex=1)

>points(z, pch=13, cex=1)

>points(z, pch=15, cex=1)

>points(z, pch=17, cex=1)

>points(z, pch=19, cex=1)



• lines()  함수

선을  그리는  함수.

>lines(x, lty=, col=, pch= , lwd= )

lwd  =  숫자  :  숫자가  클수록

굵은  선이  출력된다.


예) lty

>plot(0:6,0:6,type="n", 

ylim=c(0,20)) 

>lines(c(1,3),c(20,20), lty=1)

>lines(c(1,3),c(19,19), lty=2)

>lines(c(1,3),c(18,18), lty=3)

>lines(c(1,3),c(17,17), lty=4)

>lines(c(1,3),c(16,16), lty=5)

>lines(c(1,3),c(15,15), lty=6)

>lines(c(1,3),c(14,14), lty="blank")

>lines(c(1,3),c(13,13), lty="solid")

>lines(c(1,3),c(12,12), lty="dashed")

>lines(c(1,3),c(11,11), lty="dotted")

>lines(c(1,3),c(10,10), lty="dotdash")

>lines(c(1,3),c(9,9), lty="longdash")

>lines(c(1,3),c(8,8), lty="twodash") 




>lines(c(1,3),c(7,7), lty="33")

>lines(c(1,3),c(6,6), lty="24")

>lines(c(1,3),c(5,5), lty="F2")

>lines(c(1,3),c(4,4), lty="2F")

>lines(c(1,3),c(3,3), lty="3313")

>lines(c(1,3),c(2,2), lty="F252")

>lines(c(1,3),c(1,1), lty="FF29")



(2) Plot  그릴  때  유용한  함수

• par()  함수

∙그림을  조절하거나  그림창의  특성을  지정하기  위해서  사용

∙선의  굵기와  종류,  문자의  크기와  글꼴,  색깔도  지정  가능

∙그림의  위치  지정  가능

∙한  plot을  여러  창으로  나눌  때  사용

help(par)  또는  ?par를  입력하면  par()  함수에  대한  더  많은  내용을  알  수  있다.


예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>par(mfrow=c(2,5))

→ 2행  5열의  그래프를  그릴  수  있다.

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="p") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="l") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="b") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="c") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="o") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="h") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="s") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="S") 

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="n") 





예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>par(bg="orange")

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="p") 

→그래프  뒷  배경의  색이  오렌지  색으로  바뀐다.



• text()  함수

그래프  안에  글자를  넣는다.

예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="p") 

>text(3,5,"Plotting",col="red")

→(3, 5)지점에  "Plotting"  이라는  글자를  넣는다.




• abline()  함수

그래프  안에  새로운  수직선을  넣는다.

예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="p") 

>abline(h=3, v=4, lty=3)

→ x축  4, y축  3을  통과하는  수직선이  그려진다.



• axis()  함수

그래프  상,하,좌,우  축을  넣는다.

예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>plot(x, y, main="PLOT", sub="Test", xlab="x-label", ylab="y-label", type="n") 

>points(x,y,col="red")

>abline(h=3, v=4, lty=3)

>axis(2, at = 3, label="3")

→  왼쪽  축에  3을  출력한다.

>text(4.5, 3.5, "(4, 3)", col="blue")

→ (4, 3)을  화면에  출력한다. 




• legend()  함수

범례를  그래프  안에  넣어주는  함수.

예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>plot(x, y, type='n')

>legend("bottomright", "(x,y)", pch=1, title="bottomright")

>legend("bottom", "(x,y)", pch=1, title="bottom")

>legend("bottomleft", "(x,y)", pch=1, title="bottomleft")

>legend("left", "(x,y)", pch=1, title="left")

>legend("topleft", "(x,y)", pch=1, title="topleft, inset = .05", inset = .05)

>legend("top", "(x,y)", pch=1, title="top")

>legend("topright", "(x,y)", pch=1, title="topright, inset = .02", inset = .02)

>legend("right", "(x,y)", pch=1, title="right")

>legend("center", "(x,y)", pch=1, title="center")

>legend(8,4,"Legend(범례)“)

→ (8, 3)  지점에  범례를  위치시킨다. 




예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>plot(x, y, type='n')

>legend(locator(1),"Legend(범례)“)

→ locator(1) :  마우스로  그래프  위에  원하는  곳에  찍으면  그곳에  범례가  출력됨.


• box()  함수

그래프  안과  밖에  박스를  그리는  함수.

예)

>par(mar=c(4,4,4,4))

>par(oma=c(4,4,4,4))

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>plot(x, y, type="p",axes=F)

>s<-c("outer", "inner", "plot", "figure")

→outer:그래픽상자의  바깥쪽, inner:outer  주변의  안쪽, plot:plot  영역의  테두리

figure:figure  영역의  테두리

>box(which=s[1], lty=1) 

>box(which=s[2], lty=2)

>box(which=s[3], lty=3)

>box(which=s[4], lty=4)




• curve()  함수

곡선  그리기  함수


예)

>x<- rnorm(100, mean=5, sd=1)

→  평균이  5이고  표준편차가  1인  정규분포에서  100의  샘플을  생성한다.

>hist(x) 

>hist(x, freq=F)

→ freq=F :  빈도가  아닌  밀도로  표시

>curve(dnorm(x, mean=5, sd=1), add=T)

→  평균이  5이고  표준편차가  1인  정규분포의  밀도  함수  곡선을  그린다.

add=T :  겹쳐  그림.




• layout()  함수

예)

>x <- pmin(3, pmax(-3, rnorm(50)))

>y <- pmin(3, pmax(-3, rnorm(50)))

>xhist <- hist(x, breaks=seq(-3,3,0.5), plot=FALSE)

>yhist <- hist(y, breaks=seq(-3,3,0.5), plot=FALSE)

>top <- max(c(xhist$counts, yhist$counts))

>xrange <- c(-3,3)

>yrange <- c(-3,3)

>nf <- layout(matrix(c(2,0,1,3),2,2,byrow=TRUE), c(3,1), c(1,3), TRUE)

>layout.show(nf)

>par(mar=c(3,3,1,1))

>plot(x, y, xlim=xrange, ylim=yrange, xlab="", ylab="")

>par(mar=c(0,3,1,1))

>barplot(xhist$counts, axes=FALSE, ylim=c(0, top), space=0)

>par(mar=c(3,0,1,1))

>barplot(yhist$counts, axes=FALSE, xlim=c(0, top), space=0, horiz=TRUE)




(3) Plot의  종류(1)

• box plot(상자그림)

예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>z<-c(3.5, 2.2, 1.5, 4.6, 6.9)

>boxplot(x,z)




•  파이차트

예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>pie(x)





• Bar plot

예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>barplot(x)





•  히스토그램

hist(x, freq=)

freq=T :  빈도  출력(기본  값) , freq=F :  밀도  출력

예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>hist(x) 





(4) Plot의  종류(2)

• pairs()함수

많은  변수들의  그래프를  한  화면에  출력한다.

예)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>a<-data.frame(x,y)

>pairs(a) 





• parcoord()함수

각  변수들의  값을  연결한  선들의  그래프를  출력한다.

예)

>library(MASS)

>x<-c(2,5,8,5,7,10,11,3,4,7,12,15)

>y<-c(1,2,3,4,5,6,7,8,9,10,11,12)

>z<-c(4,7,5,2,4,8,9,10,12,4,6,8)

>a<-data.frame(x,y,z)

>parcoord(a)




5)  통계분포  그래프  그리기

•  분포의  종류

확률분포  확률분포의  이름  모수

베타분포  beta  shape1, shape2, ncp

이항분포  binom  size, prob

코쉬분포  cauchy  location, scale

카이제곱분포  chisq  df, ncp

지수분포  exp  rate

F-분포  f  df1, df2, ncp

감마분포  gamma  shape, scale

기하분포  geom  prob 

초기하분포  hyper  m, n, k

로그-정규분포  lnorm  meanlog, sdlog

로지스틱분포  logis  location, scale

음이항분포  nbinom  size, prob

정규분포  norm  mean, sd

포아송분포  pois  lambda

t-분포  t  df, ncp

일양분포  unif  min, max

와이블분포  weibull  shape, scale

윌콕슨분포  wilcox  m, n


r함수명  :  분포함수의  샘플  추출

예) > x<-rnorm(100, mean=4, sd=2) 

→  평균이  4이고  표준편차가  2인  정규분포에서  샘플  100개를  추출. 

d함수명  :  분포함수의  밀도함수  값

예) > dnorm(x, mean=4, sd=2)

→  평균이  4이고  표준편차가  2인  정규분포의  밀도  함수  값을  나타냄.

p함수명  : quantile값에  해당하는  확률값

예) > pnorm(2, mean=4, sd=2)

→  평균이  4이고  표준편차가  2인  정규분포에서  2인  지점의  확률  값을  나타냄

q함수명  :  확률값에  해당하는  quantile값

예) > qnorm(0.5, mean=4, sd=2)

→  평균이  4이고  표준편차가  2인  정규분포에서  확률이  0.5가  되는  지점을  나타냄.


•  정규분포

예)

>x<-rnorm(1000, mean=5, sd=1)

→  평균이  5이고  표준편차가  1인  정규분포  샘플  1000개를  생성한다.

>hist(x, freq=F)

→ freq=F :  빈도가  아닌  밀도로  히스토그램을  그린다. (기본값은  T)

>curve(dnorm(x,mean=5, sd=1),add=T)

→ add=T :  이미  열린  그림판위에  곡선  그림을  겹쳐그린다. (기본값은  F)


•  지수분포

예)

>x<-rexp(1000, rate=1)

→  평균이  1인  지수분포  샘플  1000개를  생성한다.

>hist(x, freq=F)

→ freq=F :  빈도가  아닌  밀도로  히스토그램을  그린다. (기본값은  T)

>curve(dexp(x, rate=1),add=T)

→ add=T :  이미  열린  그림판위에  곡선  그림을  겹쳐그린다. (기본값은  F)


•  베타분포

예)

>x<-rbeta(1000, shape1=0.5, shape2=0.2, ncp=5)

→ shape모수1이  0.5,shape모수2=0.5, ncp=5인  베타분포  샘플  1000개를  생성한다.

>hist(x, freq=F)

→ freq=F :  빈도가  아닌  밀도로  히스토그램을  그린다. (기본값은  T)

>curve(dbeta(x,shape1=0.5, shape2=0.2, ncp=5),add=T)

→ add=T :  이미  열린  그림판위에  곡선  그림을  겹쳐그린다. (기본값은  F)


•  감마분포

예)

>x<-rgamma(1000, shape=2, scale=1)

→ shpae모수가  2, scale  모수가  1인  감마분포  샘플  1000개를  생성한다.

>hist(x, freq=F)

→ freq=F :  빈도가  아닌  밀도로  히스토그램을  그린다. (기본값은  T)

>curve(dgamma(x, shape=2, scale=1),add=T)

→ add=T :  이미  열린  그림판위에  곡선  그림을  겹쳐그린다. (기본값은  F)




그래프  함수  :  그래프는  데이터를  시각적으로  보여주는데  중요한  역할을  한다.  R프로그램에서  그

래프  함수를  잘  활용하면  데이터를  보다  명료하고  해석이  용이하게  할  수  있다.


1.  기본적인  그래프  함수

(1) plot()  함수  :  기본적인  그래프  함수

(2) points()  함수  :  점을  그리는  함수

(3) lines()  함수  :  선을  그리는  함수


2. Plot을  그릴때  유용한  함수

(1) par()  함수

그림을  조절하거나  그림창의  특성을  지정하기  위해서  사용.

선의  굵기와  종류,  문자의  크기와  글꼴,  색깔도  지정  가능.

그림의  위치  지정  가능.

한  plot을  여러  창으로  나눌  때  사용. 

(2) text()  함수  :  그래프  안에  글자를  넣는  함수.

(3) abline()  함수  :  그래프  안에  새로운  직선을  넣는  함수.

(4) axis()  함수  :  그래프의  상,  하,  좌,  우  축을  넣는  함수.

(5) legend()  함수  :  그래프  안에  범례를  넣는  함수. 

(6) box()  함수  :  그래프  안과  밖의  박스를  넣는  함수.

(7) curve()  함수  :  그래프위에  곡선을  넣는  함수.

(8) layout()  함수  :  그래프  외곽에  주변  그래프를  넣는  함수. 


3. Plot의  종류

(1) boxplot()  함수  : Box plot을  그리는  함수.

(2) pie()  함수  :  원  그래프를  그리는  함수.

(3) barplot()  함수  : Bar  모양의  그래프를  그리는  함수.

(4) hist()  함수  :  히스토  그램을  그리는  함수.

(5) pairs()  함수  :  많은  변수들의  매트릭스  plot을  그리는  함수.

(6) parcoord()  함수  :  각  변수들의  값을  연결한  선들의  그리는  함수. 


4.  통계  분포  함수

(1) r분포함수명() :  통계  분포의  샘플을  추출하는  함수.

(2) d분포함수명() :  통계  분포의  밀도  함수  값을  출력하는  함수.

(3) p분포함수명() : Quantile  값에  해당하는  확률  값을  출력하는함수.

(4) q분포함수명() :  확률값에  해당하는  quantile값을  출력하는  함수. 




반응형