You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:42:42