运行 ggplot 创建绘图时的钩子

Running a hook when ggplot creates a plot

我想在每次 ggplot 创建绘图时 运行 一个函数。

使用传统的 R 图形,可以通过添加 "hook" 来实现,如下所示:

setHook('plot.new', my_function)

从他们开始,每次创建情节 my_function 都会执行。

有没有办法用 ggplot 实现同样的效果?

如果你真的想使用hook,你可以使用setHook('grid.newpage', my_function)

例如,

my_function = function() cat('function ran\n')
setHook('grid.newpage', my_function)
ggplot(mtcars, aes(mpg,cyl)) + geom_point()

注意,这还将为其他使用网格图形的 functions/packages 建立挂钩,因此请与 caution/awareness 一起使用。

可能更好的方法是为 ggplot 对象创建一个新的打印方法:

print.ggplot = function(x, ...) {
  my_function()
  ggplot2:::print.ggplot(x, ...)
}