flexdashboard中循环生成Plotly图表无法显示的问题排查
问题原因与解决方案
问题根源
你的代码逻辑存在bug,和flexdashboard与Plotly的兼容性无关。你用cat()动态生成markdown代码块的方式,在flexdashboard渲染时只会被当作纯文本输出,不会被解析为可执行的R代码块,所以图表根本没被实际执行生成。
修复后的代码
直接在R代码中循环生成Plotly图表,利用flexdashboard的tabset特性,不需要通过cat()写markdown:
--- title: "flexdashboard with Plotly Loop" output: flexdashboard::flex_dashboard: orientation: rows ---
library(plotly) # 变量向量 vec <- c("Sepal.Width", "Petal.Length", "Petal.Width") ## Rows {.tabset} ```{r, results='asis'} for (yaxis in vec) { # 输出tab标题 cat(paste0("### ", yaxis, "\n")) # 生成并打印Plotly图表 fig <- plot_ly(data = iris, x = ~Sepal.Length, y = ~.data[[yaxis]], type = 'scatter', mode = 'markers') print(fig) # 分隔tab内容 cat("\n\n") }
## 关键改动说明 - 给代码块添加`results='asis'`参数,让R代码中`cat()`输出的markdown文本能被正确解析 - 不再用`cat()`生成整个代码块,直接在R代码里生成并打印图表,仅用`cat()`输出tab标题 - 每个tab内容间添加换行分隔,避免渲染时格式混乱 内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

