작성자: admin 작성일시: 2016-09-29 22:03:16 조회수: 434 다운로드: 58
카테고리: R 태그목록:

R 그래픽 기초

차트 명령어

  • barplot: 바 차트
  • pie: 파이 차트
  • plot: 라인 플롯 및 스캐터 플롯
  • pair: 다중 스캐터 플롯
  • boxplot: 박스 플롯

바 차트

In:
month.abb
  1. 'Jan'
  2. 'Feb'
  3. 'Mar'
  4. 'Apr'
  5. 'May'
  6. 'Jun'
  7. 'Jul'
  8. 'Aug'
  9. 'Sep'
  10. 'Oct'
  11. 'Nov'
  12. 'Dec'
In:
category <- month.abb
value <- c(3,7,4,1,8,4,5,8,2,3,4,9)
barplot(value, names=category)
In:
data <- matrix(as.vector(mdeaths), ncol=12)
data
213412802103118620201113224010872019109822631056
18631131213711332750 97016341013228410041820 975
18771209215310532283 9991722 9591942 9701846 940
187714921833134714791208180111791423114015311081
149216211403154511891467124612291340111012151294
124918461288206611602059116216551187181210751341
In:
barplot(data, names=month.abb, col=palette("default"))
In:
data <- matrix(as.vector(mdeaths), nrow=12, byrow=TRUE)
barplot(data, names=start(mdeaths)[1]:end(mdeaths)[1], beside=TRUE, col=palette("default"))
In:
category <- month.abb
value <- c(3,7,4,1,8,4,5,8,2,3,4,9)
barplot(value, names=category, horiz=TRUE)

파이 차트

In:
category <- month.abb
value <- c(3,7,4,1,8,4,5,8,2,3,4,9)
pie(value, labels=category)

라인 플롯

plot 명령은 라인 플롯이나 스캐터 플롯을 그린다. type 인수의 값으로 라인 유형을 결정할 수 있다.

  • type='p' : 포인트만 그림
  • type='l' : 라인만 그림
  • type='b' : 포인트와 라인 모두 (both) 그림 (겹치지 않음)
  • type='o' : 포인트와 라인을 겹쳐서 그림 (overplotted)
  • type='c' : both 유형에서 포인트 제외
  • type='n' : 실제 라인/포인트는 그리지 않음
  • type='s' : 계단형 스텝 (zero-order-hold)
  • type='S' : 계단형 스텝 (backward zero-order-hold)
  • type='h' : 히스토그램 스타일
In:
x <- AirPassengers[-(1:100)]
x
  1. 355
  2. 422
  3. 465
  4. 467
  5. 404
  6. 347
  7. 305
  8. 336
  9. 340
  10. 318
  11. 362
  12. 348
  13. 363
  14. 435
  15. 491
  16. 505
  17. 404
  18. 359
  19. 310
  20. 337
  21. 360
  22. 342
  23. 406
  24. 396
  25. 420
  26. 472
  27. 548
  28. 559
  29. 463
  30. 407
  31. 362
  32. 405
  33. 417
  34. 391
  35. 419
  36. 461
  37. 472
  38. 535
  39. 622
  40. 606
  41. 508
  42. 461
  43. 390
  44. 432
In:
plot(x, type='l', lty=1)
In:
plot(x, type='b', lty=1)
In:
plot(x, type='p', lty=1)
In:
plot(x, type='o', lty=1)
In:
plot(x, type='s', lty=1)
In:
plot(x, type='S', lty=1)
In:
plot(x, type='h', lty=1)

스캐터 플롯

스캐터 플롯은 두 개의 자료 집합이 있는 경우 상관도를 보기 위한 차트이다.

In:
head(trees)
GirthHeightVolume
8.370 10.3
8.665 10.3
8.863 10.2
10.572 16.4
10.781 18.8
10.883 19.7
In:
plot(trees$Height, trees$Volume)

페어 플롯

  • 페어 플롯은 복수의 데이터 집합이 있는 경우 각 조합에 대해 스캐터 플롯을 그린다.
In:
plot(trees)

박스 플롯

박스 플롯은 박스-위스커 플롯 (Box-Whisker plot)이라고도 한다.

  • 중심점 : 중간값 (median)
  • 상자 : 1st quartile, 3rd quartile
  • 막대기 : +/- 1.5 IQR (Inter-quartile range, IQR = Q3 - Q1)
  • 점 : 막대기 밖의 아웃라이어(outlier)

In:
boxplot(trees)

R 그래픽 구조

  • device, figure, plot 의 3단계 구조
  • figure는 그리드 형태로 여러개의 plot을 가질 수 있음

그래픽 파라미터 설정

그래픽 파라미터 설정 방법은 두가지가 있다.

  1. plot() 등의 플롯 명령의 인수로 넣는 방법
  2. par() 명령으로 외부에서 설정하는 방법

par() 설정은 이후의 모든 그래픽에 적용되므로 기존 설정을 저장할 필요가 있는 경우에는 변수에 저장했다가 복원하는 방법을 많이 사용한다. 일단 그래픽이 그려진 다음에는 par() 명령이 효과가 없다.

In:
old.par <- par()
par(old.par)
Warning message in par(old.par):
“graphical parameter "cin" cannot be set”Warning message in par(old.par):
“graphical parameter "cra" cannot be set”Warning message in par(old.par):
“graphical parameter "csi" cannot be set”Warning message in par(old.par):
“graphical parameter "cxy" cannot be set”Warning message in par(old.par):
“graphical parameter "din" cannot be set”Warning message in par(old.par):
“graphical parameter "page" cannot be set”

그래픽 파라미터의 종류

이름 의미
din device 크기 (inch)
fin figure 크기 (inch)
pin picture 크기 (inch)
omi device 마진 (inch)
oma device 마진 (line)
omd device 마진 (device fraction)
mgp 축 마진 (line))
mai figure 마진 (inch)
mar figure 마진 (line)
mfrow figure 그리드 설정
mfg figure 그리드내 위치 지정
col 플롯 색상
col.axis 축 색상
col.lab 라벨 색상
col.main 제목 색상
col.sub 부제목 색상
fg foreground 색상
bg background 색상
cex 글자 및 심볼 확대배율
cex.axis 축 확대배율
cex.lab 라벨 확대배율
cex.main 제목 확대배율
cex.sub 부제목 확대배율
crt 글자 회전 각도
cra 글자크기 (픽셀단위)
new TRUE면 plot명령이 나와도 앞서 그림을 지우지 않음
pty 플롯 영역 스타일. ’s’(정사각형) ’m’(최대 크기)
lty line type. ”solid”, ”dashed”, ”dotted”, ”dotdash”, ”longdash”
lwd line width. 디폴트 1
lend line end style. ”round”, ”butt”, ”square”
ljoin line join style. ”round”, ”mitre”, ”bevel”
pch 심볼 정의 (0:18 정수)
font font
font.axis 축 font
font.lab 라벨 font
font.main 제목 font
font.sub 부제목 font
las 축 라벨 스타일. 0(축에 평행), 1(수평), 2(축에 수직), 3(수직)
xaxt x 축 유형. ’s’ 표준, ’n’ 축없음
xlog x 축 로그 스케일 사용 여부 (TRUE면 로그)

R 그래픽 추가 설정

  • plot 명령 인수

    • main : 타이틀 캡션
    • sub : 서브 타이틀 캡션
    • xlab : x 축 라벨 캡션
    • ylab : y 축 라벨 캡션
  • 외부 명령어

    • title : 타이틀
    • legend : 레전드
    • box : 플롯 경계 상자
    • axes : 축
    • mtext : 마진 문자 (플롯 경계 바깥)
  • 축 범위는 plot 명령의 인수로 설정

    • xlim : x 축 최대/최소값 범위 설정
    • ylim : y 축 최대/최소값 범위 설정
  • axis(side, at, labels, tick) : 축 생성 및 틱 설정

    • side : 축 위치 (1=아래, 2=왼쪽, 3=위 and 4=오른쪽)
    • at : 틱 위치
    • labels : 틱 라벨
In:
x <- c(1:10)
y <- x
z <- 10/x
plot(x, y, type="b", yaxt="n", pch=21, col="red", lty=3)
lines(x, z, type="b", pch=22, col="blue")
axis(2, at=x, labels=x, col.axis="red")
axis(4, at=z, labels=round(z,digits=2))

R 그래픽 Annotation

  • annotation 명령어는 추가적인 선/점/문자 등을 그리는 명령
  • 여러 유형의 차트가 합쳐진 복합차트, 여러개의 축을 가지는 차트, 혹은 화살표나 설명을 가진 차트 등을 생성할 때 사용
  • 내부적으로 plot.new()를 호출하지 않으므로 사용하기 전에 이미 plot()plot.new()를 호출하는 명령이 실행되어 플롯 영역이 존재해야 한다.

    • lines : 라인 플롯
    • points : 점 플롯
    • symbol : 특수문자
    • text : 문자
    • abline : 직선
    • arrows : 화살표
    • rect : 사각형
    • polygon : 다각형
In:
plot(cars, main="Car Performances", sub="Speed and Stopping Distance", xlab="speed", ylab="stopping distance")
arrows(cars$speed[10], cars$dist[10], cars$speed[10] + 8, cars$dist[10])
text(cars$speed[10] + 8, cars$dist[10], labels="10th point", pos=4)

Multiple Plot

  • 한 figure에 여러 개의 plot을 grid 형태로 넣는 multiple plot을 그리려면 layout() 명령어 사용

layout(mat, widths, heights)

  • mat : 그리드 설정 명령어
    • n x m 행렬을 넣으면 n x m 그리드 설정
    • 행렬 값은 0부터 최대 nm의 정수
    • 빈공간에는 0을 넣고 나머지는 1부터 순서대로 설정
    • 추후 plot.new()를 실행하거나 이를 내부적으로 실행하는 명령을 사용하면 1로 설정된 영역부터 차례대로 그려짐
  • widths : 폭 벡터. 그리드 셀의 상대적 크기 조정
  • heights : 높이 벡터. 그리드 셀의 상대적 크기 조정
In:
layout(matrix(c(2, 0, 1, 3), 2, 2, byrow=T), c(2, 1), c(1, 2))
plot(trees$Height, trees$Volume, col=c("red", "blue"))
hist(trees$Height)
boxplot(trees$Volume)

다중 스케일

한 plot에 다른 스케일을 가지는 여러가지 자료를 그리려면 복수개의 축 (multiple axes) 가 필요

  • 다양한 plot 설명 명령어 및 annotation 명령어 필요
  • 생성 방법
    1. par(mar) 명령으로 마진을 넓게 설정
    2. 축 스케일을 설정하기 위한 range 계산
    3. axes=F 인수로 축과 박스가 없는 플롯을 그림. 필요하면 xlab="" 등으로 라벨 생성을 막음 이 때 xlim, ylim 등의 인수로 축 스케일을 사용자가 고정
    4. 필요할 경우 추가 플롯 그림. 이 때 lines()과 같은 annotation 명령어는 그냥 사용 가능하지만 plot()과 같이 새로운 플롯 영역을 생성하는 명령어를 사용할 때는 par(new=TRUE) 명령으로 홀드시킨다. 마찬가지로 xlim, ylim 등의 인수로 축 스케일을 사용자가 고정
    5. axes() 명령으로 필요한 축을 생성
    6. box() 명령으로 필요한 경계박스 생성
    7. mtext() 명령으로 축 라벨을 생성
In:
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, type="l", col="black", xlim=c(7000,3400), ylim=c(0,max(pop)), axes=F, xlab="", ylab="", main="")
points(time, pop, pch=20, col="black")
axis(2, ylim=c(0,max(pop)), col="black", lwd=2)
mtext(2, text="Population", line=2)
par(new=T)
plot(time, med, type="l", lty=2, lwd=2, xlim=c(7000,3400), ylim=c(0,max(med)), axes=F, xlab="", ylab="", main="")
points(time, med, pch=20)
axis(2, ylim=c(0,max(med)), lwd=2, line=3.5)
mtext(2, text="Median Group Size", line=5.5)
par(new=T)
plot(time, grp, type="l", lty=3, lwd=2, xlim=c(7000,3400), ylim=c(0,max(grp)), axes=F, xlab="", ylab="", main="")
points(time, grp, pch=20)
axis(2, ylim=c(0,max(grp)), lwd=2, line=7)
mtext(2, text="Number of Groups", line=9)
axis(1,pretty(range(time),10))
mtext("cal BP",side=1,col="black",line=2)

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!