如何解决在没有渲染函数的情况下在 R Shiny 中显示 Plotly Plot
我想在不使用渲染函数的情况下用 HTML 显示 Plotly 绘图,我已经研究过 htmltools
和 htmlwidgets
但还没有找到解决方案。我可以使用 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 举报,一经查实,本站将立刻删除。