使用ggplot将“将绘图复制到剪贴板”按钮添加到闪亮的应用程序

问题描述

我想知道是否可以在Shiny中添加一个简单的按钮,以将绘图(特别是ggplot)复制到用户剪贴板。

下面是我到目前为止的代码。当我在Windows中使用R Studio在本地运行该应用程序时,该图确实会复制到我的剪贴板中。但是,首先单击按钮会弹出一个仅包含绘图的新窗口,但是绘图本身已复制到我的剪贴板中。问题是,当我将其部署到Shinyapps.io服务器时,该按钮不起作用-而是使应用程序崩溃(请参见下面的错误日志)。

我想完成的事情:

  1. 将图复制到Shinyapps.io环境中的剪贴板中
  2. 没有弹出一个窗口,它首先显示情节
  3. 理想情况下,我想指定要复制的图的宽度和高度。

我当前的代码

library(ggplot2)
library(shiny)

d <- data.frame(xaxis = c(1,2,3,4,5),ydata = sample(1:500,5))

p <- ggplot(data = d,aes(x = xaxis,y = ydata)) +
  geom_line()



ui <- fluidPage(
  fluidRow(
      plotOutput(outputId = "myplot"),actionButton(inputId = "copyme",label = "copy plot to clipboard")
  )
)

server <- function(input,output) {
  output$myplot <- renderPlot({
    p
  })
  
  observeEvent(input$copyme,{
    dev.new()
    print(p)
    savePlot("clipboard")
    print("copied")
  })
}

shinyApp(ui,server)

shinyapps.io的错误日志:

2020-11-10T16:01:33.648258+00:00 shinyapps[3203167]: Listening on http://127.0.0.1:44881
2020-11-10T16:01:52.749743+00:00 shinyapps[3203167]: Warning: Error in savePlot: can only copy from 'X11(type="*cairo")' devices
2020-11-10T16:01:52.754119+00:00 shinyapps[3203167]:   86: stop
2020-11-10T16:01:52.754120+00:00 shinyapps[3203167]:   85: savePlot
2020-11-10T16:01:52.754121+00:00 shinyapps[3203167]:   84: observeEventHandler [/srv/connect/apps/jrdev/app.R#28]
2020-11-10T16:01:52.754122+00:00 shinyapps[3203167]:   13: runApp
2020-11-10T16:01:52.754122+00:00 shinyapps[3203167]:   12: fn
2020-11-10T16:01:52.754123+00:00 shinyapps[3203167]:    7: connect$retry
2020-11-10T16:01:52.754123+00:00 shinyapps[3203167]:    6: eval
2020-11-10T16:01:52.754123+00:00 shinyapps[3203167]:    5: eval

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...