我正在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文件。
使用我使用的代码映射结果:
答案 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)
让我们尝试另一个回旋处
trace(hcmap, edit=T)
修改hcmap以便将所需的地图作为和对象:赞:
if (download_map_data) {
mapdata <- download_map_data(map)
return(mapdata)
}
在编辑窗口中单击“保存”,然后执行:my_map <- hcmap("countries/us/us-all-all")
将我们地图更改为您想要的地图。
将my_map另存为RDS:saveRDS(my_map, "my_map.RDS")
再次编辑hcmap:trace(hcmap, edit=T)
,现在您想读取存储的地图而不是下载它:
if (download_map_data) {
mapdata <- readRDS("my_map.RDS")
}
在编辑窗口中单击“保存”,然后执行所需的地图:
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
一切正常,我将离线进行操作!