首页 > 解决方案 > 如何用 plotly 绘制多个图

问题描述

我确实有一个包含近 300 个地块的 plot_list。有没有办法用 plotly 绘制数组中的所有图?我不知道如何创建一个有这么多情节的子情节。

这是我的代码:

plot_list = list()
for(i in 2:length(colnames.no.na.work.df.worldbank.2009)){

  # Create columns for buffer.data.frame to plot
  first.column.buffer <- no.na.work.df.worldbank.2009$`country name`
  second.column.buffer <- round(as.numeric(unlist(no.na.work.df.worldbank.2009[134])))
  third.column.buffer <- round(as.numeric(unlist(no.na.work.df.worldbank.2009[i])))
  colnames.no.na.work.df.worldbank.2009 <- colnames(no.na.work.df.worldbank.2009)

  # Create buffer.data.frame to plot
  buffer.data.frame <- cbind.data.frame(first.column.buffer, second.column.buffer, third.column.buffer, stringsAsFactors = FALSE)
  colnames(buffer.data.frame) <- (c("c", "b", "a"))

  # Safe plot in array
  p <- ggplot(buffer.data.frame, aes(a, b, name = c)) + ggtitle("Title") + theme(plot.title = element_text(hjust = 0.5)) +
    xlab(colnames.no.na.work.df.worldbank.2009[i]) + ylab(colnames.no.na.work.df.worldbank.2009[134]) + geom_point() 
  plot_list[[i-1]] = p
}

标签: rggplot2ggplotly

解决方案


您可以将所有项目放在一个包含在 div 中的列表中,这样您就可以控制样式。使用 uiOutput() 显示它

# You have to provide the plotly plot_list to the function
output$all_plots <- shiny::renderUI({
    all_plots <- list()
    for (n in seq_along(plot_list)) {
        all_plots[[n]] <- div(style="padding:5px; margin: 5px;",plot_list[[n]])
    }
    return(all_plots)
})

推荐阅读