4

以下のサンプル データを使用して、以下に示す「手動で」結合されたプロットと同じカラーキーでラスターと空間ポイント プロットを生成するにはどうすればよいですか?

library(rasterVis)
library(raster)
library(colorRamps)
col=colorRampPalette(matlab.like2(255))

s <- stack(replicate(2, raster(matrix(runif(100), 10))))
xy <- data.frame(coordinates(sampleRandom(s, 10, sp=TRUE)),
                 z1=runif(10), z2=runif(10))

levelplot(s, margin=FALSE, at=seq(0, 1, 0.05),col.regions=col)
x=xy$x;y=xy$y;z=xy$z1

levelplot(z ~ x + y,contour=F, panel = panel.levelplot.points, 
          margin=FALSE,col.regions=col,
          par.settings=list(axis.line=list(lwd=3), strip.border=list(lwd=3)),
         cex=1.4, scales=list(x=list(cex=1.7),y=list(cex=1.7)),xlab=list(label="Longitude",cex=2),
          ylab=list(label="Latitude",cex=2))

サンプルプロット

@fdestch のおかげで、以下を使用して次のプロットを生成できました。

latticeCombineGrid(mget(rep("pp", 24)), layout = c(3, 8))

同じカラーキーで複数のプロットを印刷することに関する私のコメントに従ってください。

明確化されていない問題:

1) パネルの順序はどのように決めることができますか? つまり、 をlevelplot使用する場合と同様に、特定のプロットを配置する行と列index.condです。

ここに画像の説明を入力

4

2 に答える 2

4

まず第一に、ポイント プロットのブレークが最初の で定義されたものと同じであることを確認する必要がありますlevelplot

## raster plot with colorkey disabled
pr <- levelplot(s, margin = FALSE, at = seq(0, 1, 0.05), col.regions = col, 
                colorkey = FALSE, xlab = list("Longitude", col = "transparent"))

## points plot 
pp <- levelplot(z ~ x + y, panel = panel.levelplot.points, cex = 1.4, 
                contour = FALSE, margin = FALSE, col.regions = col, 
                colorkey = list(at = seq(0, 1, .05), width = .6, height = .6),
                xlab = "Longitude", ylab = "Latitude")

xlabラスター プロットを作成するときは、透明の定義に注意してください。この小さな回避策は、後で と の実際のプロット境界が重なることを確認するために使用する場合に非常に便利ですdownViewport(すぐに実行して、私の意味を確認してください)。prppgrid.rect()print(pr, newpage = FALSE)

実際のプロット配置は、グリッドパッケージのビューポートを使用して簡単に実現できます。

library(grid)
library(lattice)

## initialize new grid device
grid.newpage()

## add raster plot
vp1 <- viewport(x = 0, y = 0, width = .5, height = 1, 
                just = c("left", "bottom"))

pushViewport(vp1)
print(pr, newpage = FALSE)

## add points plot
downViewport(trellis.vpname("page"))

vp2 <- viewport(x = 1, y = 0, width = .75, height = 1, 
                just = c("left", "bottom"))
pushViewport(vp2)
print(pp, newpage = FALSE)

配置された_プロット

于 2016-04-06T06:50:50.000 に答える
1

を使用した私のソリューションは次のlatticeExtra::c.trellisとおりです。

library(raster)
library(rasterVis)

s <- stack(replicate(2, raster(matrix(runif(100), 10))))
xy <- data.frame(coordinates(sampleRandom(s, 10, sp=TRUE)),
                 z1=runif(10), z2=runif(10))

## Define theme and breaks
myTheme <- BTCTheme()
my.at <- seq(0, 1, 0.05)
  • Raster*以下を使用して、オブジェクトをプロットしrasterVis::levelplotます。

    p1 <- levelplot(s, margin=FALSE,
                        at = my.at,
                        par.settings = myTheme)
    
  • を使用して点をプロットしlattice::levelplotます。

    p2 <- levelplot(z1 ~ x + y, data = xy,
                        at = my.at, 
                        panel = panel.levelplot.points,
                        par.settings = myTheme)
    
  • それらに参加してlatticeExtra::c.trellisください:

    p3 <- c(p1, p2, layout = c(3, 1))
    
  • 残念ながら、c.trellisではストリップ ラベルが正しく割り当てられないため、直接定義する必要があります。

    update(p3,
        strip = strip.custom(factor.levels = c(names(s), "Points")))
    

ラスター + ポイント

于 2016-04-09T07:36:53.993 に答える