使用循环索引作为geom函数的参数,在循环中创建ggplots列表

时间:2015-02-19 01:02:41

标签: r for-loop ggplot2

这个循环创建了一个包含3个ggplots的列表,但因为xxend的参数取决于循环的索引,所以沮丧如下:

DF <- data.frame(column1=c(1,2,3,4,5), column2=c(4,5,6,7,8))

list_of_ggplots <- list()

for (num in seq(1:3)){ 
  p <- ggplot()
  p <- p + geom_segment(data=DF, aes(x=column1[num], xend=column2[num], y=1, yend=1))

  list_of_ggplots[[num]] <- p }
list_of_ggplots

我们得到3个图基本上是相同的图(因为在他们被调用的时间点,num是3)。

制作这些地块的更好策略是什么?

2 个答案:

答案 0 :(得分:0)

您可以使用lapply

获取不使用显式循环的列表
list_of_ggplots <- lapply(1:nrow(DF), function(i) {ggplot(DF[i,]) + aes(x=column1, xend=column2, y=1, yend=1)+geom_segment()})

答案 1 :(得分:0)

您可以使用lapply以类似“R”的方式制作列表,然后只使用DFnumscale_x_continuous进行对比,以便在美学方面做到这一点。但是,您还应该使用limits并设置list_of_ggplots <- lapply(1:nrow(DF), function(num) { p <- ggplot() p <- p + geom_segment(data=DF[num,], aes(x=column1, xend=column2, y=1, yend=1)) p + scale_x_continuous(limits=c(0, max(DF$column2))) }) ,否则它们仍然“看起来”相同(除了x轴上的#)

{{1}}