在 R Shiny 中使用本地文件 javascript 的 hcmap

Ram*_*mos 5 javascript r shiny

我正在shiny(ui和server)上开发一个应用程序,我想用Highchart包的hcmap函数实现一个地图。但是,在实现地图时,我发现函数 hcmap 与以下站点存在依赖关系:https ://code.highcharts.com/mapdata/ 。

所以我的目标是在不使用互联网连接的情况下以本地方式实现地图,但使用相关的 javascript 文件。我尝试了以下解决方案:我从https://code.highcharts.com/mapdata/检索了 javascript 文件并将其列在 www 目录中,但它没有给我任何好的结果。这是我使用的代码:

library(shinydashboard)
library(shinydashboardPlus)
library(highcharter)
library(shiny)

shinyUI(

dashboardPagePlus(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
fluidRow(box(width = 6,title="map",highchartOutput("map")))
    )
        )
          )

shinyServer(function(input, output) {

output$map=renderHighchart({
data_fake=data.frame(code=c("RZ","MT","TD","OR","FB","SM","MK","DA"
,"GE","LB","OD","TO","TH","GB","CO","GC"),
value=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
                 )

hcmap(map=tags$head(tags$script(src="map.js")), data = data_fake, value = 
"value",joinBy = c("hc-a2", "code"), name = "Fake 
data",download_map_data=FALSE,
dataLabels = list(enabled = TRUE, format = '{point.name}'),
borderColor = "gray", borderWidth = 0.9,
tooltip = list(valueDecimals = 2, valuePrefix = "DH", valueSuffix = " 
MAD"))%>% hc_mapNavigation(enabled = TRUE)
})

})
Run Code Online (Sandbox Code Playgroud)

我希望输出是地图,但不依赖于https://code.highcharts.com/mapdata/站点,即在我的应用程序目录中以本地方式使用 javascript 文件。

使用我使用的代码映射结果:

使用我使用的代码映射结果

Loc*_*ris 0

让我们尝试另一个环岛

  1. 使用trace(hcmap, edit=T)修改 hcmap 来将您所需的地图更改为对象:

像这样:

 if (download_map_data) {
    mapdata <- download_map_data(map)
    return(mapdata)
  }
Run Code Online (Sandbox Code Playgroud)
  1. 单击编辑窗口中的“保存”并执行:my_map <- hcmap("countries/us/us-all-all")将美国地图更改为您想要的地图。

  2. 将 my_map 保存为 RDS:saveRDS(my_map, "my_map.RDS")

  3. 再次编辑 hcmap: trace(hcmap, edit=T),现在您想要读取存储的地图而不是下载它:

    if (download_map_data) { mapdata <- readRDS("my_map.RDS") }

  4. 在编辑窗口中单击“保存”并执行所需的地图:

    p<-hcmap("countries/us/us-all-all", data = 失业, name = "失业", value = "value", joinBy = c("hc-key", "code"), borderColor = "透明") %>% hc_colorAxis(dataClasses = color_classes(c(seq(0, 10, by = 2), 50))) %>% hc_legend(layout = "垂直", 对齐 = "右", 浮动 = TRUE , valueDecimals = 0, valueSuffix = "%") p

如果一切都好的话,我会离线完成这个技巧!