본문 바로가기
공부/IT-R프로그래밍

R프로그래밍 강좌 - [16]그래프 함수 활용, Plot의 종류, 통계분포 그래프 그리기, ggplot2

by 썸볼 2018. 1. 17.

1. 그래프 함수 활용 
(1) 기본적인 그래프 함수
1)고수준 그래프 함수
- 새로운 그래프를 시작한다. 그래픽스 창을 초기 생성 하거나 설정하고, 축적을 설정한다.
  이후 제목과 라벨 등 장식을 넣을 수 있다.
- 고수준 함수



2)저수준 그래프 함수

- 그래프 작성을 시작할 수 없다. 존재하는 그래프에 점, 선, 텍스트, 장식등을 더한다.
- 저수준 그래프



3) Plot()함수

plot(x,y,main=,sub=,xlab=,type=,axes="",col="", pch="")


- x: x축의 자료
- y: y축의 자료
- main : plot의 전체 제목
- sub : plot의 부 제목
- xlab : x축의 제목,  ylab: y축의 제목
- type : plot형태 결정
- axes : plot의 테두리 관련
- col : plot의 색

4) type의 종류
- p : 점
- l  : 선
- b : 점과 선
- o : 점을 선이 통과
- h : 수직선으로 된 Histogram
- s : 계단형 그래프
- S : 다른 계단형 그래프
- n : 그래프 없음

5) par()함수
- 그림을 조절하거나 그림창의 특성을 지정하기 위해 사용되는 함수이다.
- 선의굵기와 종류, 문자의 크기와 글꼴, 색깔도 지정 가능하고, 그림의 위치 지정도 가능하다.
- 보통 하나의 plot에 여러창으로 나누어 표시할 때 사용한다.

x<- c(2,5,6,5,7,9,11,5,7,9,13,15,17)

y<- c(1,2,3,4,5,6,7,8,9,10,11,12,13)
par(mfrow = c(2,4)) #2행4열의 그래프를 그릴수 있다.
plot(x,y, main="PLOT",sub = "type=p",xlab="x-lab",ylab="y-lab",type="p")
plot(x,y, main="PLOT",sub = "type=l",xlab="x-lab",ylab="y-lab",type="l")
plot(x,y, main="PLOT",sub = "type=b",xlab="x-lab",ylab="y-lab",type="b")
plot(x,y, main="PLOT",sub = "type=o",xlab="x-lab",ylab="y-lab",type="o")
plot(x,y, main="PLOT",sub = "type=h",xlab="x-lab",ylab="y-lab",type="h")
plot(x,y, main="PLOT",sub = "type=s",xlab="x-lab",ylab="y-lab",type="s")
plot(x,y, main="PLOT",sub = "type=S",xlab="x-lab",ylab="y-lab",type="S")
plot(x,y, main="PLOT",sub = "type=n",xlab="x-lab",ylab="y-lab",type="n")






(2) 그래프에 장식하기  

1) points()함수
- 그래프에 점을 그리는 함수

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

- pch="" : ""안에 내용이 바로 출력
- pch=숫자 : 숫자에 해당하는 형태가 출력
- cex=숫자 : 숫자가 클수록 큰 점이 출력



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

z<-c(3.5,1.5,2.3,3.4,6.6)
points(z,pch=1,cex=1)
points(z,pch=3,cex=1)
points(z,pch=4,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)




2) lines() 함수
- 선을 그리는 함수이다. 

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

- lty : 선의 유형
- col : 선의 색상
- lwd : 선의 너비나 두께





plot(x,y, ylim=c(0,20),type="n")

lines(c(2,6),c(20,20),lty=1)
lines(c(2,6),c(19,19),lty=2)
lines(c(2,6),c(18,18),lty=3)
lines(c(2,6),c(17,17),lty=4)
lines(c(2,6),c(16,16),lty=5)
lines(c(2,6),c(15,15),lty=6)

3) text() 함수
- 그래프안에 자신이 원하는 위치에 표시하고 싶은 글자를 입력하는데 사용한다.
- (9,10)지점에 Plotting 글자 넣는다.


plot(x,y, main="PLOT",sub = "type=p",xlab="x-lab",ylab="y-lab",type="p")
text(9,10, "Plotting", col="red")
?text

4) abline() 함수
- 직선을 그리며 그래프의 원점을 통과하는 수직선 및 수평선을 그리는데 사용한다.
- 그래프 생성함수 호출후 abline()를 호출한다.


plot(x,y, main="PLOT",sub = "type=p",xlab="x-lab",ylab="y-lab",type="p")
abline(h=6,v=9,lty=3) #x축 9, y축6

5) legend() 함수
- 그래프안에 범례, 즉 그래프의 내용을 해독할 수 있게 해주는 작은 박스나 라벨을 붙이는데 사용되는 함수이다.
- plot() 호출후 legend()를 호출한다.
- legend 유형
  점유형에 따른 범례 : legent(x,y,labels, pch=c(점유형1,점유형2, .....))

  선유형에 따른 범례 : legent(x,y,labels ,lty=c(선유형1,선유형2, .....))
  선두께에 따른 범례 : legent(x,y,labels, lwd=c(두께1,두께2, .....))
  색상에 따른 범례 : legent(x,y,labels, col=c(색상1,색상2, .....))

plot(x,y,type="n")
legend("center","(x,y)",pch=1,title="center")
legend("top","(x,y)",lty =1,title="top")
legend("left","(x,y)",lwd =10,title="left")
legend("right","(x,y)",col =,title="right")
legend("bottom","(x,y)",lty =1,title="bottom")



6) curve() 함수
- 곡선을 그릴때 사용합니다.
- 평균이 5, 표준편차 1인 정규분포에서 1000의 샘풀을 생성한다.


x<- rnorm(1000,mean=5, sd=1)
hist(x) #빈도로 표시
hist(x, freq=F) #밀도로 표시
 
curve(dnorm(x,mean=5,sd=1), add=T) # 평균5,표준편차1인 정규분포의 밀도함수 곡선을 그린다. add=T겹쳐그릴때 사용


 

2. Plot의 종류 
(1) box plot(상자그림) 
- 데이터의 세트를 빠르고 쉽게 시각적으로 요약해준다.
- 제1사분위수, 제2사분위수(중앙값), 제3사분위수를 나타낸다.
- 박스위아래의 수염은 이상치를 제외한 데이터 범위이다.


x<- c(2,5,6,5,7,9,11,5,7,9,13,15,17)

z<-c(3.5,1.5,2.3,3.4,6.9)
 
 
boxplot(x,z)
 


(2) 파이차트 
- 원형 차트를 사용하면 데이터를 파이의 슬라이스 또는 전체의 일부분으로 시각화 할 수 있다.
- 비율을 나타내기에 더욱 편리한 그래프이다.


z<-c(3.5,1.5,2.3,3.4,6.9)

 
pie(z)
 


(3) 막대그래프
- 간단한 막대그래프이다.
- 집단의 평균이나 합계를 막대그래프로 그릴 수 있다.


z<-c(3.5,1.5,2.3,3.4,6.9)
 
barplot(z)
 


(4) 히스토그램
- 도수분포를 그림으로 나타낸다.
- 보통 가로축이 계급, 세로축이 도수를 뜻하는 데 반대로 그리기도 한다.
- 계급끼리 서로 붙어있어야 한다.
- hist(x, freq=) freq=T:빈도출력(기본값), freq=F:밀도출력


x<- c(2,5,6,5,7,9,11,5,7,9,13,15,17)

 
hist(x)



---------------------------------------------------------------------------------
x<- c(2,5,6,5,7,9,11,5,7,9,13,15,17)

z<-c(3.5,1.5,2.3,3.4,6.9)
 
 
par(mfrow=c(1,4))
 
boxplot(x,z)
 
 
 
pie(z)
 
 
barplot(z)
 
hist(x)

-----------------------------------------------------------------------------------






3. ggplot2  

- ggplot2를 사용해야 하는이유
  ggplot2창시자 : 기본 그래픽 시스템은 그림을 그리기 위해 좋은 툴이지만, ggplot2는 데이터를 이해하는 데
                       좋은 시각화 툴이다.

(1) ggplot2의 시각화 
- ggplot2의 diamonds 데이터로 분포도 그래프 그리기
- 5만 4000여 개의 다이아몬드에 대한 가격을 포함한 10개의 속성정보를 담고 있다.

price(가격),carat(무게),cut(커팅의 가치), colour(다이아몬드 색상),clarity(깨끗함),x(길이),y(너비),z(깊이)
depth(깊이비율),table(가장넓은 부분의 너비 대비 다이아몬드 꼭대기의 너비<-비율로 추정됨)

library(ggplot2)

ggplot(data=diamonds, aes(x=carat,y=price,colour=clarity)) + geom_point()


(2) 회귀곡선 그리기 +goem_smooth()


ggplot(data=diamonds, aes(x=carat,y=price,colour=clarity)) + 
  geom_point() +
  geom_smooth()
 



(3) 회귀곡선 Group 매핑요소

- 전체데이터를 하나의 곡선으로 표시 하고자 할때 

ggplot(data=diamonds, aes(x=carat,y=price)) + geom_smooth()



- 회귀곡석을 각 데이터 그룹별로 나누어 표시하고자 할때 
ggplot(data=diamonds, aes(x=carat,y=price,group=clarity)) + geom_smooth()



(4) bar plot 그리기


 1) 그래프 색 변경

-stat_bin은 연속적인 x 데이터에만 적합합니다.(계급구간지정)

ggplot(data=diamonds, aes(x=price)) + geom_bar()
 

 
ggplot(data=diamonds, aes(x=price)) + stat_bin(geom="bar",fill="gold",col="white")
 
 



2) 누적 히스토그램 그리기

ggplot(data=diamonds, aes(x=clarity,fill=cut)) + geom_bar()



댓글