7.2 XY축 형태 변환 : axis(side, ...)

이번 절에서는 낮은 수준의 그래프 함수 두번째로 XY축의 형태를 변환시켜 주는 axis(side, ...) 함수 에 대해서 학습하겠습니다.

XY축의 형태를 변경하는 axis() 함수의 기본 사용법은 다음과 같습니다.

axis(side, at = NULL, 
       labels = TRUE, 
       tick = TRUE, 
       line = NA,
       pos = NA, 
       outer = FALSE, 
       font = NA, 
       lty = "solid", 
       lwd = 1, lwd.ticks = lwd, 
       col = NULL, col.ticks = NULL,    
       hadj = NA, padj = NA, ...)

위의 axis() 함수의 모수 중에서 사용빈도가 높은 주요 모수를 중심으로 기능을 설명하는 예를 들어보겠습니다.

Table 7.1: axis() 함수의 옵션 설정
모수 설명
side 그래프의 어느 쪽에 축을 그릴지 지정하는 정수.
1 = 아래쪽 (below side) 2 = 왼쪽 (left side) 3= 위쪽 (above side) 4 = 오른쪽 (right side)
at 축의 눈금이 그려질 곳의 위치를 지정하는 점들
labels 축 눈금에 레이블 데이터를 입력하는 숫자형 벡터, 혹은 문자형 벡터
tick 축의 눈금과 축의 선을 그릴지를 설정하는 논리형 값
pos 해당 축이 다른 축과 교차하는 좌표
lty 축과 눈금의 선의 유형
lwd 축의 눈금의 선의 두께
col 축과 눈금 선의 색깔
tck 눈금의 방향과 길이 설정
- 양수 : 그래프 안쪽으로 눈금 생성
- 음수 : 그래프 바깥쪽으로 눈금 생성
hadj 수평 레이블에 대한 수정
padj 수직 레이블에 대한 수정

7.2.1 X축과 Y축의 제거

X축과 Y축을 변경하기 전에 먼저 “axes = FALSE” 옵션을 사용해서 X축과 Y축을 제거해야 합니다. X축만 선별적으로 제거하려면 xaxt = "n", Y축만 선별적으로 제거하려면 yaxt = "n" 옵션을 사용하면 되겠습니다.

아래에 각각의 예를 들어보았습니다.

library(MASS)

##--------------------------------------------- 
## 높은 수준의 함수 모수 : main, axes, xaxt, yaxt
##--------------------------------------------- 

# 기본 par 설정값을 저장합니다.
op <- par(no.readonly = TRUE) 
 
# par() 함수의 옵션을 변경합니다.
par(mfrow=c(2, 2))                                  # 프레임을 2행 2열로 분할합니다.
     
# X와 Y축을 플롯합니다.
plot(MPG.highway ~ Weight, Cars93, main = "plot with X and Y axis") 
  
# X와 Y축을 제거합니다. : axes = FALSE 
plot(MPG.highway ~ Weight, Cars93, axes = FALSE, main = "axes = FALSE")  
 
# X 축만 제거합니다 : xaxt = "n" 
plot(MPG.highway ~ Weight, Cars93, xaxt = "n", main = "xaxt = n")  
  
# Y 축만 제거합니다 : yaxt = "n" 
plot(MPG.highway ~ Weight, Cars93, yaxt = "n", main = "yaxt = n")  
X축과 Y축의 제거 : 높은 수준의 함수 모수 이용

Figure 7.7: X축과 Y축의 제거 : 높은 수준의 함수 모수 이용

# 원래의 par 기본 값을 불러옵니다.
par(op)

7.2.2 X축과 Y축의 눈금 간격 변경

X축과 Y축의 범위를 알아보기 위해 summary() 함수로 기술통계량을 알아보겠습니다.

library(MASS)

# x축과 y축의 통계 요약 정보를 확인합니다.
summary(Cars93$Weight)                             # X 축
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1695    2620    3040    3073    3525    4105
summary(Cars93$MPG.highway)                        # Y 축
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      20      26      28      29      31      50

X축으로 Weight (차의 무게)를, Y축으로는 MPG.highway(고속도로 연비)로 하는 산점도를 그렸을 때, X축은 1600~4200까지의 범위로 100씩 증가하는 눈금을, Y축은 18~52까지의 범위로 2씩 증가하는 눈금으로 그려보겠습니다.

##--------------------------------------------- 
## 낮은 수준의 그래픽 함수 : axis(side, ...) 
##--------------------------------------------- 

# X 축의 범위 (1600 ~ 4200, by 100) 
# Y 축의 범위 (18 ~ 52, by 2) 

# 1) X축과 Y축이 없는 산점도를 그립니다.
plot(MPG.highway ~ Weight, Cars93, axes = FALSE,
     xlim = c(1600, 4200),       
     ylim = c(18, 52),     
     main = "Weight와 MPG.highway의 산점도")  
 
x <- seq(1600, 4200, by = 100)        # x 축의 눈금 설정
y <- seq(18, 52, by = 2)              # y 축의 눈금 설정

# 2) X축의 눈금을 그립니다.
axis(side = 1,                        # bottom side
     at = x,   
     labels = TRUE,
     pos = 18,                        # X 축의 시작점 좌표.
     tck = 0.02)                      # 0.02 길이로 수직 방향의 틱 마크 표시
 
# 3) Y축의 눈금을 그립니다.
axis(side = 2,                        # left side +      
     at = y,      
     labels = TRUE,
     pos = 1600,                      # Y 축의 시작점 좌표    
     tck = -0.02)                     # 0.02 길이로 수평 방향의 틱 마크 표시
X축과 Y축 : 낮은 수준의 함수 axis 함수의 사용

Figure 7.8: X축과 Y축 : 낮은 수준의 함수 axis 함수의 사용