我已经阅读了很多关于使用 ggplot 循环来生成大量图表的帖子,但找不到任何可以解释我的问题的帖子......
我有一个数据框,正在尝试遍历 92 列,为每列创建一个新图。我想将每个图保存为单独的对象。当我运行我的循环(下面的代码)并打印图表时,所有图表都是正确的。但是,当我用 assign() 更改 print() 命令时,图表不正确。标题会按应有的方式发生变化,但是图形值都是相同的(它们都是最终图形的值)。我发现这一点是因为当我使用 plot_grid() 生成一个包含 10 个图的图形时,图形标题和轴标签都是正确的,但值是相同的!
我的数据集很大,所以我在下面提供了一个小数据集进行说明。
示例数据名:
library(ggplot)
library(cowplot)
df <- as.data.frame(cbind(group=c(rep("A", 4), rep("B", 4)), a=sample(1:100, 8), b=sample(100:200, 8), c=sample(300:400, 8))) #make data frame
cols <- 2:4 #define columns for plots
for(i in 1:length(cols)){
df[,cols[i]] <- as.numeric(as.character(df[,cols[i]]))
} #convert columns to numeric
情节:
for (i in 1:length(cols)){
g <- ggplot(df, aes(x=group, y=df[,cols[i]])) +
geom_boxplot() +
ggtitle(colnames(df)[cols[i]])
print(g)
assign(colnames(df)[cols[i]], g) #generate an object for each plot
}
plot_grid(a, b, c)
我在想,当 ggplots 绘制绘图时,它只呈现 i 的最终值中的数据?或者类似的东西?有没有解决的办法?
我希望这样做,因为我想制作很多图表,然后我想混合和匹配图表的图表。
谢谢!