Добавить блестящий график рассеяния в всплывающее окно листовки - PullRequest
0 голосов
/ 08 апреля 2020

Эй, я хочу добавить блестящую диаграмму рассеяния во всплывающее окно, и мне интересно, возможно ли это вообще, и если да, то как? мой код до сих пор выглядит так:

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")
  })

только результаты в пустом всплывающем окне

...