hcmap和R Shiny中的本地文件javascript

时间:2019-02-16 15:02:59

标签: javascript r shiny

我正在Shiny(UI和服务器)上开发应用程序,并且我想使用Highchart包的hcmap函数实现地图。但是,在实施地图时,我发现hcmap函数与以下站点有关:https://code.highcharts.com/mapdata/

因此,我的目标是在不使用Internet连接的情况下以本地方式实现地图以及相关的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)
})

})

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

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

Map result with the code I used

2 个答案:

答案 0 :(得分:0)

Ramos!

如果您的Shiny使用的地图数量有限,为什么不简单地将其存储为RDS,而后又可以离线将其检索呢?

data(unemployment)

p<-hcmap("countries/us/us-all-all", data = unemployment,
         name = "Unemployment", value = "value", joinBy = c("hc-key", "code"),
         borderColor = "transparent") %>%
  hc_colorAxis(dataClasses = color_classes(c(seq(0, 10, by = 2), 50))) %>% 
  hc_legend(layout = "vertical", align = "right",
            floating = TRUE, valueDecimals = 0, valueSuffix = "%") 

saveRDS(p, "foo.RDS")

答案 1 :(得分:0)

让我们尝试另一个回旋处

  1. 使用trace(hcmap, edit=T)修改hcmap以便将所需的地图作为和对象:

赞:

 if (download_map_data) {
    mapdata <- download_map_data(map)
    return(mapdata)
  }
  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(“国家/我们/我们所有”,数据=失业人数,          名称=“失业”,值=“值”,joinBy = c(“ hc-key”,“代码”),          borderColor =“透明”)%>%   hc_colorAxis(dataClasses = color_classes(c(seq(0,10,by = 2),50)))%>%   hc_legend(layout =“ vertical”,align =“ right”,             浮点= TRUE,valueDecimals = 0,valueSuffix =“%”) p

一切正常,我将离线进行操作!