如何在Shiny中使用renderPlot()将R绘图导出到多页PDF?

时间:2018-10-31 15:57:24

标签: r pdf plot shiny multipage

我被迫输出不在静态设备中的多个图。但是我使用renderPlot在Shiny中动态创建了可变数量的绘图。我可以使用renderPlot中的函数pdf()为每个设备成功创建单独的pdf文件。

我已尝试制作here和其他类似文章中指定的多页pdf文件。但是,以我为例,创建的pdf文件的内容已损坏(大小为7 kb),无法打开。简化后的代码如下。

for (PlotI in 1:PlotN)
{
  poObject <- plotOutput(outputId = PlotI)
  insertUI(selector = '#AnyPlaceHolder', where = "beforeBegin", 
           ui = poObject, multiple = FALSE, immediate = FALSE)
} # for PlotI
fnPDF <- paste0(tempdir(), '\\', 'plot.pdf')
pdf(file = fnPDF, width = 7, height = 4, onefile = TRUE, title = 'R output',
    paper = 'a4', pointsize = 1/PlotResolution, compress = TRUE)
for (PlotI in 1:PlotN)
{
  local(
    {
      PlotJ <- PlotI
      output[[PlotJ]] <- renderPlot(
        {
          opar <- par(no.readonly = TRUE)
          par(mar = c(2,4,2,0.5))
          plot(AnyTimeSeries[[PlotJ]])
          par(opar)                
        } 
      ) # renderPlot
    }
  ) # local
} # for PlotI
dev.off()

怎么了?

0 个答案:

没有答案