交互式“ggplotly”图不是从R中的“Rmd”文件中的“for”循环内部绘制的



我试图在R markdown(.Rmd)文件中从for循环内部绘制一系列交互式ggplotly图。我的.Rmd文件的内容:

---
title: "Untitled"
output: html_document
---
```{r}
library(ggplot2) # for plots
library(plotly)  # for interactive plots
# Convert 4 variables to factor variables:
factor_vars <- c("vs", "am", "gear", "carb")
mtcars[factor_vars] <- data.frame(Map(as.factor, mtcars[factor_vars])) 

for (VAR in factor_vars) {
    cat(paste("Factor variable:", VAR))
    # Contents of "VAR" changes inside the loop
    p <- ggplot(mtcars, aes_string(x = "mpg", y = "wt", color = VAR)) + geom_point()
    # Print an interactive plot
    print(ggplotly(p))
}
```

我按下RStudio中的Knit HTML按钮。遗憾的是,.html文件中没有出现任何交互式绘图。

问题:为什么没有绘制图表?如何在Rmd文件中结合for循环创建交互式绘图?

p.s.如果我使用print(p)而不是print(ggplotly(p)),则ggplot2图将显示在生成的.html文件中。

基于这个github问题,您应该能够做这样的事情:

  ---
  title: "Untitled"
  output: html_document
  ---
  ```{r, message = F}
  library(ggplot2) # for plots
  library(plotly)  # for interactive plots
  # Convert 4 variables to factor variables:
  factor_vars <- c("vs", "am", "gear", "carb")
  mtcars[factor_vars] <- data.frame(Map(as.factor, mtcars[factor_vars])) 
  plt <- htmltools::tagList()
  i <- 1
  for (VAR in factor_vars) {
      # Contents of "VAR" changes inside the loop
      p <- ggplot(mtcars, aes_string(x = "mpg", y = "wt", color = VAR)) + 
        geom_point() + 
        ggtitle(paste("Factor variable:", VAR))

      # Print an interactive plot
      # Add to list
      plt[[i]] <- as.widget(ggplotly(p))
      i <- i + 1
  }
  ```
  ```{r, echo = F}
  plt
  ```

相关内容

  • 没有找到相关文章

最新更新