使用函数将多个图存储到列表中

凸轮

我正在尝试将多个生成的图存储ggplot2到列表中。

我试图使用上一个线程中建议的列表函数,但是我很难创建自己的函数来满足自己的需求。

首先,我使用以下代码将基于数据因子的数据框拆分为一个列表:

heatlist.germ <- split(heatlist.germ, f=as.factor(heatlist.germ$plot))

之后,我尝试创建一个列表函数,以后可以使用lapply它。

plot_data_fcn <- function (heatlist.germ) {
  ggplot(heatlist.germ[[i]], aes(x=posX, y=posY, fill=germ_bin)) + 
    geom_tile(aes(fill=germ_bin)) + 
    geom_text(aes(label=germ_bin)) +
    scale_fill_gradient(low = "gray90", high="darkolivegreen4") +
    ggtitle(plot) +
    scale_x_continuous("Position X", breaks=seq(1,30)) +
    scale_y_continuous("Position Y (REVERSED)", breaks=seq(1,20))
  }

heatlist.test <- lapply(heatlist.germ[[i]], plot_data_fcn)

我要完成的两件事:

  1. 将12个ggplots(因此有12个因数plot)存储在列表中。
  2. 创建一个名为“情节[i]萌发”的标题。

任何帮助,将不胜感激。

r2evans

我没有您的数据,因此我将简化绘图机制。

第一个问题是您不应[[i]]在函数中使用引用。只是让您的函数按原样处理数据,它实际上不知道其参数是(在另一个环境中)带有列表的元素。它只知道对象本身。

# a simple plot function
myfunc <- function(x) ggplot(x, aes_string(names(x)[1], names(x)[2])) + geom_point()
# a list of frames, nothing fancy here
datalist <- replicate(3, mtcars, simplify = FALSE)
# just call it ...
myplots <- lapply(datalist, myfunc)
class(myplots[[1]])
# [1] "gg"     "ggplot"

myfunc被调用时,它的参数x仅仅是一个data.frame,该函数具有不知道x是在帧的列表中的第一(或第二或第三)帧。

如果要在第n个框架中包含一个索引,以指示该元素是哪个元素,那么在我看来,这是将数据“压缩”在一起的方式,因此建议使用Map(您也可以使用purrr::imap或相关的tidyverse函数。)

myfunc2 <- function(x, title = "") ggplot(x, aes_string(names(x)[1], names(x)[2])) + geom_point() + labs(title = title)
myplots <- Map(myfunc2, datalist, sprintf("Plot number %s", seq_along(datalist)))
class(myplots[[1]])
# [1] "gg"     "ggplot"

要了解Map与之间的关系lapplylapply(datalist, myfunc)则应了解它与以下内容“关联”:

myfunc(datalist[[1]])
myfunc(datalist[[2]])
myfunc(datalist[[3]])

Map但是,使用,需要一个函数,该函数必须在每个调用中接受一个或多个参数。这样,就Map可以接受与函数接受参数一样多的列表(或向量)。这两个功能是同步的

lapply(datalist, myfunc) # data first,     function second
Map(myfunc, datalist)    # function first, data second

并展开了一个更复杂的呼叫,如下所示:

titles <- sprintf("Plot number %d", seq_along(datalist)) # "Plot number 1", ...
Map(myfunc2, datalist, titles)
# equivalent to
myfunc2(datalist[[1]], titles[[1]])
myfunc2(datalist[[2]], titles[[2]])
myfunc2(datalist[[3]], titles[[3]])

只要参数的长度相同(或长度为1),每个参数是否为true list(如datalist)或矢量(如titles)并不重要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用hibernate createSQLQuery方法将地图存储在列表中

来自分类Dev

使用hibernate createSQLQuery方法将地图存储在列表中

来自分类Dev

使用hibernate createSQLQuery方法将地图存储在列表中

来自分类Dev

R:将图存储到列表中,然后编织到knitr文档中

来自分类Dev

无法将雷达图存储到R对象中

来自分类Dev

将多维地图存储在mongodb中

来自分类Dev

将地图存储在属性文件中

来自分类Dev

将环境中的所有ggplot2图存储在列表中

来自分类Dev

将R个多个循环的输出存储到列表中

来自分类Dev

将Sax解析器数据作为哈希图存储在数组列表中

来自分类Dev

使用python将列表存储到csv文件中

来自分类Dev

如何将列表中的值存储到多个变量(在 python django 中)

来自分类Dev

将多个值存储到字典中

来自分类Dev

将多个输入存储到数组中

来自分类Dev

将多个xmldocument存储到数组中

来自分类Dev

将多个选定的类型为string的单元格从datagridview存储到列表中

来自分类Dev

将函数结果存储到变量中

来自分类Dev

将多个价值存储到隔离存储中

来自分类Dev

将值列表输入到函数中

来自分类Dev

如何使用Java流将多个列表收集到一个列表中?

来自分类Dev

使用存储的计算中的列表编写函数

来自分类Dev

如何使用Meteor将列表中每一行的列值存储到集合中?

来自分类Dev

使用python将列表中的值从数据帧存储到数据库中

来自分类Dev

如何使用 Python 将列表中的嵌套 json 存储到文本文件中?

来自分类Dev

如何将HTML dropdownlist的多个值存储到数组中,并使用PHP以逗号分隔它们?

来自分类Dev

如何使用php将多个字段数据存储到同一变量中?

来自分类Dev

如何将森林图存储在R中要调用的对象中?

来自分类Dev

使用存储过程将值列表插入到SQL Server表中

来自分类Dev

使用对象和方法将文本存储到由定界符分隔的列表中

Related 相关文章

  1. 1

    使用hibernate createSQLQuery方法将地图存储在列表中

  2. 2

    使用hibernate createSQLQuery方法将地图存储在列表中

  3. 3

    使用hibernate createSQLQuery方法将地图存储在列表中

  4. 4

    R:将图存储到列表中,然后编织到knitr文档中

  5. 5

    无法将雷达图存储到R对象中

  6. 6

    将多维地图存储在mongodb中

  7. 7

    将地图存储在属性文件中

  8. 8

    将环境中的所有ggplot2图存储在列表中

  9. 9

    将R个多个循环的输出存储到列表中

  10. 10

    将Sax解析器数据作为哈希图存储在数组列表中

  11. 11

    使用python将列表存储到csv文件中

  12. 12

    如何将列表中的值存储到多个变量(在 python django 中)

  13. 13

    将多个值存储到字典中

  14. 14

    将多个输入存储到数组中

  15. 15

    将多个xmldocument存储到数组中

  16. 16

    将多个选定的类型为string的单元格从datagridview存储到列表中

  17. 17

    将函数结果存储到变量中

  18. 18

    将多个价值存储到隔离存储中

  19. 19

    将值列表输入到函数中

  20. 20

    如何使用Java流将多个列表收集到一个列表中?

  21. 21

    使用存储的计算中的列表编写函数

  22. 22

    如何使用Meteor将列表中每一行的列值存储到集合中?

  23. 23

    使用python将列表中的值从数据帧存储到数据库中

  24. 24

    如何使用 Python 将列表中的嵌套 json 存储到文本文件中?

  25. 25

    如何将HTML dropdownlist的多个值存储到数组中,并使用PHP以逗号分隔它们?

  26. 26

    如何使用php将多个字段数据存储到同一变量中?

  27. 27

    如何将森林图存储在R中要调用的对象中?

  28. 28

    使用存储过程将值列表插入到SQL Server表中

  29. 29

    使用对象和方法将文本存储到由定界符分隔的列表中

热门标签

归档