использование сетки для аннотирования графиков решетки за пределами области построения - PullRequest
0 голосов
/ 06 мая 2020

Я часто использую пакет lattice для создания фигур. Затем я использую grid::grid.text() для аннотирования фигур за пределами области построения. Обычно я делаю PDF-файлы, и проблем не возникает.

Теперь мне нужно сохранить свои цифры в других форматах, например PNG. И теперь я обнаружил, что когда я пытаюсь аннотировать за пределами области построения, аннотации обрезаются. Вот небольшой пример:

library(grid)
library(gridExtra)
library(lattice)

myPanel <- function (...) { 
  panel.xyplot(...)
  grid.text("This is a very, very long line", x = .99, y = .5)
}
xyplot(1:10 ~ 1:10, panel = myPanel, par.settings = list(clip = list(panel="off")))

Я могу обойти эту проблему, используя gridExtra::grid.arrange(), но это кажется слишком сложным способом решения простой проблемы. :

myPlot_grob     <- grid.grab(wrap = TRUE)
rectTransparent <- rectGrob(gp = gpar(col = 'transparent', fill = 'transparent'))
grid.arrange(
  grobs = list(
    rectTransparent,
    myPlot_grob,
    rectTransparent),
  ncol = 3,
  widths = unit(c(2, 4, 2), 'inches'))

Есть способ попроще? У меня есть и книга Дипаяна Саркара о решетке, и R Graphics, Пола Мюррелла, но я не нашел в них четкого решения. Есть соответствующие сообщения SO для проблемы, когда она возникает в базовой графике или ggplot , но я не нашел сообщений, посвященных проблеме в решетчатой ​​графике.

1 Ответ

1 голос
/ 06 мая 2020

Вы можете вручную настроить отступы полей.

lattice.options(layout.widths=list(left.padding=list(x=0), right.padding=list(x=5)))

xyplot(1:10 ~ 1:10, panel = myPanel, par.settings = list(clip = list(panel="off")))

enter image description here

Но поскольку это нужно делать вручную, это может быть не идеальным раствор.

...