首页 > 解决方案 > 如何为列表中的多个数据框图添加标题?

问题描述

我正在尝试使用 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 还是很陌生。

标签: rggplot2

解决方案


您可以尝试使用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)
})

推荐阅读