highcharter - 存储在(闪亮)服务器上的已下载的hcmap()映射在哪里?

时间:2017-04-26 15:04:49

标签: r highcharts shiny r-highcharter

我的设置:我正在使用两个selectizeInputshcmap()联系,以便显示世界地图(此custom/world-palestine-highres),用户可以在其中更改研究所和他们想要看的变量。因此,地图经常被渲染! 在这个过程中,我通过测试/渲染应用程序多次下载地图,直到我在浏览您的存储库时找到options(highcharter.download_map_data = FALSE) - 关于如何使用download_map_data的{​​{3}}不是那么清楚TBH。但是,现在渲染地图而不再重新下载 - >完美!

现在问我的问题:第一次下载时,地图会在哪里存储在服务器上?因为使用我当前的设置,没有用户会再次下载地图(这就是我想要的),但是如果我们必须重新启动服务器或移动文件呢?我只想确保在地图下载方面不必一直为应用程序提供服务。

编辑#1: JBKunst的代码示例,因为新代码没有显示任何数据

我之前用过的hcmap代码:

hcmap("custom/world-palestine-highres", data = datapool_credit, joinBy = c("hc-a2", "Country"), value = capital_variable,
      name = capital_variable,
      dataLabels = list(enabled = TRUE, format = '{point.name}'),
      borderColor = "#FAFAFA", borderWidth = 0.1,
      tooltip = list(valueDecimals = 0, valuePrefix = "€", valueSuffix = "")) %>%
  hc_mapNavigation(enabled = TRUE)

JBKunst建议的新代码:

highchart(type = "map") %>%
  hc_add_series(
    mapData = JS("Highcharts.maps['custom/world-palestine-highres']"),
    data = datapool_credit, joinBy = c("hc-key"), joinBy = c("hc-a2", "Country"), value = capital_variable,
    name = capital_variable,
    dataLabels = list(enabled = TRUE, format = '{point.name}'),
    borderColor = "#FAFAFA", borderWidth = 0.1,
    tooltip = list(valueDecimals = 0, valuePrefix = "€", valueSuffix = "")) %>%
  hc_mapNavigation(enabled = TRUE)

编辑#2:地图使用数据的结构(由于数据隐私原因而更改数字,但不是格式)

> dput(head(datapool_credit))
structure(list(Country = c("AE", "AF", "AL", "AM", "AO", "AQ"
), PD = c(0.506010018321176, 64.350505, 8.94600128868667, 14.29401046096271, 
25.0439479, 3.5626)), .Names = c("Country", "PD"), class = c("data.table", 
"data.frame"), row.names = c(NA, -6L), .internal.selfref = <pointer: 0x244ccb8>)

祝你好运, 马丁

1 个答案:

答案 0 :(得分:0)

您可以使用https://github.com/jbkunst/shiny-apps/tree/master/highcharter-maps-performance

之类的内容

您无需存储地图。相反,用户将每个会话从https://code.highcharts.com/mapdata/custom/world-palestine-highres.js读取一次,就像高图示例一样:

ui.R中,您需要添加地图

# ui.R
...
tags$script(src = "https://code.highcharts.com/mapdata/custom/world-palestine-highres.js")
...

然后在server.R中不要使用hcmap,而是使用highchart()

# server.R
...
highchart(type = "map") %>% 
  hc_add_series(
    mapData = JS("Highcharts.maps["custom/world-palestine-highres"]"),
    data = data, joinBy = c("hc-key")
  )