运行 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, ...)
}
我想在每次 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, ...)
}