지난번 포스팅에서는 그래프에 추가적인 정보를 입력하는 낮은 수준의 그래프 함수(low level graphic functions) 중에서 첫번째로 제목, XY축 Label 추가하는 title()에 대해서 알아보았습니다.
이번 포스팅에서는 낮은 수준의 그래프 함수 두번째로 (2) XY축 형태 변환 : axis(side, ...) 에 대해서 소개하겠습니다.
[ 낮은 수준의 그래프 함수 (Low level graphic function) ]
XY축 형태를 변경하는 axis() 함수의 기본 사용법은 아래와 같습니다.
axaxis(side, at = NULL, labels = TRUE, tick = TRUE, line = NA, |
위의 axis() 함수의 모수 중엣서 사용빈도가 높은 주요 모수에 대해서 기능 설명과 예를 들어보겠습니다.
arguments |
description |
side |
그래프의 어느 쪽에 축을 그릴지 지정하는 정수 (an integer specifying which side of the plot the axis is to be drawn on) 1 = 아래쪽 (below side) |
at |
축의 눈금이 그려질 곳의 위치를 지정하는 점들 (the points at which tick-marks are to be drawn) |
labels |
축 눈금에 라벨 데이터를 입력하는 숫자형 벡터, 혹은 문자형 벡터 (numerical or a character or expression vector of labels to be placed at the tick-points) |
tick |
축의 눈금과 축의 선을 그릴지를 설정하는 논리형 값 (a logical value specifying whether tickmarks and an axis line should be drawn) |
pos |
해당 축이 다른 축과 교차하는 좌표 (the coordinate at which the axis line is to be drawn) |
lty |
축과 눈금의 선의 유형 (line type for both the axis line and the tick marks) |
lwd |
축의 눈금의 선의 두께 (line widths for the axis line and the tick marks) |
col |
축과 눈금 선의 색깔 (colors for the axis line and the tick marks respectively) |
tck |
눈금의 방향과 길이 설정 (direction and length of tick marks) - 양수 : 그래프 안쪽으로 눈금 생성 - 음수 : 그래프 바깥쪽으로 눈금 생성 |
hadj |
수평 라벨에 대한 수정 (adjustment for all labels parallel (‘horizontal’) to the reading direction) |
padj |
수직 라벨에 대한 수정
(adjustment for each tick label perpendicular to the reading direction) |
X축과 Y축을 변경하려면 먼저 "axes = FALSE" 옵션을 사용해서 X축과 Y축을 제거해야 합니다. X축만 선별적으로 제거하려면 xaxt = "n", Y축만 선별적으로 제거하려면 yaxt = "n" 옵션을 사용하면 되겠습니다. 아래에 각각의 예를 들어보았습니다.
> ##--------------------------------------------- > ## low level graphic functions : axis(side, ...) > ##--------------------------------------------- > > library(MASS) # to use Cars93 dataframe > > # Save default par values > op <- par(no.readonly = TRUE) > > # Change par() function options > par(mfrow=c(2, 2)) # make frame by 2 row, 2 columns > > > # plot with X and Y axis > plot(MPG.highway ~ Weight, Cars93, + main = "plot with X and Y axis") > > # deleting X and Y axes : axes = FALSE > plot(MPG.highway ~ Weight, Cars93, axes = FALSE, + main = "axes = FALSE") > > > # deleting X axis : xaxt = "n" > plot(MPG.highway ~ Weight, Cars93, xaxt = "n", + main = "xaxt = n") > > > # deleting Y axis : yaxt = "n" > plot(MPG.highway ~ Weight, Cars93, yaxt = "n", + main = "yaxt = n") > > > # Reset par to the default values at startup > par(op)
|
X축과 Y축의 범위를 알아보기 위해 summary() 함수로 기술통계량을 알아보겠습니다.
> # summary statistics >> summary(Cars93$Weight) # X axis Min. 1st Qu. Median Mean 3rd Qu. Max. 1695 2620 3040 3073 3525 4105 >> summary(Cars93$MPG.highway) # Y axis Min. 1st Qu. Median Mean 3rd Qu. Max. 20.00 26.00 28.00 29.09 31.00 50.00 |
X축으로 Weight (차의 무게)를, Y축으로는 MPG.highway (고속도로 연비)으로 하는 산점도를 그린다고 했을 때, X축은 1600~4200까지의 범위로 100씩 증가하는 눈금을, Y축은 18~52까지의 범위로 2씩 증가하는 눈금으로 그려보겠습니다.
> # X axis (1600 ~ 4200, by 100) > # Y axis (18 ~ 52 range, by 2) > plot(MPG.highway ~ Weight, Cars93, axes = FALSE, + xlim = c(1600, 4200), + ylim = c(18, 52), + main = "scatter plot of Weight and MPG.highway") > > x <- seq(1600, 4200, by = 100) > y <- seq(18, 52, by = 2) > > > axis(side = 1, # bottom side + at = x, + labels = TRUE, + pos = 18, # coordinate of X axis starting point + tck = 0.02) # tick marks at vertical direction with 0.02 length > > axis(side = 2, # left side + at = y, + labels = TRUE, + pos = 1600, # coordinate of Y axis starting point + tck = -0.02) # tick marks at horizontal direction with 0.02 length
|
다음번 포스팅에서는 직선 연결, 직선 추가하는 낮은 수준은 그래프 함수 lines(), abline() 에 대해서 알아보도록 하겠습니다.
많은 도움 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감 ~♡' 단추를 꾸욱 눌러주세요.^^