격자 : 하나의 창에 여러 플롯이 있습니까?
levelplot
설정을 사용하여 하나의 창에 여러 격자 플롯을 넣으려고하는데 par(mfrow=c(2,1))
이것을 무시하는 것 같습니다.
여러 플롯을 설정하는 특정 기능이 lattice
있습니까?
'lattice'패키지는 그리드 패키지에 빌드되며 'lattice'가로드 될 때 네임 스페이스를 연결합니다. 그러나 grid.layout
함수 를 사용하기 위해서는 명시 적으로 load()
pkg :: grid 가 필요 합니다. 아마도 더 쉬운 다른 대안 grid.arrange
은 pkg :: gridExtra 의 함수입니다.
install.packages("gridExtra")
require(gridExtra) # also loads grid
require(lattice)
x <- seq(pi/4, 5 * pi, length.out = 100)
y <- seq(pi/4, 5 * pi, length.out = 100)
r <- as.vector(sqrt(outer(x^2, y^2, "+")))
grid <- expand.grid(x=x, y=y)
grid$z <- cos(r^2) * exp(-r/(pi^3))
plot1 <- levelplot(z~x*y, grid, cuts = 50, scales=list(log="e"), xlab="",
ylab="", main="Weird Function", sub="with log scales",
colorkey = FALSE, region = TRUE)
plot2 <- levelplot(z~x*y, grid, cuts = 50, scales=list(log="e"), xlab="",
ylab="", main="Weird Function", sub="with log scales",
colorkey = FALSE, region = TRUE)
grid.arrange(plot1,plot2, ncol=2)
격자 패키지는 종종 (항상은 아니지만)은 무시 파 승 / 플롯 할 때 난 그냥 그것을 사용하지 않도록 명령을 격자 .
단일 페이지에 여러 격자 플롯을 배치하려면 :
격자 / 격자 플롯 객체를 생성 (플로팅하지는 않음)한 다음
각 플롯에 대해 한 번씩 print 호출
각 인쇄 호출에 대해 (i) 플롯에 대한 인수를 전달 합니다 . (ii) more , TRUE로 설정되고 print 에 대한 초기 호출에만 전달되며 (iii) pos 는 플롯의 왼쪽 하단에 대해 xy 좌표 쌍으로 지정된 페이지에서 각 플롯의 위치를 제공합니다. 모서리와 오른쪽 위 모서리, 즉 4 개의 숫자가있는 벡터.
말하는 것보다 보여주기가 훨씬 쉽습니다.
data(AirPassengers) # a dataset supplied with base R
AP = AirPassengers # re-bind to save some typing
# split the AP data set into two pieces
# so that we have unique data for each of the two plots
w1 = window(AP, start=c(1949, 1), end=c(1952, 1))
w2 = window(AP, start=c(1952, 1), end=c(1960, 12))
px1 = xyplot(w1)
px2 = xyplot(w2)
# arrange the two plots vertically
print(px1, position=c(0, .6, 1, 1), more=TRUE)
print(px2, position=c(0, 0, 1, .4))
일단 읽으면 간단합니다 ?print.trellis
. 특히 흥미로운 것은 split
매개 변수입니다. 처음에는 복잡해 보일 수 있지만 의미를 이해하면 아주 간단합니다. 문서에서 :
split : 4 개의 정수 c (x, y, nx, ny)로 구성된 벡터로, nx x ny 플롯의 정규 배열에서 x, y 위치에 현재 플롯을 배치합니다. (참고 : 왼쪽 상단에 원점이 있습니다.)
에서 몇 가지 구현을 볼 수 example(print.trellis)
있지만 여기에 내가 선호하는 구현이 있습니다.
library(lattice)
# Data
w <- as.matrix(dist(Loblolly))
x <- as.matrix(dist(HairEyeColor))
y <- as.matrix(dist(rock))
z <- as.matrix(dist(women))
# Plot assignments
pw <- levelplot(w, scales = list(draw = FALSE)) # "scales..." removes axes
px <- levelplot(x, scales = list(draw = FALSE))
py <- levelplot(y, scales = list(draw = FALSE))
pz <- levelplot(z, scales = list(draw = FALSE))
# Plot prints
print(pw, split = c(1, 1, 2, 2), more = TRUE)
print(px, split = c(2, 1, 2, 2), more = TRUE)
print(py, split = c(1, 2, 2, 2), more = TRUE)
print(pz, split = c(2, 2, 2, 2), more = FALSE) # more = FALSE is redundant
보시다시피, split
4 개의 매개 변수를 사용합니다. 마지막 두 (것과 유사하여 프레임의 크기를 참조 mfrow
반면, 않습니다) 처음 두 매개 변수는에 플롯을 배치 nx
하여 ny
프레임.
참고 URL : https://stackoverflow.com/questions/2540129/lattice-multiple-plots-in-one-window
'developer tip' 카테고리의 다른 글
지속적 통합으로 실행되는 동안 WiX 3.0에서 오류 217이 발생합니다. (0) | 2020.11.24 |
---|---|
Java 클라이언트에서 HTTP 서버로 파일 업로드 (0) | 2020.11.24 |
.net MVC RadioButtonFor ()를 사용할 때 하나만 선택할 수 있도록 그룹화하는 방법은 무엇입니까? (0) | 2020.11.24 |
MySQL CASE는 어떻게 작동합니까? (0) | 2020.11.24 |
에라토스테네스의 체-소수 찾기 파이썬 (0) | 2020.11.24 |