여러 줄거리로 구성된 여러 줄거리로 구성된 줄거리를 만들고 싶습니다. 예를 들어 각 셀에 3 개의 줄이있는 5x2 격자를 말하고 싶습니다. 더 정확히 말하면, 필자가 필요로하는 것은 한 가지 그림이 아니라 하나의 플롯에서 여러 번 플로팅 기능을 사용하는 방법을 찾는 것입니다.중첩 된 레이아웃 R
레이아웃을 사용하여 외곽에 공통 축을 갖는 플롯을 쌓는 함수를 작성했습니다. TraMineR 패키지의 seqIplot 및 seqdplot 함수에 실제로 필요합니다. 그러나 문제는 해당 문제와 관련이 없으므로 여기서 barplot을 사용한 최소한의 작업 예제가 나와 있습니다.
layout(matrix(c(1:2), nrow=1))
stackedplot(list(1:10, 10:1, rep(1,10)))
stackedplot(list(rep(1,10), 1:10, 10:1))
:
stackedplot <- function(data){
layout(matrix(c(1:3), nrow=3))
par(mar=c(0,0,0,0), oma=c(4,1,1,1), mgp=c(3,0.5,0), cex=1)
barplot(data[[1]], axes=F, xlab="", ylab="", horiz=TRUE)
barplot(data[[2]], axes=F, xlab="", ylab="", horiz=TRUE)
barplot(data[[3]], axes=F, xlab="", ylab="", horiz=TRUE)
axis(1, at=c(0:10)/10, outer=TRUE)
mtext("Label", line=2, side=1)
}
stackedplot(list(1:10, 10:1, rep(1,10)))
내가 뭘하고 싶은 다시 레이아웃 같은 것을 사용하고, 즉, 레이아웃, (물론, 작동하지 않는,)이 같은의 그리드에 대한 stackedplot을 사용하는 것입니다
내가 성공하지, split.screen을 시도 :
split.screen(c(1,2))
screen(1)
stackedplot(list(1:10, 10:1, rep(1,10)))
screen(2)
stackedplot(list(rep(1,10), 1:10, 10:1))
close.screen(all = TRUE)
나는 또한 그리드 패키지를 시도
,하지만 분명히 그것은 기본 그래픽과 호환되지 않습니다.
grid.newpage()
pushViewport(viewport(x=0, y=0, width=0.5, height=1,
default.units="native"))
print(stackedplot(list(1:10, 10:1, rep(1,10))), newpage=FALSE)
pushViewport(viewport(x=0.5, y=0, width=0.5, height=1,
default.units="native"))
print(stackedplot(list(rep(1,10), 1:10, 10:1)), newpage=FALSE)
AFAIK는 중첩 된'layout's은 불가능합니다. 그리고'split.screen'은'layout'과 섞이지 않는 것으로 기록되어 있습니다. – Roland
TraMineR에서 문제가 발생하면 seqIplot (group = NULL, withlegend = FALSE)을 사용할 수 있으며 TraMineR은 layout 명령을 호출하지 않습니다. –
고마워, 마티아스.그러나이 문제는 TraMineR과 직접적으로 관련이있는 것 같지는 않지만 모든 (기본) 그래픽과 함께 제공됩니다. 현재 gridBase 패키지는 "중첩 된 레이아웃"을 그리는 데 유망 해 보입니다. – Satu