r - 使用 for 循环生成 ggplots 网格

标签 r loops for-loop ggplot2

最近几天我一直被这个问题困扰着。

for(i in 1:10){
  nam <- paste("A", i, sep = "")
  p <- ggplot(data=PCdf8, aes(x = 1:nrow(PCdf8), y = PCdf8[,i])) +
    geom_line(colour = "#0072B2", size = 0.5) 
  assign(nam, p)
}

grid.arrange(A1, A2, A3, A4, A5, A6, A7, A9, A10)

我的代码将同一图(#10,顺便说一句)的网格吐出 10 次,而不是 10 个不同的图。

我尝试将它们写入一个空列表,但非 grob 与 grid.arrange() 不兼容。我也尝试过删除非 grobs。我求助于将每个情节写入对象 A1 到 A10。我也试过在每个循环的末尾删除“nam”……不过,这个循环似乎产生了 10 个对象,A1 到 A10,具有相同的情节,这意味着循环中的最后一个情节被恼人地写入了所有对象。

我想将其扩展到大约 100 个地 block 。所以,我想做类似的事情:

grid.arrange(A1:A100)

我尝试使用不同的 seq() 和 paste() 组合,但没有成功。

我在这里和网上看到过类似的问题,但找不到可行的解决方案。

谢谢。

最佳答案

我建议采用不同的方法。将数据从宽改造成长,然后使用分面。

library(dplyr)
library(tidyr)
library(ggplot2)

# Example data frame
df1 <- as.data.frame(matrix(rnorm(100), ncol = 10, nrow = 10))
df1 %>% 
  mutate(x = 1:nrow(df1)) %>% 
  gather(var, val, -x) %>% 
  ggplot(aes(x, val)) + geom_line() + facet_wrap(~var, ncol = 5)

enter image description here

关于r - 使用 for 循环生成 ggplots 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43989647/

相关文章:

r - 为最后五个元素创建一个最多有两个向量的向量

r - 将子组标签添加到ggplot2中的抖动图

python - while循环在python中打印列表

r - 相同维度的两个矩阵之间的 Spearman 相关性

Java for 线程中的循环

java - 计算数字中不重复的数字

python - 使用for循环的pandas dataframe concat不起作用

r - 检测距离另一个元素一定距离内的数值向量元素

r - 确定 TRUE 和 FALSE 序列中最后 TRUE 的位置

python - 如何将 MySQL fetchall() 结果迭代到 tinter 列表框和中心结果中