我有一个简单的shiny 应用程序,我显示了两个图,一个是ggplot
,另一个是dygraph
.此外,我有一个按钮来生成图作为html输出.ggplot
在html输出中呈现完美,但dygraph
没有呈现,而是帮助dygraph
生成的数据正在显示.
如何在html输出中生成dygraph
?
请考虑下面的代码,一个是app. r,另一个是report. rmd
app.R
library(shiny)
library(ggplot2)
library(dygraphs)
report_path <- file.path(tempdir(), "report.Rmd")
file.copy("report.Rmd", report_path, overwrite = TRUE)
render_report <- function(input, output, params) {
rmarkdown::render(input,
output_file = output,
params = params,
envir = new.env(parent = globalenv())
)
}
ui <- fluidPage(
downloadButton("report", "Generate report"),
plotOutput("plot")
)
server <- function(input, output) {
plot_gg <- reactive({
ggplot(data = iris, aes(x=Sepal.Length, y=Petal.Length))+geom_point()
})
output$plot <- renderPlot({
plot_gg()
})
plot_dy <- reactive({
dygraph(nhtemp, main = "New Haven Temperatures", ylab = "Temp (F)")
})
output$report <- downloadHandler(
filename = "report.html",
content = function(file) {
params <- list(
gg_plot = plot_gg(),
dy_plot = plot_dy()
)
callr::r(
render_report,
list(input = report_path, output = file, params = params)
)
}
)
}
shinyApp(ui, server)
report.Rmd
---
title: "Dynamic report"
output: html_document
params:
gg_plot: NA
dy_plot: NA
---
{r}
params$gg_plot
{r}
params$dy_plot
而不是html输出中的dygraph
,它显示如下所示: