。
在R中使用Plotly库创建图表时,循环中的每个图表都会被覆盖,只有最后一个图表会被显示出来。这是因为Plotly在R中的工作方式是通过JavaScript来渲染图表,而循环中的每个图表都会被添加到同一个JavaScript会话中,最终只有最后一个图表会被保留。
要解决这个问题,可以使用闭包(closure)来创建一个独立的环境,使每个循环迭代都有自己的图表对象。以下是一个示例代码:
library(plotly)
# 创建一个函数,用于生成图表
create_plot <- function(data) {
plot <- plot_ly(data, x = ~x, y = ~y, type = 'scatter', mode = 'markers')
return(plot)
}
# 创建一个空的列表,用于存储每个图表对象
plots <- list()
# 循环中创建图表并将其添加到列表中
for (i in 1:5) {
data <- data.frame(x = runif(10), y = runif(10))
plot <- create_plot(data)
plots[[i]] <- plot
}
# 显示所有图表
subplot(plots)
在这个示例中,我们首先创建了一个函数create_plot
,用于生成图表对象。然后,我们创建一个空的列表plots
,用于存储每个图表对象。在循环中,我们生成了5个随机数据集,并使用create_plot
函数创建了对应的图表对象,然后将其添加到plots
列表中。最后,我们使用subplot
函数将所有图表对象显示在同一个页面上。
这样,我们就能够在循环中创建多个图表,并将它们全部显示出来,而不仅仅是最后一个图表。
领取专属 10元无门槛券
手把手带您无忧上云