ggplot aes_string与交互

时间:2013-03-19 14:30:40

标签: r ggplot2 parameter-passing

使用aes_string可以轻松构造函数以获取参数:

p <- ggplot(mtcars, aes_string(x="mpg", y="wt", group=interaction("cyl","gear"))) + 
     geom_point()

现在编写函数

make_plot <- function(x,y, interact) {
    p <- ggplot(mtcars, aes_string(x=x, y=y, group=interact)) + 
         geom_point()
}

并调用函数

make_plot("mpg","wt",c("cyl","gear"))

但是这里没有使用交互,即它没有被解释。我不想为交互bcos使用单独的变量,相同的功能可以用于其他图。我应该如何制作交互变量,使其被ggplot接受和理解?

1 个答案:

答案 0 :(得分:5)

根据this回答,这应该有效(不引用姓氏):

p <- ggplot(mtcars, aes_string(x=x, y=y, group=paste0("interaction(", paste0(interact, 
    collapse =  ", "), ")"))) + geom_point()