데이터분석 전문가(ADP)를 위한 R프로그래밍 시각화편3

1. multiple axis??

 

데이터 생성

 

> time <- seq(7000,3400,-200)
> pop <- c(200,400,450,500,300,100,400,700,830,1200,400,350,200,700,370,800,200,100,120)
> grp <- c(2,5,8,3,2,2,4,7,9,4,4,2,2,7,5,12,5,4,4)
> med <- c(1.2,1.3,1.2,0.9,2.1,1.4,2.9,3.4,2.1,1.1,1.2,1.5,1.2,0.9,0.5,3.3,2.2,1.1,1.2)
> par(mar=c(5,12,4,4)+0.1)

 

첫번째 그래프 생성하기

 

축을 지정하지 않은 첫 번째 그래프 생성

 

plot(time,pop,axes=F, xlim=c(7000,3400), ylim=c(0,max(pop)), xlab='', ylab='',type='l',col='black',main='')

 

 

그래프에 점 추가

 

points()함수로 (time,pop)에 해당하는 위치에 20 크기로 점을 찍는다

 

points(time,pop,pch=20,col='black')

 

 

 

 

그래프에 y축 추가

 

axis()함수로 pop에 해당하는 y축을 추가

 

axis(2,ylim=c(0,max(pop)),col='black',lwd=2)

 

 

y축에 이름을 추가

 

mtext()함수를 사용하여 y축의 이름에 해당하는 pop === population 이름을 붙여준다

 

mtext(2,text='Population',line=2)

 

 

두번째 그래프 추가

 

par(), plot()함수를 사용하여 time,med에 해당하는 두번째 그래프를 생성

 

par(new=T)

plot(time,med,axes=F, xlim=c(7000,3400), ylim=c(0,max(med)), xlab='', ylab='', type='l', lty=2, lwd=2, col='black', main='')

 

 

두번째 그래프에 점 추가

 

points()함수를 사용하여 (time,med)에 해당하는 부분에 점을 찍는다

 

> points(time,med,pch=20, col='black')

 

두번째 그래프에 y축을 생성

 

axis()함수를 이용하여 med에 해당하는 y축을 생성

 

axis(2,ylim=c(0,max(med)), col='black',lwd=2,line=3.5)

 

 

두번째 그래프의 y축에 이름 지정

 

mtext()함수를 사용하여 두번째 그래프의 y축에 med == median group size라고 이름을 붙여준다

 

mtext(2,text='Median Group Size', line=5.5)

 

 

 

세번째 그래프 추가

 

par(), plot()함수를 사용하여 (time, grp)에 해당하는 세번째 그래프 추가

> par(new=T)
> plot(time,grp, axes=F, xlim=c(7000,3400), ylim=c(0,max(grp)), xlab='', ylab='', type='l', lty=3, lwd=2, col='black', main='')

 

 

세번째 그래프의 y축을 생성

 

grp에 해당하는 축을 axis()를 이용하여 그린다

 

> axis(2, ylim=c(0,max(grp)),col='black', lwd=2, line=7)

 

 

 

세번째 그래프에 점을 추가

 

points()함수를 사용하여 (time,grp)에 해당하는 부분에 점을 찍는다

 

> points(time,grp,pch=20,col='black')

 

 

 

세번째 y축에 이름을 지정

 

mtext()함수를 활용하여 grp== number of groups에 해당하는 이름을 붙여준다

 

mtext(2,text='Number of Groups', line=9)

 

 

x축 생성

 

전체 그래프의 공통된 x축에 해당하는 time의 x축을 axis를 이용하여 생성

 

mtext()를 이용하여 cal BP라고 이름도 붙여준다

 

axis(1,pretty(range(time),10))

mtext(side=1, text='cal BP', col='black', line=2)

 

 

범례 추가

 

legend()함수를 사용하여 선 그래프별로 무슨 그래프인지 설명을 추가하여 이해하기 쉽도록

 

legend(x=7000, y=12, legend=c('Population', 'Median Group Size', 'Number of Groups'), lty=c(1,2,3))

 

 

 

2. 줄기 잎그림

 

aplpack 패키지에서 줄기 잎 그림, 체르노프 페이스, 스타차트 등을 지원함

 

> install.packages('aplpack')
> library(aplpack)

> score <- c(1,2,3,4,10,2,30,42,31,50,80,76,90,87,21,43,65,76,32,12,34,54)

> score
 [1]  1  2  3  4 10  2 30 42 31 50 80 76 90 87 21 43 65 76 32 12 34 54
 
> stem.leaf(score)
1 | 2: represents 12
 leaf unit: 1
            n: 22
   5    0 | 12234
   7    1 | 02
   8    2 | 1
  (4)   3 | 0124
  10    4 | 23
   8    5 | 04
   6    6 | 5
   5    7 | 66
   3    8 | 07
   1    9 | 0

n=22는 전체 데이터 개수

 

누적개수 줄기 | 잎으로 구성

 

(4)로 된 부분은 중앙값이 존재하는 위치

 

누적개수는 처음부터 중앙값쪽 5,7,8.......

 

맨 마지막부터 중앙값쪽으로 1,3,5,6,8,10........

 

 

3.체르노프 페이스

 

faces()함수를 이용

 

> data(WorldPhones)
> head(WorldPhones)
     N.Amer Europe Asia S.Amer Oceania Africa Mid.Amer
1951  45939  21574 2876   1815    1646     89      555
1956  60423  29990 4708   2568    2366   1411      733
1957  64721  32510 5230   2695    2526   1546      773
1958  68484  35218 6662   2845    2691   1663      836
1959  71799  37598 6856   3000    2868   1769      911
1960  76036  40341 8220   3145    3054   1905     1008

> faces(WorldPhones)
effect of variables:
 modified item       Var       
 "height of face   " "N.Amer"  
 "width of face    " "Europe"  
 "structure of face" "Asia"    
 "height of mouth  " "S.Amer"  
 "width of mouth   " "Oceania" 
 "smiling          " "Africa"  
 "height of eyes   " "Mid.Amer"
 "width of eyes    " "N.Amer"  
 "height of hair   " "Europe"  
 "width of hair   "  "Asia"    
 "style of hair   "  "S.Amer"  
 "height of nose  "  "Oceania" 
 "width of nose   "  "Africa"  
 "width of ear    "  "Mid.Amer"
 "height of ear   "  "N.Amer"

 

 

 

4. 스타차트

 

stars()함수를 이용하면 스타차트를 그려줌

 

stars(WorldPhones)

 

 

 

TAGS.

Comments