提取存储在由purrr制成的列表中的多个图形,并在单个图像中进行绘制

时间:2018-08-09 16:04:38

标签: r list plot purrr

请帮助我了解如何在一张图像中绘制存储在由purrr制成的列表中的所有直方图。 这是一个数据示例:

df <- data.frame(X1 = c(1, 1, 1, 1, 1),
                 X2 = c(1, 2, 1, 3, 2),
                 X3 = c(3, 2, 2, 3, 3))

当我执行下一个命令时,我得到了绘图,可以在查看器中浏览。

df %>% map(~hist(.))

我什至可以通过添加

来命名列表中的元素,对于我的新手来说,这是惊人的。
%>% set_names( . , paste0("hist_" , names(df)))

我希望能够在单个图像中绘制以这种方式获得的列表中存储的所有直方图。如果您还可以解释如何将元素名称传递给每个直方图,那将是非常了不起的。 PS:我知道如何使用facet_wrap和facet_grid绘制同一家族的对象。我认为这不适用于我的问题。也许是gridExtra,但是我不知道怎么做。

1 个答案:

答案 0 :(得分:1)

使用图形参数mfrow

可以在具有基本图形的一页上获得多个图。
 df <- data.frame(X1 = c(1, 1, 1, 1, 1),
                 X2 = c(1, 2, 1, 3, 2),
                 X3 = c(3, 2, 2, 3, 3))
par(mfrow = c(2,2))
res <- df %>% map2(names(df) ,~hist(.x, main = .y)) #updated to make names work

但是正如MrFlick所提到的,您最好使用这样的刻面

library(tidyr)
library(ggplot2)
df %>% gather(var,value) %>% 
  ggplot(aes(x = value))+
  geom_histogram()+
  facet_wrap(~var)