Добавить текст из области панели уровня

Я хочу добавить текст из области заговора в levelplot. В следующем примере мне нужен текст где-то в указанном месте.

library (raster)
library(rasterVis)

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

Я пробовал функцию mtext безуспешно. Какие-либо предложения?

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

введите описание изображения здесь

1 ответ

Решение

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 строки выше верхнего левого угла области просмотра (технический термин сетки), в котором печатается этот верхний полевой график.

  • Сначала найдите название соответствующего видового экрана.

    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
    

Другие вопросы по тегам