从 Shiny (R) 下载 png

2024-02-20

我对 Shiny(和 R)还很陌生,并且正在努力将我在 Shiny 中制作的情节导出到 png 文件。

我查看了这两个线程,但无法弄清楚:

保存在闪亮的应用程序中制作的绘图 https://stackoverflow.com/questions/14810409/save-plots-made-in-a-shiny-app Shiny downloadHandler 不保存 PNG 文件 https://stackoverflow.com/questions/24557541/shiny-downloadhandler-dont-save-png-file

我设法在用户界面中创建下载按钮,服务器似乎也在做我想做的一切。当我点击预览窗口中的下载按钮时,会弹出一个窗口,要求我指定文件位置和名称,但不会保存任何文件。当我在浏览器窗口中执行相同操作时,会创建一个 png 文件,但它是空的。

任何见解都非常感激!

ui.R

library(shiny)

shinyUI(fluidPage(
  titlePanel("This is a scatterplot"),

  sidebarLayout(
    sidebarPanel(

      fileInput('datafile', 'Choose CSV file',
                accept=c('text/csv', 'text/comma-separated-values,text/plain')),

      uiOutput("varselect1"),

      uiOutput("varselect2"),

      downloadButton('downloadPlot', 'Download Plot')

      ),

    mainPanel(          
          h4("Here is your scatterplot"),
          plotOutput("plot1")
                  )
      ))
)

server.R

library(foreign)

shinyServer(function(session,input, output) {

    DataInput <- reactive({
      infile <- input$datafile
      if (is.null(infile)) {

        return(NULL)
      }
      read.csv(infile$datapath)
    })


    output$varselect1 <- renderUI({

      if (identical(DataInput(), '') || identical(DataInput(),data.frame())) return(NULL)

      cols <- names(DataInput())
      selectInput("var1", "Select a variable:",choices=c("---",cols[3:length(cols)]), selected=("---"))

    })

    output$varselect2 <- renderUI({

      if (identical(DataInput(), '') || identical(DataInput(),data.frame())) return(NULL)

      cols <- names(DataInput())
      selectInput("var2", "Select a variable:",choices=c("---",cols[3:length(cols)]), selected=("---"))

    })



    plotInput <- reactive({

      a <- which(names(DataInput())==input$var1)
      x_lab <- as.numeric(DataInput()[,a])


      b <- which(names(DataInput())==input$var2)
      y_lab <- as.numeric(DataInput()[,b])      

      main.text <- paste("Scatterplot of the variables",colnames(DataInput())[a],"and", colnames(DataInput())[b],sep = " ", collapse = NULL)

      plot(x_lab, y_lab, main=main.text, xlab=colnames(DataInput())[a], ylab=colnames(DataInput())[b], xlim=c(min(x_lab),max(x_lab)*1.05), ylim=c(min(y_lab), max(y_lab)*1.05))

      observations <- DataInput()[,1]

      text(x_lab, y_lab, labels=observations, pos=3)


    })

    output$plot1 <- renderPlot({
          print(plotInput())
    })


    output$downloadPlot <- downloadHandler(
      filename = "Shinyplot.png",
      content = function(file) {
        png(file)
        print(plotInput())
        dev.off()
      })    

  })  

讨论了这种奇怪情况的解决方法闪亮的讨论谷歌组 https://groups.google.com/forum/#!msg/shiny-discuss/u7gwXc8_vyY/IZK_o7b7I8gJ。你能做的就是改变你的反应plotInput语句转换为普通函数。不知道为什么downloadHandler与反应性对象配合不好。

# change
plotInput <- reactive({...})

# into this
plotInput <- function(){...}

您还可以删除打印语句downloadHandler call:

output$downloadPlot <- downloadHandler(
      filename = "Shinyplot.png",
      content = function(file) {
        png(file)
        plotInput()
        dev.off()
      })    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Shiny (R) 下载 png 的相关文章

随机推荐

  • 从水晶报表中的路径加载动态图像

    我想在我的报告中显示图像 我将图像路径保存在我的 sqlserver 数据库中 现在我想从路径加载图像 我搜索整个互联网并尝试所有指导 我首先将图像插入到我的报告中 然后之后我去 gt Format Editor gt picture gt
  • Linux 中的独立 Python 应用程序

    如何在 Linux 中分发独立的 Python 应用程序 我想我可以理所当然地认为任何现代发行版中都存在最新的 Python 解释器 问题在于处理那些不属于标准库的库 即wxPython scipy python cryptographic
  • 内联定义函数与非内联函数有什么区别?

    我正在读这本书计算机程序的结构和实现 http mitpress mit edu sicp full text book book Z H 4 html在其中一章中 有一些代码用于计算数字的阶乘 define factorial n fac
  • 如何处理“表达式在检查错误后已更改”的特殊情况

    关于这个特定错误 有很多值得阅读的内容 以及一些适用于它所解决的特定实现的解决方案 我不知道它如何适用于我的 我正在根据 FormGroup 是否有效来更改材质扩展面板的背景颜色 我在某些 FormGroup 上有一些复选框表单控件 可以切
  • 如何在 Alexa 中使用带有意图确认的意图链?

    我正在尝试混合对话管理和意图链 我已禁用自动委派 但我被困在 当用户填写所有槽值时 我使用意图确认并提示他数据是否正确 如果用户说 否 我想出于同样的目的重新启动对话管理 但我得到的错误是 指令 Dialog Delegate 只能在对话框
  • Google Cloud Functions Java 11(测试版)运行时 - 性能问题

    我使用 Java 11 测试版 运行时创建了一个新的 Cloud Function 来处理静态站点的 HTML 表单提交 这是一个简单的 3 字段表单 姓名 电子邮件 消息 不涉及文件上传 该函数主要做两件事 使用 BitBucket 创建
  • Foreach 循环中的 PHP 引用对象

    假设我有这些课程 class Foo public data public function addObject obj this gt data objects obj class Bar public data public funct
  • “Docker On Windows”是否启动Linux虚拟机?

    我知道旧的 Docker Toolbox 使用 VirtualBox 为 Docker 运行一个最小的 Linux 虚拟机boot2docker http boot2docker io 这是一个最小的轻量级Linux操作系统 现在 随着新W
  • C++函数体中的常量变量

    我相信我已经理解了 但我只是想确认 如果我有两个功能 function A const Vector3D vectorA 1 0f function B float var const Vector3D vectorB 1 0f var 在
  • GTM 脚本后 dataLayer.push 不起作用

    我想使用 Google 跟踪代码管理器实施增强型电子商务 并且希望为标签 Universal Analytics 推送一些数据 我总是在 GTM 脚本之前创建 dataLayer 但现在我需要使用以下命令发送更多数据dataLayer pu
  • 处理 PDO::prepare() 添加的引号

    根据 PHP 文档 PDO prepare 为所有参数添加引号 这样您就不必担心这样做 准备好的语句的参数不需要加引号 驱动程序会自动处理此问题 如果应用程序专门使用准备好的语句 则开发人员可以确保不会发生 SQL 注入 但是 如果查询的其
  • 如何支持“按请求”范围

    我想从中间件获取用户令牌并将其注入控制器 这可能吗 class TaskController inject private currentUser Post tasks addTask if hasPermission currentUse
  • 在 MATLAB 中将绘制的数据与颜色和尺寸源链接起来

    这个问题与发布的问题相关here https stackoverflow com questions 45527467 visualizing large 3d dataset with scatter plot 其中我概述了我在仿真期间在
  • 在 yiimongodbsuite 中更新插入嵌入文档

    我需要在 yiimongodbsuite 中执行 upsert 命令 我试过 model new Murls model gt userid userid model gt title title model gt edits 0 new
  • 为什么 Future 的 andThen 不链接结果?

    The andThen这意味着我从中学到了answer https stackoverflow com a 20292526 2210478是一个函数作曲家 比如说 f andThen g andThen h 将等于 h g f x 这意味
  • 如何通过代理设置 libGDX 项目

    我正在使用 libgdx 项目创建器 gdx setup jar 设置一个新项目 但是 我在 Windows 计算机上使用代理连接来访问互联网 并且 gdx setup jar 无法检测到设置 因此我无法下载所需的 jar 文件并生成任何项
  • Hyperledger Composer 中的链代码与 Hyperledger Fabric 中的链代码?

    在 Hyperledger Composer 中使用 javascript 编写链代码是否可以实现与在 Hyperledger Fabric 中使用 go 编写链代码相同的功能 与用 go 编写链代码相比 用 JS 编写链代码有哪些限制和好
  • 如何将会话从一台 Tomcat 服务器转移到另一台?

    我们有一个用于网店的 Tomcat 服务器 当用户登录时 我们需要将用户转移到另一个 安全 服务器 以下是详细说明 1 我们有两台 Tomcat 服务器 一台 常规 HTTP 和一台安全 HTTPS 2 用户最初访问常规服务器 3 当他们登
  • 使用 Rails、MySQL 和 Active Record 查询 where date = Date.today

    我在 Active Record 文档中看到 您可以使用大于 小于比较来查询日期 但是 如果您想选择 where date Date today 或者我必须查询 date 大于昨天且小于明天的情况该怎么办 正如您所看到的 我在以下查询中正是
  • 从 Shiny (R) 下载 png

    我对 Shiny 和 R 还很陌生 并且正在努力将我在 Shiny 中制作的情节导出到 png 文件 我查看了这两个线程 但无法弄清楚 保存在闪亮的应用程序中制作的绘图 https stackoverflow com questions 1