2017-06-21 68 views
-1

我想创建使用purrr软件包方法具有相同x但不同y的多个图。也就是说,我想使用map()或walk()函数来执行此操作。ggplot使用咕噜声map()来绘制相同的x与多个y的

为简单起见使用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() 
+2

你尝试过什么吗?你卡在哪里? – aosmith

+0

我曾尝试创建一个我的y变量'列表(“mpg”,“cyl”,“disp”)列表,并将其用作map()中的.x参数。对于.f参数。我用'ggplot(data =。,aes(x = hp,y = y))+ geom_point()'。请注意,我已经从mtcars的map函数管道开始,这样我可以用'.'调用数据。我从下面的答案中学到了(感谢MrFlick),aes_string()函数可以用于调用您的美学。我也不清楚如何使用匿名函数或公式来产生期望的结果。 – tictacjoe

回答

1

这是一种可能性

ys <- c("mpg","cyl","disp") 
ys %>% map(function(y) 
    ggplot(mtcars, aes(hp)) + geom_point(aes_string(y=y))) 

它就像任何其他的地图功能,你只需要正确配置美学在函数中。

+0

感谢您的帮助! – tictacjoe