Shiny htmlWidgets的onRender()函数中的输出

Shiny htmlWidgets的onRender()函数中的输出,shiny,plotly,htmlwidgets,onrender,Shiny,Plotly,Htmlwidgets,Onrender,我的目标是创建一个脚本,其中最初显示一个空白的plotly图形。如果用户单击一个闪亮的操作按钮“添加点”,则点将通过htmlWidgets的onRender()函数添加到plotly图形中。这将非常有效,因为当用户选择闪亮的actionButton时,不需要重新填充背景空白的plotly图形 不过,为了实现这一点,我需要找出一种方法来将闪亮的ActuutButin直接更改为OnReNeDeNe()函数,从而使空白的图形(在下面的代码中称为“PP”)根本不会改变。我在下面的onRender()代码

我的目标是创建一个脚本,其中最初显示一个空白的plotly图形。如果用户单击一个闪亮的操作按钮“添加点”,则点将通过htmlWidgets的onRender()函数添加到plotly图形中。这将非常有效,因为当用户选择闪亮的actionButton时,不需要重新填充背景空白的plotly图形

不过,为了实现这一点,我需要找出一种方法来将闪亮的ActuutButin直接更改为OnReNeDeNe()函数,从而使空白的图形(在下面的代码中称为“PP”)根本不会改变。我在下面的onRender()代码中放置了两行注释行作为if语句,以显示我的目标

我知道有一个名为Shiny.onInputChange('variable',variable)的函数可以在onRender()函数内部调用,以保存在onRender()内部创建的变量,这样它就可以像onRender()函数外部的闪亮输入一样使用。因此,我想我正在寻找一种与之相反的方法(将闪亮的输入值直接传输到onRender()函数中)


ui您可以尝试直接使用一些jQuery来响应用户单击按钮。
onRender
将是:

function(el, x, data) {
  $('#addButton').on('click',function() {
    var Traces = [];
    var trace = {
      x: data.x,
      y: data.y,
      mode: 'markers',
      marker: {
        color: 'green',
        size: 6
      },
      hoverinfo: 'none'
    };
    Traces.push(trace);
    Plotly.addTraces(el.id, Traces);
  })
}
为此,需要首先创建按钮,因此我将您的
ui.R
更改为:

ui <- shinyUI(fluidPage(
  actionButton("addButton", "Add points"),
  plotlyOutput("myPlot", height = 700)
))

您可以尝试直接使用一些jQuery来响应用户单击按钮。
onRender
将是:

function(el, x, data) {
  $('#addButton').on('click',function() {
    var Traces = [];
    var trace = {
      x: data.x,
      y: data.y,
      mode: 'markers',
      marker: {
        color: 'green',
        size: 6
      },
      hoverinfo: 'none'
    };
    Traces.push(trace);
    Plotly.addTraces(el.id, Traces);
  })
}
为此,需要首先创建按钮,因此我将您的
ui.R
更改为:

ui <- shinyUI(fluidPage(
  actionButton("addButton", "Add points"),
  plotlyOutput("myPlot", height = 700)
))

非常有帮助-谢谢!我还希望在动态生成闪亮的UI输入的情况下解决这个问题。我向该目标发布了一条类似的帖子()。如果您想使用
renderUI
,请随意删除其他问题。非常有用-谢谢!我还希望在动态生成闪亮的UI输入的情况下解决这个问题。我为这个目标发布了一个类似的帖子()。如果你想使用
renderUI
,我编辑了答案,如果它有效,请随意删除另一个问题。