knk*_*knk 8 r parameter-passing ggplot2
使用aes_string可以轻松构造函数以获取参数:
p <- ggplot(mtcars, aes_string(x="mpg", y="wt", group=interaction("cyl","gear"))) +
geom_point()
Run Code Online (Sandbox Code Playgroud)
现在写这个功能
make_plot <- function(x,y, interact) {
p <- ggplot(mtcars, aes_string(x=x, y=y, group=interact)) +
geom_point()
}
Run Code Online (Sandbox Code Playgroud)
并调用该功能
make_plot("mpg","wt",c("cyl","gear"))
Run Code Online (Sandbox Code Playgroud)
但是这里没有使用交互,即它没有被解释.我不想为交互bcos使用单独的变量,相同的功能可以用于其他图.我应该如何制作交互变量,使其被ggplot接受和理解?
根据此答案,这应该可以工作(不引用名称):
p <- ggplot(mtcars, aes_string(x=x, y=y, group=paste0("interaction(", paste0(interact,
collapse = ", "), ")"))) + geom_point()
Run Code Online (Sandbox Code Playgroud)