R中的光泽和传单更新多边形,无需重新绘制

R中的光泽和传单更新多边形,无需重新绘制,r,shiny,leaflet,R,Shiny,Leaflet,我想能够更新传单中绘制的多边形的属性,而无需再次绘制多边形。这使得它相当慢,而且因为我想将它用于时间序列,所以它们需要快速更新。我添加了一些示例代码,其中按钮更新(多边形的)颜色,但是由于重新绘制,速度很慢。欢迎提出任何建议!我已经重用了一些元素来解决前面的问题,以获得一个下载自己的shapefile的工作示例。期待您的解决方案 # bits of code from: https://stackoverflow.com/questions/29118059/display-spatialpol

我想能够更新传单中绘制的多边形的属性,而无需再次绘制多边形。这使得它相当慢,而且因为我想将它用于时间序列,所以它们需要快速更新。我添加了一些示例代码,其中按钮更新(多边形的)颜色,但是由于重新绘制,速度很慢。欢迎提出任何建议!我已经重用了一些元素来解决前面的问题,以获得一个下载自己的shapefile的工作示例。期待您的解决方案

# bits of code from: https://stackoverflow.com/questions/29118059/display-spatialpolygonsdataframe-on-leaflet-map-with-r

library(rgdal)
library(leaflet)
library(shiny)

download.file(file.path('http://www.naturalearthdata.com/http/',
                        'www.naturalearthdata.com/download/50m/cultural',
                        'ne_50m_admin_0_countries.zip'), 
              f <- tempfile())
unzip(f, exdir=tempdir())

world <- readOGR(tempdir(), 'ne_50m_admin_0_countries', encoding='UTF-8')

#lets grab 20 countries:
commonwealth <- c("Antigua and Barb.", "Australia", "Bahamas", "Bangladesh", 
                  "Barbados", "Belize", "Botswana", "Brunei", "Cameroon", "Canada", "Cyprus",
                  "Dominica", "Fiji", "Ghana", "Grenada", "Guyana", "India", "Jamaica", "Kenya",
                  "Kiribati")
col<-c("red","green", "yellow","blue")


ui <- fluidPage(
  leafletOutput("mymap"),
  p(),
  actionButton("recolor", "New colors")
)

server <- function(input, output, session) {

  points <- eventReactive(input$recolor, {
    sample(col, 20, replace=TRUE)
  }, ignoreNULL = FALSE)

  output$mymap <- renderLeaflet({
    leaflet() %>%
      addProviderTiles(providers$Stamen.TonerLite,
                       options = providerTileOptions(noWrap = TRUE)
      ) %>%
      addPolygons(data=subset(world, NAME %in% commonwealth), weight=2, color=~sample(col, 20, replace=TRUE))
  })

  observe({
    leafletProxy("mymap", data = points()) %>%
    clearShapes() %>%
      addPolygons(data=subset(world, NAME %in% commonwealth), weight=2, color=~points())
  })
}

shinyApp(ui, server)
#代码位来自:https://stackoverflow.com/questions/29118059/display-spatialpolygonsdataframe-on-leaflet-map-with-r
图书馆(rgdal)
图书馆(单张)
图书馆(闪亮)
下载.file(file.path('http://www.naturalearthdata.com/http/',
“www.naturalearthdata.com/download/50m/cultural”,
'ne_50m_admin_0_countries.zip'),

f我很想通过在这里复制另一个答案来获得声誉积分……但这似乎是在这里被问到和回答的: