22.7 다각형 추가 : polygon(x, y, …)

이번 절에서는 낮은 수준의 그래프 함수로 polygon(x, y, ...) 함수를 이용하여 다각형을 추가하는 방법에 대해서 알아 보겠습니다.

다각형을 그리는 polygon()함수의 일반적인 사용법은 다음과 같습니다.

polygon(x, y = NULL, density = NULL, angle = 45,     
       border = NULL, col = NA, lty = par("lty"),     
       ..., fillOddEven = FALSE) 
구분 옵션 설명
x, y 다각형의 좌표의 벡터
density 다각형 안을 채우는 음영 선의 밀도 (default 는 NULL)
angle 음영있는 선의 각도 (수평선을 기준으로 해서 반시계방향)
border 다각형 테두리의 색깔
col 다각형을 채우는 색깔 (default 는 NA)
lty 0 = blank
1 = solid (기본 값)
2 = dashed
3 = dotted
4 = dot dash
5 = long dash
6 = two dash
par()함수에서 사용하는 선 유형
... 추가로 그래프 모수 사용 가능
fillOddEven 다각형의 음영을 논리적으로 조절하는 모드 (default 는 FALSE)

두 개의 삼각형을 테두리의 색깔(border)과 선 유형(lty), 다각형을 채우는 색깔(col), 다각형을 채우는 선의 밀도(density)와 각도(angle), 색깔(col)을 달리해서 그려보겠습니다.

xy의 좌표값의 중간에 “NA” 가 들어있음에 주의해서 보시기 바랍니다.

##------------------------------------- 
## 다각형 추가하기 : polygon(x, y, ...) 
##------------------------------------- 
 
# NA 값을 갖는 복수 개의 다각형
 
plot(c(1, 6), c(-3.5, 3.5), type = "n") 
x <- c(1, 2, 3, NA, 4, 4, 6) 
y <- c(1, -3, 2, NA, -3, 3, -3) 

polygon(x, y,     
        col = c("yellow", "blue"),
        border = c("black", "red"),
        lwd = 2,
        lty = c("dotted", "solid")) 
title("NA 값을 갖는 복수 개의 다각형")

아래의 다각형은 위의 예와 거의 비슷합니다. 단 한가지 차이점이라면 x, y의 좌표값에 “NA”가 없다는 점입니다. “NA” 가 없다보니 중간에 다각형을 분리하지를 못하고, 그냥 하나의 색깔, 선 유형, 다각형 채우는 색을 계속 사용하고 있습니다.

## NA가 없는 경우의 복수 개의 다각형
plot(c(1, 6), c(-3.5, 3.5), type = "n") 

x <- c(1, 2, 3, 4, 4, 6) 
y <- c(1, -3, 2, -3, 3, -3) 

polygon(x, y,
        col = c("yellow", "blue"),
        border = c("black", "red"),
        lwd = 2,
        lty = c("dotted", "solid")) 
title("NA가 없는 경우의 복수 개의 다각형")

이번에는 다각형 안의 음영을 선으로 채우는 방법을 소개하겠습니다. density선의 밀도(숫자가 클 수록 촘촘해짐)를 지정하고, angle선의 각도(수평선을 기준으로 반시계방향)를 지정하면 됩니다.

# 선이 추가된 다각형
plot(c(1, 6), c(-3.5, 3.5), type = "n") 
x <- c(1, 2, 3, NA, 4, 4, 6) 
y <- c(1, -3, 2, NA, -3, 3, -3) 
polygon(x, y,
        col = c("yellow", "blue"),
        border = c("black", "red"),
        lwd = 2,
        lty = c("dotted", "solid"),
        density = c(10, 20),
        angle = c(45, -45)) 
title("선이 추가된 다각형")

아래 다각형은 x, y 좌표값이 위의 예와는 좀 다릅니다. 두 좌표 값들 간의 거리에 색깔을 채워넣은 형태의 그래프인데요, polygon() 함수로 이런 그래프도 그릴 수 있다는 예시로 보면 좋겠다 싶어서 www.math.cula.edu 사이트에서 참조하였습니다.

## 색칠된 다각형 
# 출처 : http://www.math.ucla.edu/~anderson/rw1001/library/base/html/polygon.html 
set.seed(3232)
n <- 100 
xx <- c(0:n, n:0) 
yy <- c(c(0, cumsum(rnorm(n))), rev(c(0, cumsum(rnorm(n))))) 
plot(xx, yy, type="n", xlab="Time", ylab="Distance") 
polygon(xx, yy, col="green", border = "red") 
title("색칠된 다각형")