Plotly: `ggplotly` from inside `for` loop in `.Rmd` file does not work

Created on 3 May 2016  路  3Comments  路  Source: ropensci/plotly

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

}

```
``````

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

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

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

Most helpful comment

Is this problem solved? I seem to have the same issue.

All 3 comments

See this comment.

I'll open an issue in our documentation repo to make sure we have better docs of this...

Is this problem solved? I seem to have the same issue.

The current workaround is (based on the example code in the original issue):

plotlist = list()

for (VAR in factor_vars) {
    p <- ggplot(mtcars, aes_string(x = "mpg", y = "wt", color = VAR)) + geom_point()
    plotlist[[VAR]] = ggplotly(p)
}
htmltools::tagList(setNames(plotlist, NULL))

Although I sometimes get memory access errors from pandoc when I try to do this.

Was this page helpful?
0 / 5 - 0 ratings