使用 Highcharts 地图创建点击弹出窗口

问题描述 投票:0回答:1

我正在使用 Highcharts 创建密歇根州各县的地图。到目前为止我的代码如下:

hcmap(  
"countries/us/us-mi-all",   
data = dataframe,   
value = "distance",   
joinBy = c("name", "county"),   
name = "Distance",   
dataLabels = list(enabled = TRUE, format = "{point.name}"),   
borderColor = "#FAFAFA",   b
orderWidth = 0.1,   
tooltip = list(pointFormat = "<b>{point.name}</b> <br><br> <b>Distance</b>: {point.value:.1f} Miles <br><b>Total</b>: {point.n_total}")) |>  
hc_title(text="<b>Distance by County</b>", style=list(color="#FAFAFA", useHTML=TRUE, fontSize='25px'))  

我将地图托管在 R Shiny 仪表板上,并希望创建在用户单击地图上的县时出现在同一页面上的弹出窗口,其中包含有关每个县的附加信息(此信息存储在数据框的其他列中) 。此地图中的弹出窗口正是我正在寻找的内容(尽管带有信息表而不是饼图),但我在将其转换为我的代码时遇到了麻烦:https://jsfiddle.net/api/post /库/纯/

我尝试使用上面的 jsfiddle 链接,还尝试使用plotOptions 参数来创建单击时出现的弹出窗口,但我无法使其工作。每当我尝试使用plotOptions时,我总是收到“找不到对象‘系列’”错误。非常感谢任何帮助!

r highcharts maps
1个回答
0
投票

我使用

highcharter
包文档中使用的示例数据重新创建了一个示例。

mapdata <- get_data_from_map(download_map_data("custom/usa-and-canada"))

data_fake <- mapdata |>
  select(code = `hc-a2`) |>
  mutate(value = 1e5 * abs(rt(nrow(mapdata), df = 10)))

hcmap(
  "custom/usa-and-canada",
  data = data_fake,
  value = "value",
  joinBy = c("hc-a2", "code"),
  name = "Fake data",
  dataLabels = list(enabled = TRUE, format = "{point.name}"),
  borderColor = "#FAFAFA",
  borderWidth = 0.1,
  allowPointSelect = TRUE,
  tooltip = list(
    valueDecimals = 2,
    valuePrefix = "$",
    valueSuffix = "USD"
  )
) |> hc_plotOptions(
  series = list(
    events = list(
      click = JS(
        "function(event){ alert(this.name + ' clicked') }"
      )
    )
  )
)

关键是用

list()
替换每个大括号实例,然后 R 就可以在函数中接受 JavaScript,只要它用
JS()
括起来,并且实际的 JavaScript 通过用双引号括起来作为字符传递,例如,
JS("custom JavaScript here")
。但是,此单击事件不会复制您提供的示例 jsfiddle 链接。您可能需要替换示例中使用的 JavaScript 函数,并根据您的数据集的需要进行定制。

© www.soinside.com 2019 - 2024. All rights reserved.