3

如何在downloadHandler不重新定义的情况下调用使用反应函数创建的绘图?

非工作示例:

# Part of server.R

output$tgPlot <- renderPlot({
 plot1 <-ggplot(iris[iris$Species==input$species,])+geom_point(aes(Sepal.Length ,Sepal.Width))
 print(plot1)

 } ) 



  output$plotsave <- downloadHandler(
    filename = 'plot.pdf',
    content = function(file){
      pdf(file = file, width=12, height=4)
      tgPlot()
      dev.off()
    }
  )

为什么不能调用 tgPlot() in downloadHandler?还有其他方法吗?

4

1 回答 1

5

tgPlot()在其他地方定义的函数吗?我看你从来没有定义过。

您可能希望在您从两个函数引用的常规(非反应性)函数中定义绘图代码,例如:

tgPlot <- function(inputSpecies){
 plot1 <-ggplot(iris[iris$Species==inputSpecies,])+geom_point(aes(Sepal.Length ,Sepal.Width))
 print(plot1)
}

output$tgPlot <- renderPlot({
    tgPlot(input$species)
}) 

output$plotsave <- downloadHandler(
  filename = 'plot.pdf',
  content = function(file){
    pdf(file = file, width=12, height=4)
    tgPlot(input$species)
    dev.off()
  }
)

这为您提供了一个可以生成绘图的函数。然后可以在响应式renderPlot上下文中引用此函数以生成响应式绘图或生成 PDF。

于 2013-10-11T14:41:38.183 回答