R Graphics 낮은 수준의 그래프 함수 (5) 문자 추가 : text(x, y, labels, ...), mtext()
R 분석과 프로그래밍/R 그래프_시각화 2016. 1. 10. 00:26지난번 포스팅에서는 그래프에 추가적인 정보를 입력하는 낮은 수준의 그래프 함수(low level graphic functions) 중에서
(1) 제목, XY축 Label 추가하는 title()
(2) XY축의 형태를 변환하는 axis(side, ...)
(3) 직선 연결, 추가 : lines(x, y), abline(a, b), abline(h=y), abline(v=x)
(4) 점 추가 : points(x, y)
에 대해서 알아보았습니다.
이번 포스팅에서는 낮은 수준의 그래프 함수 네번째로 (5) 문자 추가 : text(x, y, labels, ...), mtext() 에 대해서 소개하겠습니다.
[ 낮은 수준의 그래프 함수 (Low level graphic function) ]
그래프에 문자를 추가할 때 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=below, 2=left, 3=above(default), 4=right | |
... |
폰트, 색깔, 크기 등의 그래프 모수 지정 | |
mtext() |
"text to place" |
추가할 문자 |
side = |
문자를 추가할 위치 : 1=bottom, 2=left, 3=top(default), 4=right | |
line = |
문자와 그래프와의 마진 거리 (to indicate the line in the margin starting with 0 and moving out) | |
adj = |
adj=0 : 왼쪽/아래쪽 정렬, adj=1 : 위쪽/오른쪽 정렬, 생략 : 중앙 정렬 (adj=0 for left/bottom alignment or adj=1 for top/right alignment) | |
outer = |
outer=TRUE : 외부마진에 문자 추가 outer=FALSE : 내부마진에 문자 추가 | |
... |
폰트, 색깔, 크기 등의 그래프 모수 지정 |
MASS 패키지에 내장되어있는 Cars93 데이터프레임의 차 무게 (Weight), 고속도로 연비 (MPG.highway) 변수를 활용해서 산점도를 그리고, 모델명(Model) 변수를 가지고 text를 추가해보겠습니다.
> ##------------------------------------------- > ## adding text to the plot : text(), mtext() > ##------------------------------------------- > > ## adding text within a plot : text() > library(MASS) > attach(Cars93) > str(Cars93) 'data.frame': 93 obs. of 27 variables: $ Manufacturer : Factor w/ 32 levels "Acura","Audi",..: 1 1 2 2 3 4 4 4 4 5 ... $ Model : Factor w/ 93 levels "100","190E","240",..: 49 56 9 1 6 24 54 74 73 35 ... $ Type : Factor w/ 6 levels "Compact","Large",..: 4 3 1 3 3 3 2 2 3 2 ... $ Min.Price : num 12.9 29.2 25.9 30.8 23.7 14.2 19.9 22.6 26.3 33 ... $ Price : num 15.9 33.9 29.1 37.7 30 15.7 20.8 23.7 26.3 34.7 ... $ Max.Price : num 18.8 38.7 32.3 44.6 36.2 17.3 21.7 24.9 26.3 36.3 ... $ MPG.city : int 25 18 20 19 22 22 19 16 19 16 ... $ MPG.highway : int 31 25 26 26 30 31 28 25 27 25 ... $ AirBags : Factor w/ 3 levels "Driver & Passenger",..: 3 1 2 1 2 2 2 2 2 2 ... $ DriveTrain : Factor w/ 3 levels "4WD","Front",..: 2 2 2 2 3 2 2 3 2 2 ... $ Cylinders : Factor w/ 6 levels "3","4","5","6",..: 2 4 4 4 2 2 4 4 4 5 ... $ EngineSize : num 1.8 3.2 2.8 2.8 3.5 2.2 3.8 5.7 3.8 4.9 ... $ Horsepower : int 140 200 172 172 208 110 170 180 170 200 ... $ RPM : int 6300 5500 5500 5500 5700 5200 4800 4000 4800 4100 ... $ Rev.per.mile : int 2890 2335 2280 2535 2545 2565 1570 1320 1690 1510 ... $ Man.trans.avail : Factor w/ 2 levels "No","Yes": 2 2 2 2 2 1 1 1 1 1 ... $ Fuel.tank.capacity: num 13.2 18 16.9 21.1 21.1 16.4 18 23 18.8 18 ... $ Passengers : int 5 5 5 6 4 6 6 6 5 6 ... $ Length : int 177 195 180 193 186 189 200 216 198 206 ... $ Wheelbase : int 102 115 102 106 109 105 111 116 108 114 ... $ Width : int 68 71 67 70 69 69 74 78 73 73 ... $ Turn.circle : int 37 38 37 37 39 41 42 45 41 43 ... $ Rear.seat.room : num 26.5 30 28 31 27 28 30.5 30.5 26.5 35 ... $ Luggage.room : int 11 15 14 17 13 16 17 21 14 18 ... $ Weight : int 2705 3560 3375 3405 3640 2880 3470 4105 3495 3620 ... $ Origin : Factor w/ 2 levels "USA","non-USA": 2 2 2 2 2 1 1 1 1 1 ... $ Make : Factor w/ 93 levels "Acura Integra",..: 1 2 4 3 5 6 7 9 8 10 ... > > plot(Weight, MPG.highway, main = "scatter plot of 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 좌표를 정확히 모르거나, 한번만 간편하게 그래프 그려서 볼 목적이라면 큰 문제는 없겠습니다.
> # placing text at the point of cursor : locator(1) > text(locator(1), labels = "Low Mileage Per Gallon")
|
다음으로 mtext() 를 사용해서 그래프 외부 마진 영역에 문자를 추가해보는 예제입니다.
title() 함수로 제목을 추가하는 것과 유사한 측면이 있는데요, mtext()의 경우 여러 개의 그래프를 결합했을 때 외부마진에 그래프 전체를 아우리는 제목을 자유롭게 추가할 수 있다는 유용한 장점이 있습니다.
> ## places text in one of the four margins : mtext() > > # Save default par values > op <- par(no.readonly = TRUE) > > # combining 2 graphs in 1 row > par(mfrow = c(1,2), # 1 row, 2 windows + oma = c(2, 2, 4, 1)) # outer margin > > > attach(Cars93)
|
다음번 포스팅에서는 범례(legend) 추가하는 방법에 대해서 알아보겠습니다.
많은 도움 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감 ~♡' 단추를 꾸욱 눌러주세요.^^
'R 분석과 프로그래밍 > R 그래프_시각화' 카테고리의 다른 글
R Graphics 낮은 수준의 그래프 함수 (7) 다각형 추가 : polygon(x, y, ...) (0) | 2016.01.12 |
---|---|
R Graphics 낮은 수준의 그래프 함수 (6) 범례 추가 : legend(x, y, legend, ...) (0) | 2016.01.10 |
R Graphics 낮은 수준의 그래프 함수 (4) 점 추가 : points(x, y) (0) | 2016.01.09 |
R Graphics 낮은 수준의 그래프 함수 (3) 직선 연결, 추가 : lines(x, y), abline(a, b), abline(h=y), abline(v=x) (0) | 2016.01.09 |
R Graphics 낮은 수준의 그래프 함수 (2) XY축 형태 변환 : axis(side, ...) (0) | 2015.12.31 |