데이터분석 전문가(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)
'Visualization' 카테고리의 다른 글
데이터분석 전문가(ADP)를 위한 shiny를 활용한 R프로그래밍 시각화 (0) | 2022.02.21 |
---|---|
데이터분석 전문가(ADP)를 위한 R프로그래밍 시각화편4 (0) | 2022.02.20 |
데이터분석 전문가(ADP)를 위한 R프로그래밍 시각화편2 (0) | 2022.02.19 |
데이터분석 전문가(ADP)를 위한 R프로그래밍 시각화편1 (0) | 2022.02.17 |
seaborn에서 사용할 수 있는 그래프들 (0) | 2022.02.07 |