地图功能(地图包)与重新渲染图有关

时间:2019-05-27 13:16:48

标签: r plot shiny maps

在下面的代码中,您会发现两行完全相同:

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)

我们非常感谢您的帮助。

0 个答案:

没有答案