72

levelplot設定を使用して複数の格子プロットを1つのウィンドウに配置しようとしていますpar(mfrow=c(2,1))が、これを無視しているようです。

で複数のプロットを設定するための特定の機能はありlatticeますか?

4

3 に答える 3

77

「lattice」パッケージは grid パッケージに基づいて構築され、「lattice」がロードされるとその名前空間がアタッチされます。ただし、関数を使用するには、明示的にpkg::gridgrid.layoutを指定する必要があります。load()おそらくより簡単な他の代替手段は、grid.arrangepkg::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)

ここに画像の説明を入力

于 2012-05-02T21:17:50.550 に答える
42

Latticeパッケージはしばしば (常にではありませんが) parコマンドを無視します

複数のラティス プロットを 1 ページに配置するには:

  • ラティス/トレリスプロット オブジェクト作成します(プロットはしません)。

  • プロットごとにprintを 1 回呼び出します

  • print呼び出しごとに、(i) plotの引数を渡します。(ii) TRUEに設定されたmore 。これは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))
于 2010-03-29T19:10:29.130 に答える