运行循环创建绘图对象并将其显示在 Flexdashboard 中

问题描述 投票:0回答:1

我正在 Flexdashboard 中运行一个循环,生成绘图对象。但是,不会打印任何图表。代码中是否存在错误,或者flexdashboard和plotly之间是否存在兼容性问题?

---
title: "flexdashboard with Plotly Loop"
output: 
  flexdashboard::flex_dashboard:
    orientation: rows
---

```{r}
    library(plotly)
    
    # Your vector of variables
    vec <- c("Sepal.Width", "Petal.Length", "Petal.Width")
    
    # Start a flexdashboard tabset
    cat("## Rows {.tabset}\n")
    
    # Loop through each variable
    for (yaxis in vec) {
      
      # Display the heading for the tab
      cat(paste0("### ", yaxis, "\n"))
      
      # Start the Plotly chart chunk
      cat("```{r}\n")   
      
      # Create the Plotly chart
      fig <- plot_ly(data = iris, 
                     x = ~Sepal.Length, 
                     y = ~.data[[yaxis]], 
                     type   = 'scatter', 
                     mode   = 'markers')
      
      # Print the chart
      print(fig)
      
      # End the chunk
      cat("```\n") 
    }

``
r loops plotly flexdashboard
1个回答
0
投票

调整我对 this post 的回答,它处理标准 R-Markdown 文档的相同问题,您可以像这样循环创建绘图图表:

  1. 确保包含 JS 依赖项,为此我添加了一个代码块,它在我设置的循环之外创建一个空的绘图图表。

    
    

  2. 无需使用
  3. include=FALSE

    添加代码块的代码。实际上这不起作用,因为这只会在编织时将代码添加到您的降价中。但是,该代码块将不会被处理。

    
    

  4. 相反,将你的情节包裹在
  5. cat()

    htmltools::tagList()
    结果中。
    
    

  6. 最后,添加块选项
  7. print

    
    

  8. 完整的可重现代码:

results='asis'

© www.soinside.com 2019 - 2024. All rights reserved.