R中的`Rmd`文件中的`for`循环内部未绘制交互式`ggplotly`图 [英] Interactive `ggplotly` graph is not plotted from inside `for` loop in `Rmd` file in R

查看:72
本文介绍了R中的`Rmd`文件中的`for`循环内部未绘制交互式`ggplotly`图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I tried to plot series of interactive ggplotly graphs from inside for loop in R markdown (.Rmd) file. Contents of my .Rmd file:

---
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文件中没有任何交互式图解.

I push Knit HTML button in RStudio. Unfortunately, none of interactive plots appear in the .html file.

问题:为什么不绘制图形?以及如何结合Rmd文件中的for循环创建交互式绘图?

Question: why the graphs aren't plotted? And how can I create interactive plot in combination with for loop in Rmd file?

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

p.s. If I use print(p) instead of print(ggplotly(p)), ggplot2 plots appear in resulting .html file.

推荐答案

基于此 github问题,您应该能够执行以下操作:

Based on this github issue, you should be able to do something like this:

  ---
  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
  ```

这篇关于R中的`Rmd`文件中的`for`循环内部未绘制交互式`ggplotly`图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆