从levelplot面板区域添加文本

时间:2015-09-18 20:40:45

标签: r plot raster lattice

我想在levelplot中添加文本区域中的文本。在下面的示例中,我需要在指向位置的某处的文本。

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

我尝试了mtext功能但没有成功。有什么建议吗?

n

enter image description here

1 个答案:

答案 0 :(得分: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行的位置添加文字(技术网格 term)其中打印上边距图。

  • 首先,找到相关视口的名称。

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

    快速扫描grid.ls()返回的列表会打开一个名为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