проблема функции карты (пакета карт) с повторным рендерингом графика - PullRequest
0 голосов
/ 27 мая 2019

В приведенном ниже коде вы найдете две одинаковые строки:

map("world", fill = TRUE, col = "gray36", bg = "white", xlim = input$lon_slider, ylim = input$lat_slider)

Я включил в приложение два графика. Один с этой командой дважды, только один раз. Теперь, если вы ограничите диапазон долготы от -180 до 0, вы увидите график, по-прежнему содержащий всю Антарктику.

Я поэкспериментировал с этим в отдельном скрипте (без блестящего) и заметил, что при обновлении карты требуется либо выполнить dev.off (), либо дважды выполнить функцию построения. Интересно, откуда это поведение, и если есть более хорошее решение для моей проблемы, тогда повторите выполнение комнада.

library(shiny)
library(maps)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      sliderInput("lon_slider", 
                  label = "Longitude",
                  min = -180,
                  max = 180,
                  value = c(-180, 180)),
      sliderInput("lat_slider", 
                  label = "Latitude",
                  min = -90,
                  max = 90,
                  value = c(-90, 90))),
    mainPanel(plotOutput("map_plot"),
              plotOutput("map_plot2"))
    )
  )

server <- function(input, output) {

  # Creating map plot
  output$map_plot <- renderPlot({
    req(input$lon_slider)
    req(input$lat_slider)
    map("world", fill = TRUE, col = "gray36", bg = "white", xlim = input$lon_slider, ylim = input$lat_slider)
    title(main = "Zoom by selecting a region on this plot.")
  })

  # Creating map plot
  output$map_plot2 <- renderPlot({
    req(input$lon_slider)
    req(input$lat_slider)
    map("world", fill = TRUE, col = "gray36", bg = "white", xlim = input$lon_slider, ylim = input$lat_slider)
    map("world", fill = TRUE, col = "gray36", bg = "white", xlim = input$lon_slider, ylim = input$lat_slider)
    title(main = "Zoom by selecting a region on this plot.")
  })

}

shinyApp(ui, server)

Любая помощь очень ценится.

...