▶R의 시각화 패키지 :: The Lattice Plotting System
The Lattice Plotting System in R
- R의 Lattice 플로팅 시스템(이하 Lattice)은 R에서 기본 플로팅시스템과 작동방법이 많이 다르다.
- Lattice는 다차원의 데이터를 사용하려고 할 때, 한번에 많은 플롯을 생성할 수 있다는 점에서 유용하다. 또한 Lattice에서는 기본 플로팅 시스템의 방법을 'mfrow'와 'mfcall'이라는 인수를 통해 활용할 수 있다.
- Lattice는 높은 밀도의 플롯을 효과적으로 그려내는데 최적화 되어있으며, 그밖에 여러 목적에 따라 활용되고있다.
이글에서 'Lattice'에 대해서 다루고있는 내용
- Lattice 시스템의 기능
- Lattice 시스템의 작동원리
- datasets패키지의 데이터를 활용한 스캐터플롯 예제
R의 시각화 패키지 - The Lattice Plotting System
Lattice : 래티스 시스템은 직교형태의 그래픽(Trellis graphic)을 생성하는 코드를 포함하고 있다. 여기서 말하는 기능은 R의 기본그래픽 시스템와는 다른 독립적인 것이다. 예로는 xyplot, bwplot, levelplot등이 있다.
grid : 래티스 시스템의 기능들은 앞서 말했듯이 R의 기본 그래픽시스템과 독립적으로 작동한다. 그리고 래티스 패키지는 그리위 "위에서" 수행된다.
R의 시각화 패키지 - Lattice Functions ① 기본내용
래티스 패키지에서 제공하고 있는 기능은 다양하다.
xyplot : 스캐터플롯을 작성하는데 사용한다. (이것은 아마 래티스패키지에서 가장 중요하다고 할 수 있을 것이다.)
bwplot : 'bw'는 box와 whiskers를 의미한다. box plot으로 이해하면 된다.
histogram : 히스토그램이다. 여기에 대해서는 추가설명 생략.
stripplot : 박스플랏과 비슷하지만 actual point를 함께 표시한 것을 말한다.
dotplot : 바이올린의 줄처럼 생긴 구조 위에 점을 플로팅한다.
splom : 스캐터플롯(산점도) 매트릭스 : 이것은 기본 플로팅시스템의 'pairs'와 비슷하다.
levelplot, contourplot : 이미지 데이터를 플로팅한다.
** contour : (사물의)윤곽 또는 등고선을 말한다.
R의 시각화 패키지 - Lattice Functions ② 표현식
다음은 래티스패키지 활용시에 사용하게되는 코드의 일반적 형태다.
xyplot(y ~ x | f * g, data)
# 래티스에서는 '~' 형태의 표기법을 사용한다.
#'~'를 기준으로 왼쪽은 y축 변수를 가리키며, 오른쪽에는 x축 변수가 들어간다.
+ 위의 코드에서 f와 g는 conditioning variables이며, 이것들은 옵션이다. (*는 두 변수간의 상호관계를 의미) 쉽게말해, 우리가 만약 저 코드로 스캐터플롯을 그리고자 했다면, "f와 g의 모든 수준에 대한" 스캐터플롯을 그리자라는 의미입니다.
- xyplot의 두 번째 변수는, 룩업되어야 하는 데이터프레임(dataframe) 또는 리스트(list)를 의미한다.
- 데이터 프레임이 존재하지 않는 경우에는 작업공간에서 찾게된다.
+ 데이터프레임(data.frame)은 x, y, f, g변수의 위치를 찾을 수 있다.
R의 시각화 패키지 - Lattice 패키지로그리는 간단한 그래프
library(lattice) #lattice library
library(datasets) # 예제에 사용할 데이터를 얻기위한 라이브러리
예제에 필요한 라이브러리를 불러온다.
# datasets의 데이터중 'airquality'데이터를 활용.
str(airquality) # 사용할 데이터의 형태 미리보기
## 'data.frame': 153 obs. of 6 variables:
## $ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ...
## $ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...
## $ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
## $ Temp : int 67 72 74 62 56 66 65 59 61 69 ...
## $ Month : int 5 5 5 5 5 5 5 5 5 5 ...
## $ Day : int 1 2 3 4 5 6 7 8 9 10 ...
xyplot(Ozone ~ Wind, data = airquality)
Ozone이 y축, wind가 x축에 해당하는 것을 확인할 수 있다.
## Convert 'Month' to a factor variable
airqualitys <- transform(airquality, Month = factor(Month))
xyplot(Ozone ~ Wind | Month, data = airqualitys, layout = c(5, 1))
transform()을 사용하여 airquality데이터의 Month열의 데이터를 int에서 factor로 변경한다.
R의 시각화 패키지 - Lattice Behavior
래티스 그래픽 시스템은 R의 기본그래픽 시스템과 동작하는 방법이 다르다.
- 기본그래픽 시스템의 기능은, 그래픽디바이스(화면, 파일출력 등)에 데이터를 플로팅한다.
- 래티스그래픽 시스템의 기능은 바로 그래픽디바이스 단계로 넘어가지 않고, trellis 클래스를 반환한다.
.- 래티스그래픽 시스템에대한 print method를 입력해야만이 그래픽디바이스에 데이터가 플로팅되기 시작한다.
+ 간단하게, 기본그래픽기능으로 그리면 바로 plot창에 뜨고, 래티스기능으로 그리면 바로 plot창에 뜨는 것이 아니라는 것이다. 정말 그럴까? 직접 코드를 실행해보았다.
library(datasets)
library(lattice)
p <- xyplot(Ozone ~ Wind, data = airquality) ##아무결과도 보이지않는다.
print(p) ## plot을 보이게한다.
분명 p라는 변수안에 xyplot의 결과를 담았더니, R이 조용하다. 이 한줄의 명령어만으로는 그래픽디바이스에서 결과값을 출력하고있지 않는다는 것이다. 위의 코드에서 xyplot()의 다음줄인 print(p)명령어로 스캐터플롯을 띄웠다.
개인적으로는 "래티스와 기본 그래픽프로그램 사이에 이러한 차이점이 있구나"정도만 알고넘어가면 될 것 같다. 사실 래티스패키지로 그렸다고해서 항상 이런 특성을 갖는 것도 아니다. 다음은 동일한 데이터에 대해 래티스의 xyplot을 실행한 결과이다.
library(datasets)
library(lattice)
xyplot(Ozone ~ Wind, data = airquality) ### auto-printign!
이와같이, 래티스 그래픽시스템에서는 xyplot()을 어떻게 사용하느냐에 따라서 결과값이 바로 plot창에 프린트되기도하고, print()같은 명령어입력후에 출력되기도 한다.
'시각화 > R' 카테고리의 다른 글
▶R의 데이터시각화 패키지 :: Color Package 활용하기 (2) | 2015.02.27 |
---|---|
▶R의 데이터시각화 패키지 :: ggplot2 ① (2) | 2015.02.14 |
▶비개발자의 R 배우기 ① 경로설정 및 프로젝트 생성 (1) | 2015.02.01 |
▶R로하는 데이터시각화 :: 데이터불러오기 (0) | 2015.01.29 |
▶R로만드는 데이터시각화 :: 히트맵 만들기 (1) | 2014.05.27 |