我想在每次ggplot创建绘图时运行一个函数。
使用传统的 R 图形,可以通过添加如下所示的"钩子"来实现:
setHook('plot.new', my_function)
从他们开始,每次创建my_function
执行情节时。
有没有办法用 ggplot 实现相同的目标?
如果你真的想使用钩子,你可以使用setHook('grid.newpage', my_function)
例如
my_function = function() cat('function rann')
setHook('grid.newpage', my_function)
ggplot(mtcars, aes(mpg,cyl)) + geom_point()
请注意,这也将为使用网格图形的其他函数/包建立钩子,因此请谨慎使用/注意。
可能更好的是为 ggplot 对象制作一种新的打印方法:
print.ggplot = function(x, ...) {
my_function()
ggplot2:::print.ggplot(x, ...)
}