2015-09-18 15 views
5

レベルプロット内のプロット領域外にテキストを追加したいとします。次の例では、尖った場所のどこかにテキストが必要です。レベルプロットパネル領域外にテキストを追加

library (raster) 
library(rasterVis) 

f <- system.file("external/test.grd", package="raster") 
r <- raster(f) 
levelplot(r) 

私は成功したmtext関数を試しました。助言がありますか?

mtext("text", side=3, line=0) 

enter image description here

答えて

8

tldr。

下位レベルのグリッドグラフィカル関数を使用してプロットに注釈を付けることができます。この場合、ような何か:

library(grid) 
seekViewport("plot_01.legend.top.vp") 
grid.text("Hello", x=0, y=unit(1,"npc") + unit(0.4, "lines"), just=c("left", "bottom"), 
      gp=gpar(cex=1.6)) 

をrasterVisおよびその他の格子ベースのパッケージは、グリッドグラフィカルシステムではなく、mtext()が一部であるベースのグラフィカル・システムを使用しています。

ここ

グリッドを使用しては、上部の余白プロットが印刷されていることをここで私は0.4ラインビューポート(技術的グリッド用語)の左上隅の上方位置にテキストを追加することについては行くだろう方法です。

  • まず、該当するビューポートの名前を探します。 grid.ls()によって返されたリストの

    library(grid) 
    levelplot(r) 
    grid.ls(viewport=TRUE, grobs=FALSE) ## Prints out a listing of all viewports in plot 
    

    クイックスキャンは、有力候補のように見えますplot_01.legend.top.vpという名前のビューポートを、アップになります。あなたはそれが正しいのかどうかをチェックしたい場合は、(ビューポートへの完全なパスを使用する)は、次のようなもので、その周りに四角形を描くことができます。

    grid.rect(vp = "plot_01.toplevel.vp::plot_01.legend.top.vp", 
          gp = gpar(col = "red")) 
    
  • その後、グリッドを使用して自由自在な座標系で、そのビューポートの左上隅のすぐ上に目的のテキストを配置します。

    ll <- seekViewport("plot_01.legend.top.vp") 
    grid.text("Hello", x = 0, y = unit(1,"npc") + unit(0.4, "lines"), 
          just = c("left", "bottom"), 
          gp = gpar(cex=1.6)) 
    upViewport(ll) ## steps back up to viewport from which seekViewport was called 
    

enter image description here

関連する問題