我有一个循环用ggplot绘制一些散点图,但我将它们作为单独的图(每个唯一的参与者ID)。 我想每页有多个图表,比如网格。我可能不希望在一个页面上显示所有50个参与者的情节,但是一些合理的安排会很好。 R很新,所以明确的代码或细分受到赞赏。我的代码和谢谢:
for(i in unique(data$id)){
gi <- ggplot(aes(Date, Time), data = subset(data, id == i)) +
geom_point() +facet_grid(~id)
ggsave(filename = sprintf('%s.png', i), plot = gi)
}
到目前为止,我已经尝试过遵循gridExtra格式但收到错误消息。新代码:
gi <- list()
for(i in unique(data$id)){
gi <- ggplot(aes(Date, Time), data = subset(data, id == i)) +
geom_point() +facet_grid(~id)
ggsave(filename = sprintf('%s.png', i), plot = gi)
}
do.call(grid.arrange,gi)
错误消息:$<-.data.frame
中出错(*tmp*
,wrapvp,value = list(x = 0.5,y = 0.5,:
替换有17行,数据有23个
答案 0 :(得分:0)
您是尝试将它们保存为单独的图表(ggsave
做了什么),还是将每个图表添加到列表中(我在gi <- list()
猜测的是什么),或两者兼而有之?
每次运行此循环时,您都会创建一个绘图,然后将其分配给变量gi
。如果您在控制台中键入gi
或print(gi)
,那么您只能获得在该循环中创建的最后一个图表,对吗?如果您尝试将每个绘图作为列表中的项目,则需要将每个绘图附加到列表中。
因此,请执行gi <- ggplot(...)
。
gi <- append(gi, ggplot(...))
我也很困惑你们面对并使用for
循环。看起来您可以放弃循环并使用facet_wrap(~ id)
。