Эй, я хочу добавить блестящую диаграмму рассеяния во всплывающее окно, и мне интересно, возможно ли это вообще, и если да, то как? мой код до сих пор выглядит так:
library(leaflet)
library(shiny)
ui <- fluidPage(
tags$div(id = "garbage"), # Copy this disposal-div
leafletOutput("map"),
plotOutput("scatterplot", width = "250px", height = "250px"),
div(id = "Showcase")
)
server <- function(input, output, session) {
output$scatterplot <- renderPlot({plot(c(1,2,3), c(1,2,3))})
output$popup1 <- renderUI({plotOutput("scatterplot",width = "50px", height = "50px")})
popupMaker <- function(id) {
as.character(uiOutput(id))
};
output$map <- renderLeaflet({
leaflet() %>%
addTiles() %>%
addMarkers(0, 51.4750, popup = popupMaker('popup1')) %>%
# Copy this part - it initializes the popups after the map is initialized
htmlwidgets::onRender(
'function(el, x) {
var target = document.querySelector(".leaflet-popup-pane");
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if(mutation.addedNodes.length > 0){
Shiny.bindAll(".leaflet-popup-content");
}
if(mutation.removedNodes.length > 0){
var popupNode = mutation.removedNodes[0];
var garbageCan = document.getElementById("garbage");
garbageCan.appendChild(popupNode);
Shiny.unbindAll("#garbage");
garbageCan.innerHTML = "";
}
});
});
var config = {childList: true};
observer.observe(target, config);
}')
})
}
shinyApp(ui, server)
в основном адаптировано отсюда: { ссылка }
this:
output$popup1 <- renderUI({
plotOutput("scatterplot",width = "50px", height = "50px")
})
только результаты в пустом всплывающем окне