Если вы действительно хотите использовать ловушку, вы можете использовать setHook('grid.newpage', my_function)
Например,
my_function = function() cat('function ran\n')
setHook('grid.newpage', my_function)
ggplot(mtcars, aes(mpg,cyl)) + geom_point()
Обратите внимание, это также установит ловушку для других функций / пакетов, которыеиспользуйте сеточную графику, поэтому используйте с осторожностью / осознанностью.
Вероятно, лучше создать новый метод печати для объектов ggplot:
print.ggplot = function(x, ...) {
my_function()
ggplot2:::print.ggplot(x, ...)
}