首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:闪亮不能读取数据来绘制。

R:闪亮不能读取数据来绘制。
EN

Stack Overflow用户
提问于 2018-08-25 11:18:18
回答 1查看 77关注 0票数 1

一切都是可复制的,包括要绘制的数据。

我正在绘制一张基本地图,但数据没有被服务器读取。

它没有加载geojson文件来绘制地图,我需要手动输入这一行以使其工作:

如果没有,R告诉它找不到秘鲁的对象:

代码语言:javascript
复制
 peru <- geojsonio::geojson_read("https://raw.githubusercontent.com/juaneladio/peru-geojson/master/peru_departamental_simple.geojson", what = "sp")

有什么不对的?

代码语言:javascript
复制
library(shiny)
library(dplyr)
library(DT)
require(leaflet)
library(readr)




ab <- reactive({


      ventas_agosto_16 <- data.frame("FECHA_PED" = 1:25,  "DEPARTAMENTO" = c("LIMA", "AREQUIPA", "LA LIBERTAD",
                                                                             "MOQUEGUA","HUANUCO","CUSCO",        
                                                                             "PIURA","CALLAO","CAJAMARCA",    
                                                                             "UCAYALI","JUNIN","ICA",          
                                                                             "LAMBAYEQUE","AMAZONAS","ANCASH",       
                                                                             "AYACUCHO","LORETO","SAN MARTIN",   
                                                                             "TACNA","MADRE DE DIOS","PUNO",         
                                                                             "TUMBES","PASCO","APURIMAC",     
                                                                             "HUANCAVELICA"),
                                     "TOTAL_PEDIDO" = runif(n = 25, min = 2, max = 25))


      peru <- geojsonio::geojson_read("https://raw.githubusercontent.com/juaneladio/peru-geojson/master/peru_departamental_simple.geojson", what = "sp")


      peru$ventas <- ventas_agosto_16$TOTAL_PEDIDO

      peru

})



server <- function(input, output) {






  output$mymap <- renderLeaflet({




    pal <- colorBin("YlOrRd", domain = peru$ventas, bins = 5)


    labels <- sprintf(
       "<strong>%s</strong><br/>%g soles",
       peru$NOMBDEP, peru$ventas
     ) %>% lapply(htmltools::HTML)



    leaflet(peru) %>%
      setView(-75, -10, 4) %>%
      addProviderTiles("MapBox", options = providerTileOptions(
        id = "mapbox.light",
        accessToken = Sys.getenv('MAPBOX_ACCESS_TOKEN'))) %>%
      addPolygons(
        fillColor = ~pal(ventas),
        weight = 2,
        opacity = 1,
        color = "white",
        dashArray = "3",
        fillOpacity = 0.7,
        highlight = highlightOptions(
          weight = 3,
          color = "#666",
          dashArray = "",
          fillOpacity = 0.7,
          bringToFront = TRUE),
        label = labels,
        labelOptions = labelOptions(
          style = list("font-weight" = "normal", padding = "3px 8px"),
          textsize = "15px",
          direction = "auto")) %>%
      addLegend(pal = pal, values = ~ventas, opacity = 0.7, title = NULL,
                position = "bottomright")

  })


}

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-25 14:08:37

您就快到了,只需在服务器函数中移动reactive,并将“调用”ab()重新分配到renderLeaflet中的peru,以便与其余代码一起顺利执行。

代码语言:javascript
复制
ui <- fluidPage(
       leafletOutput(outputId='mymap', width = "100%", height = 400)
       )

server <- function(input, output, session) { #session is an important argument for server function 

     ab <- reactive({ ....

           })

     output$mymap <- renderLeaflet({
           #browser()
           peru <- ab()  
      ....
  }

shinyApp(ui, server)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52016769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档