我想使用purrr包方法创建多个具有相同x但不同y的图。也就是说,我想使用map()或walk()函数来执行此操作。
为简单起见,使用mtcars数据集。
ggplot(data = mtcars, aes(x = hp, y = mpg)) + geom_point()
ggplot(data = mtcars, aes(x = hp, y = cyl)) + geom_point()
ggplot(data = mtcars, aes(x = hp, y = disp)) + geom_point()
修改 到目前为止我已经尝试了
y <- list("mpg", "cyl", "disp")
mtcars %>% map(y, ggplot(., aes(hp, y)) + geom_point()
答案 0 :(得分:7)
这是一种可能性
ys <- c("mpg","cyl","disp")
ys %>% map(function(y)
ggplot(mtcars, aes(hp)) + geom_point(aes_string(y=y)))
就像任何其他地图功能一样,你只需要在功能中正确配置你的美学。
答案 1 :(得分:0)
为此,我做了一些更通用的功能,因为它是EDA协议(Zuur et al., 2010)的一部分。这个article from Ariel Muldoon帮助了我。
update()
其中:
当然,您可以根据需要更改几何和/或美学。该函数返回可以传递给例如cowplot或gridExtra,例如:
plotlist <- function(data, resp, efflist) {
require(ggplot2)
require(purrr)
y <- enquo(resp)
map(efflist, function(x)
ggplot(data, aes(!!sym(x), !!y)) +
geom_point(alpha = 0.25, color = "darkgreen") +
ylab(NULL)
)
}