2016-06-16 7 views
1

levelplotによって生成されたカラーキーに、たとえばsp.pointsレイヤのキーを追加することはできますか?レベルプロットのカラーキーにsp.pointsキーを追加

は、次の例を見てみましょう:

library(rasterVis) 
library(latticeExtra) 
library(sp) 

r <- as.factor(raster(matrix(rbinom(100, 1, 0.5), 10))) 
levels(r)[[1]] <- data.frame(ID=0:1, z=c('a', 'b')) 
p <- SpatialPoints(matrix(runif(20), 10)) 

levelplot(r, margin=list(draw=FALSE), scales=list(draw=FALSE), 
      col.regions=c('white', 'gray90')) + 
    latticeExtra::layer(sp.points(p, pch=20, col=1)) 

enter image description here

私は、既存のカラーキーの下に、ポイントのキー入力を追加したいと思います。

場しのぎ溶液は、それが所望の位置になるまでxy値を調整する、次のようにlevelplot呼出しに鍵を追加することであるが、(1)右xy値を求めることは、相互作用を必要とする、疼痛であります(2)キーを収容するために右のパディングがリサイズされず、(3)フォントサイズがカラーキーと一致するように自動的に拡大されない。

k <- list(x = 1.02, y = 0.4, corner = c(0, 0), points=list(pch=20, col=1), 
      text=list('foo', cex=0.9)) 

levelplot(r, margin=list(draw=FALSE), scales=list(draw=FALSE), 
      col.regions=c('white', 'gray90'), key=k) + 
    latticeExtra::layer(sp.points(p, pch=20, col=1)) 

enter image description here

私はlatticeグラフィックに固執する必要があると仮定すると、私は上記の問題点を克服するための最良の方法は何ですか?それはあなたが発生したすべての問題を解決していませんが

答えて

1

、多分latticeExtra::mergedTrellisLegendGrob機能はあなたのために有用である:

p1 <- levelplot(r, scales=list(draw=FALSE), 
       col.regions=c('white', 'gray90')) 

myPoints <- SpatialPoints(matrix(runif(20), 10)) 
p2 <- spplot(myPoints, pch=20) 

## Merge graphics 
p <- p1 + p2 

## Merge legends 
l1 <- p1$legend$right 
l2 <- p2$legend$bottom 
ll <- mergedTrellisLegendGrob(l1, l2) 
p$legend$right$fun <- ll 

p 

mergedLegends

+0

おかげでオスカー。 'p2'凡例をレベルプロットのキー(つまり、その上ではなく、その下ではなく)と一直線に並べることは可能ですか? – jbaums

+1

'mergedTrellisLegendGrob'で' vertical'引数を試してみてください。そのデフォルト値は 'FALSE'です(この例のように)。コードを調べると、 'vertical = TRUE'で、この関数は' packGrob'を使って最初の凡例を上に、2番目の凡例を下に置くことが分かりました。多分、これはあなたが必要とするものではないでしょう。代わりに 'packGrob'の' row'と 'col'引数を使って、この関数の最後の行を再利用することができます。 –

関連する問題