如何在列表中的多个数据帧图上添加标题?

时间:2019-05-08 14:44:51

标签: r ggplot2

我正在尝试使用ggplot为包含在名为“ list1”的列表中的20个数据帧(“ df1”-“ df20”)创建图。列表如下所示:

list1 <- list(df1, df2, ..., df20)

每个数据框都有两列,我想相互绘制z和y:

df1
z  y
1  6
2  9
3  7

我创建了以下代码,该代码也可以使用,但是没有为绘图提供从df1到df20的相应标题:

lapply(list1, function(x) 
  ggplot(data = list1$x) + 
    geom_line(mapping = aes(x = x$z, 
                          y = x$y)))

我尝试将所有名称放入向量中,并将该向量包含在如下代码中:

titlenames <- c(df1, df2, ..., df20)

+ ggtitle(titlenames) 

但这仅提供所有图的名字。

感谢您的帮助,因为我对R还是很陌生。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用mapply(类似于lapply,但首先使用该函数,并且可以遍历多个等长列表/向量),并使用数据列表和名称的向量:

mapply(function(df, titlename) {
    ggplot(data = df) + 
        geom_line(mapping = aes(x = z, y = y)) +
        ggtitle(titlename)
}, list1, titlenames)

我发现,由于mapply的格式与lapply不同,因此很难记住。软件包purrr提供了我认为更干净的替代方法:

purrr::map2(list1, titlenames, function(df, titlename) {
    ggplot(data = df) + 
        geom_line(mapping = aes(x = z, y = y)) +
        ggtitle(titlename)
})