2013-05-20 2 views
0

lapply 함수를 사용하여 플롯이 생성되는 단일 격자 플롯에 여러 격자 플롯을 플롯하는 방법은 무엇입니까?lapply를 사용하여 격자에 다중 격자 플롯 생성 R

다음은 내장 된 mtcars 데이터 세트를 사용하여 지금까지 내가 시도한 것을 보여줍니다.

require(lattice) 

response <- c("cyl","disp","hp","drat") 

par(mfrow=c(2,2)) 

lapply(response, function(variable) { 
    print(xyplot(mtcars$mpg ~ mtcars[variable])) 
}) 

이렇게하면 원하는 플롯이 만들어집니다. 그러나 그것은 par(mfrow=c(2,2)) 명령어를 무시하고 각 플롯을 개별적으로 플로팅하는 것으로 보입니다.

+0

'lapply'가를 반복하도록 설계 목록은 함수를 적용합니다. 각 반환 값은 반환 된 목록의 항목으로 사용됩니다. 값을 반환하지 않으면 'for'가 더 적합합니다. –

+0

예. 'grid' plotting 함수는'par (mfrow =.)'를 무시합니다. '? Lattice'에 대한 도움말 페이지를 자세히 읽어보십시오. –

답변

3

당신이 정말로 사용하지 않을 경우 내장 된 격자의 facetting 또는 뷰포트 옵션, 당신은 다음과 par(mfrow)의 동작을 복제 할 수 있습니다,

require(lattice) 

response <- c("cyl","disp","hp","drat") 

# save all plots in a list 
pl <- lapply(response, function(variable) { 
    xyplot(mtcars$mpg ~ mtcars[variable]) 
}) 

library(gridExtra) 
# arrange them in a 2x2 grid 
do.call(grid.arrange, c(pl, nrow=2)) 
1

귀하의 예는 lattice을 사용하려는 의도가 아닙니다 (grid).

xyplot(mpg ~ cyl+disp+hp+drat, 
     data=mtcars, 
     groups=cyl+disp+hp+drat, 
     scales=list(relation="free"), 
     col="blue" 
) 

enter image description here

+0

격자를 사용하여 전체 기능을 사용하지 않는다는 것을 알고 있습니다. 그러나, 플로팅을 위해 사용하고있는 실제 함수는 매우 복잡하고 격자의면 처리 된 그래픽 기능은 내 목적에 충분하지 않습니다. 그러나 그리드 패키지는 내 문제를 해결합니다. – user2109248

0

this page에 multiplot 기능은 내가 여러 플롯 한 페이지에 객체를 얻기 위해 여러 번 사용 무언가이다 : 여기

lattice 솔루션입니다.

+0

격자와 함께 작동합니까? – baptiste