22.5 문자열 추가
이번 절에서는 낮은 수준의 그래프 함수 네번째로 text(x, y, labels, ...)
, mtext()
함수를 이용하여 문자열을 추가하는 방법에 대해서 학습하겠습니다.
그래프에 문자를 추가할 때 text()
함수와 mtext()
함수를 사용합니다. 차이점은 text()
가 그래프 내에 문자열을 추가할 때 사용하는 반면, mtext()
는 외부 마진 영역(1 하단, 2 좌측, 3 상단, 4 우측)에 문자를 추가할 때 사용한다는 것입니다.
text()
함수와 mtext()
함수의 일반적인 사용법은 아래와 같습니다.
함수 (function) | 사용법 (usage) |
---|---|
text() |
text(x, y, labels = , pos = , ... ) |
mtext() |
mtext("text to place", side = , line = , adj, outer = , ... ) |
함수 | 옵션 | 기능 설명 |
---|---|---|
text() |
x , y |
문자를 추가할 위치의 x, y좌표. 단, x, y 좌표 대신에 locator(1) 을 입력하면 커서로 지적하는 곳에 문자를 추가함 |
labels = |
추가할 문자 | |
pos = |
1 = 하단부2 = 왼쪽3 = 상단부(기본값)4 = 오른쪽 |
좌표를 기준으로 문자를 입력할 상대적인 위치 |
... |
폰트, 색깔, 크기 등의 그래프 모수 지정 | |
mtext() |
추가할 문자 | |
side = |
1 = 하단부2 = 왼쪽3 = 상단부(기본값)4 = 오른쪽 |
문자를 추가할 위치 |
line = |
0 ~ |
문자와 그래프와의 마진 거리 |
adj = |
0 : 왼쪽/아래쪽 정렬1 : 위쪽/오른쪽 정렬생략 : 중앙 정렬 |
|
outer = |
TRUE : 외부마진에 문자 추가FALSE : 내부마진에 문자 추가 |
|
... |
폰트, 색깔, 크기 등의 그래프 모수 지정 |
22.5.1 text()
함수의 사용
먼저 text()
함수를 사용하여 그래프 내에 문자열을 추가하는 방법을 살펴보도록 하겠습니다.
MASS
패키지에 내장되어있는 Cars93
데이터프레임의 차 무게 (Weight)
, 고속도로 연비 (MPG.highway
) 변수를 활용해서 산점도를 그리고, 각 점에 해당하는 모델명을 모델명(Model
) 변수의 텍스트로 추가해 보겠습니다.
library(MASS)
##-------------------------------------------
## 플롯에 문자열 추가 : text(), mtext()
##-------------------------------------------
## 플롯에 문자열 추가 : text()
attach(Cars93)
## The following object is masked _by_ .GlobalEnv:
##
## Cylinders
plot(Weight, MPG.highway, main = "MPG.highway ~ Weight의 산점도")
text(x = Weight, y = MPG.highway, labels = Model, pos = 3, cex = 0.5)
text(x, y, )
좌표 대신에 text(locator(1), )
옵션을 사용하면 대화방식으로 플롯 화면 상에 문자가 들어갈 위치를 마우스로 클릭해서 지정할 수 있습니다.
재현 가능성(reproducible research) 관점에서 보면 추천할 만한 방법은 아닙니다. 그러나, x
, y
좌표를 정확히 모르거나, 한번만 간편하게 그래프를 그려볼 목적이라면 큰 문제는 없습니다.
# 텍스트가 들어갈 위치를 마우스로 선택하기 : locator(1)
text(locator(1), labels = "연비가 낮음")
detach(Cars93)
22.5.2 mtext()
함수의 사용
다음으로 mtext()
를 사용해서 그래프 외부 마진 영역에 문자열을 추가해보는 예제입니다.
title()
함수로 제목을 추가하는 것과 유사한 측면이 있습니다. mtext()
의 경우 여러 개의 그래프를 결합했을 때 외부마진에 그래프 전체의 제목을 자유롭게 추가할 수 있다는 유용한 장점이 있습니다.
library(MASS)
## 4개의 마진 중 한 곳에 문자열 추가하기 : mtext()
# 기본 par 설정 값을 저장합니다.
<- par(no.readonly = TRUE)
op
# 1개 행에 2개의 그래프를 배치합니다.
par(mfrow = c(1,2), # 1행 2개 플롯
oma = c(2, 2, 4, 1)) # 외부 마진
attach(Cars93)
## The following object is masked _by_ .GlobalEnv:
##
## Cylinders
## The following objects are masked from Cars93 (pos = 3):
##
## AirBags, Cylinders, DriveTrain, EngineSize, Fuel.tank.capacity,
## Horsepower, Length, Luggage.room, Make, Man.trans.avail,
## Manufacturer, Max.Price, Min.Price, Model, MPG.city, MPG.highway,
## Origin, Passengers, Price, Rear.seat.room, Rev.per.mile, RPM,
## Turn.circle, Type, Weight, Wheelbase, Width
plot(Weight, MPG.highway, main = "MPG.highway ~ Weight") # 그림 1
plot(Horsepower, MPG.highway, main = "MPG.highway ~ Horsepower") # 그림 2
mtext("Weight, Horsepower와 MPG.Highway",
side = 3, # 문자열 위치 : 3 = 상단부
line = 1, # 그래프와 문자열의 마진 거리 (0부터 시작)
adj = 2, # 문자열 정렬 위치 : 가운데 정렬
cex = 2, # 폰트 크기
outer = TRUE) # TRUE : 외부 마진에 문자열 위치
detach(Cars93)
# 원래의 par 설정값으로 환원
par(op)
위의 예에서 mtext()
함수 내의 side
, line
, adj
, cex
, outer
등의 설정값을 하나씩 수정하면서 연습해 보면 옵션 설정을 이해하는데 도움이 될 것입니다.