函数中的'gggrid'附加参数

oxcyiej7  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(95)

gggrid允许使用网格对象(grob)直接修改ggplot2绘图。函数grid_panel()接受grob或函数作为第一个参数。我正在寻找将其他参数传递到此函数的方法(除了datacoords之外)。
只要我坚持使用默认参数,它似乎就可以工作,但是一旦我设置了这个参数,我就得到了一个错误。

library(ggplot2)
library(gggrid)
data("mtcars")

lab1 <- function(data, coords, label = "ABC") {
  textGrob(label)
}

# This works fine
ggplot(mtcars, aes(x=disp, y=mpg)) +
  geom_point() +
  grid_panel(lab1)

# This does not work
ggplot(mtcars, aes(x=disp, y=mpg)) +
  geom_point() +
  grid_panel(lab1(label = "BCD"))
# Error in lab1(label = "BCD") : 
#  argument "data" is missing, with no default
j1dl9f46

j1dl9f461#

使用purrr中的partial。仅添加/修改了以##结尾的行。

library(gggrid)
library(ggplot2)
library(purrr) ##

lab1 <- function(data, coords, label = "ABC") {
  textGrob(label)
}

ggplot(mtcars, aes(x=disp, y=mpg)) +
  geom_point() +
  grid_panel(partial(lab1, label = "BCD")) ##

或者没有任何附加的封装

library(gggrid)
library(ggplot2)

lab1 <- function(data, coords, label = "ABC") {
  textGrob(label)
}

ggplot(mtcars, aes(x=disp, y=mpg)) +
  geom_point() +
  grid_panel(function(...) lab1(..., label = "BCD")) ##

相关问题