'Lattice' 시스템에 대해 자세히 알아보자 - trellis 기능: panel (출처: R내 swirl package)

2020. 2. 13. 23:25카테고리 없음

#

# swirl()내 탐색적 데이터 분석(Exploratory Data Course)를 실행해보자.

# 

 

library("swirl")

swirl()

 

Exploratory Graphs 과정에서 6번 플로팅 시스템(6. Lattice Plotting System)을 선택한다.

탐색적 분석 과정의 여섰번째 섹션: 'Lattice' 시스템 - trellis 기능: panel(요약)
- Lattice 그래픽 시스템은 trellis란 클라스 오브젝트를 남긴다. 그래프 정보는 trellis 오브젝트를 통해 정보가 저장되며, print 함수 등을 통해 trellis에서 생성한 오브젝트를 출력하는 단계를 거친다.
- Panel은 trellis 값들 중 하나로, 그래프 표현 방식에 관여한다.

 


  • Lattice 의 trellis 기능

기본 플로팅 시스템은 Lattice와는 달리 직접 그래픽 디바이스(화면 또는 파일 등)에 표현하는데, Lattice 그래픽 시스템은 trellis란 클라스 오브젝트를 남긴다. 즉, Lattice 그래프는 print란 기능의 함수가 trellis에서 생성한 오브젝트를 출력하는 단계를 거친다(Lattice 그래픽 정보를 변수에 담을 수 있다).

 

p <- xyplot(Ozone ~ Wind, data=airquality) # airquality란 데이터에 대해, Wind와 Ozone 값 표현 함수를 p에 저장한다.

 

print(p) # p를 출력한다. p라고 쳐도 된다.

names(p) # p에 있는 속성(properties)을 살펴본다.

총 45개 속상값이 있다.

 

mynames[myfull] #  이중 값이 'null'값이 아닌 것을 살펴보자. swirl 자체적으로 구현한 변수 mynames로 확인한다.

총 29개 변수가 값들이 저장되있다.

 

 

p[["formula"]] # formula안에 담긴 값을 출력한다.

Ozone ~ Wind

 

 

p[["x.limits"]] # x 값의 최소, 최대치를 확인한다.

[1]  0.37 22.03

 

 

table(f) # swirl에서 f란 값에 x에 대한 y값 50개, 랜덤 값 50개를 'f'에 넣었다. table(f)를 실행해보자.

이 나온다.

 

 

xyplot(y~x|f, layout=c(2,1)) # 그룹 2개에 대해, x, y 값을 출력해보자. 데이터는 직접 지정해주미 않으면, 기존 부모 데이터 값을 R에서 자동 참조한다. 레이아웃은 한 행에 2개 그래프를 표현하도록 한다.

> v1 # v1을 실행해보면, 그룹 1에 대한 x, y값의 범위가 나온다.

[1] -2.185287  1.101780 -2.716851  1.569850 

 

처음 2개가 x값의 범위이고, 다음 2개가 y값의 범위이다.

 

> v2 # v2을 실행해보면, 그룹2에 대한 x, y값의 범위가 나온다.

[1] -1.6066772  2.2205197 -0.1605085  2.0341048

myedit("plot1.R") # 위 R 그래프를 그리기 위한 코드를 살펴보자.

p <- xyplot(y ~ x | f, panel = function(x, y, ...) {
  panel.xyplot(x, y, ...)  ## First call the default panel function for 'xyplot'
  panel.abline(h = median(y), lty = 2)  ## Add a horizontal line at the median
})
print(p)
invisible()

 

panel 속성은 2개로, 

첫번째는, 3가지 기본 변수값(x, y, ...) 토대로 그래프를 그리며, 여기서 '...' 은 다른 그래픽 변수값이다. 

두번째는 패널간 구분선을 긋는 형식을 정한다.

 

 

source(pathtofile("plot1.R"), local=TRUE) # 로컬에 저장된 'plot1.R'의 코드를 swirl내 변수값 토대로 실행해보자.

 

> myedit("plot2.R")  # plot2.R 코드를 확인해보자.

p2 <- xyplot(y ~ x | f, panel = function(x, y, ...) {
  panel.xyplot(x, y, ...)  ## First call default panel function
  panel.lmline(x, y, col = 2)  ## Overlay a simple linear regression line
})
print(p2)
invisible()

 

 

source(pathtofile("plot2.R"), local=TRUE) # 로컬 컴퓨터에 저장된 plot2.R에 대해 그래프로 그려보자.