微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在没有渲染函数的情况下在 R Shiny 中显示 Plotly Plot

如何解决在没有渲染函数的情况下在 R Shiny 中显示 Plotly Plot

我想在不使用渲染函数的情况下用 HTML 显示 Plotly 绘图,我已经研究过 htmltoolshtmlwidgets 但还没有找到解决方案。我可以使用 insertUI 函数在没有渲染函数的情况下渲染 Plotly 图,如下所示:

library(shiny)

# Define UI for application that draws a histogram
ui <- fluidPage(
    
    #shiny::singleton(
    #    tags$head(tags$script(src = "custom_message_handler.js"))
    #),div(
        id = "placeholder"
    )

)

# Define server logic required to draw a histogram
server <- function(input,output) {

    shiny::insertUI(
        "#placeholder","beforeBegin",ui = shiny::tagList(plotly::plot_ly(x = rnorm(100),y = rnorm(100)))
    )
    
    #shiny::observe({
        
     #   panel_plot(
      #      item = shiny::tagList(plotly::plot_ly(x = rnorm(100),y = rnorm(100)))
        #)
        
    #})
}

# Run the application
shinyApp(ui = ui,server = server)

但是,当我拥有自己的自定义消息处理程序时,Plotly 图将不会呈现。我想将 Plotly 图发送到 Javascript,我想在占位符 id 之后插入 Plotly 图。如何将 Plotly 图的输出发送到 JavaScript,然后像 insertUI 函数那样显示它?

这就是我到目前为止关于我自己的自定义消息处理程序的方式

panel_plot <- function(item,session = shiny::getDefaultReactiveDomain()) {
    session$sendCustomMessage(
        type = 'plots',message = list(panel = as.character(item))
    )
}

# Javascript/jQuery
$(function() {
  Shiny.addCustomMessageHandler('plots',function(message) {

    var panel_plot = $.parseHTML(message.panel);
    $(panel_plot).insertAfter($('#placeholder'));

  });
});

shiny::observe({
panel_plot(
            item = shiny::tagList(plotly::plot_ly(x = rnorm(100),y = rnorm(100)))
        )
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?