R中的`Rmd`文件中的`for`循环内部未绘制交互式`ggplotly`图 [英] Interactive `ggplotly` graph is not plotted from inside `for` loop in `Rmd` file in R
问题描述
我试图从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屋!