交互式 ggplotly 图形不是从 R 中的 `Rmd` 文件中的 `for` 循环内部绘制的
Interactive `ggplotly` graph is not plotted from inside `for` loop in `Rmd` file in R
我试图在 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
按钮。不幸的是,none 的交互式图出现在 .html
文件中。
问题:为什么没有绘制图表?以及如何在 Rmd
文件中结合 for
循环创建交互式绘图?
p.s。如果我使用 print(p)
而不是 print(ggplotly(p))
,ggplot2
图会出现在生成的 .html
文件中。
基于这个github issue,你应该可以做这样的事情:
---
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 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
按钮。不幸的是,none 的交互式图出现在 .html
文件中。
问题:为什么没有绘制图表?以及如何在 Rmd
文件中结合 for
循环创建交互式绘图?
p.s。如果我使用 print(p)
而不是 print(ggplotly(p))
,ggplot2
图会出现在生成的 .html
文件中。
基于这个github issue,你应该可以做这样的事情:
---
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
```