grid.grab()
захватывает все текущие области просмотра и сохраняет их в виде гроба.Теоретически, и часто на практике, вы можете использовать grid.grab()
, чтобы сохранить изображение для последующего рисования.Но я заметил странное поведение grid.grab()
при работе с выходом решетки.Это связано с аргументом wrap
:
- Когда
wrap = TRUE
, сохраненный гроб должен создать рисунок, верный исходным областям просмотра.Но иногда это не так. - Даже при использовании
wrap = TRUE
, grid.grab()
предупреждает меня о необходимости использования wrap = TRUE
.
Вот минимальный пример, иллюстрирующий эти действия:
library(grid)
library(lattice)
xyplot(1:5 ~ 1:5)
trellis.focus()
panel.abline(h = 3)
panel.abline(h = 5)
myGrob <- grid.grab(wrap = TRUE)
В этот момент я получаю предупреждение -
In grabDL(warn, wrap, ...) :
one of more grobs overwritten (grab WILL not be faithful; try 'wrap = TRUE')
- что странно, учитывая, что я указал wrap = TRUE
.
Я продолжаю работать
grid.newpage()
grid.draw(myGrob)
По словам Пола Меррелла ( R Graphics, 2nd ed., Стр. 239), использование grid.grab(wrap = TRUE)
"гарантированно копирует исходный вывод".Но это не так.В частности, верхняя горизонтальная линия (от panel.abline(h = 5)
) не воспроизводится.
Я запускал этот пример в R 3.3.2 и 3.5.1.Это получается одинаково в обоих случаях.Это ошибки или я что-то упускаю?