如何使用 Highcharts 在地图上创建图层过滤器?

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

我有一张类似这样的地图:

https://www.highcharts.com/demo/maps/us-counties

  1. 我想创建一个图层过滤器来显示县级的不同收入群体,类似于这个演示:
    https://www.highcharts.com/demo/maps/data-class-two-ranges

我尝试复制数据类演示中的代码,对每一层使用 hc_add_series。但我如何保持等值线色标?

  1. 当您单击图例功能时,特朗普状态将被停用。我想做同样的事情,但在等值线图中有收入群体。

  2. 我也想将鼠标悬停在一个县上以显示其信息,无论哪个图层可用。现在,如果我激活了所有图层,我只能将鼠标悬停在最新图层上。

  3. 我编写此示例的方式(以及我的 3 层原始代码)非常缓慢且多余。我如何简化它并使运行时间更快?

下面是我的代码——由于某种原因,第 1 组和第 2 组层也没有正确显示。

library(highcharter)
library(dplyr)
library(tidyverse)
library(tidyr)

n <- nrow(unemployment)

unemployment <- unemployment %>% 
                mutate(group = rbinom(n,1,.5))

grp1 <- unemployment %>% filter(group == 1)
grp2 <- unemployment %>% filter(group == 0)

hcmap("countries/us/us-all-all"
      , data = unemployment
      , opacity = .4
      , joinBy = c("hc-key", "code")
      , name = "unemployment rate"
      , borderColor = "#FAFAFA"
      , nullColor = "#d3d3d3"
      , borderWidth = 0.1
) %>% 
  hc_add_series_map(
    name = "Group 1",
    showInLegend = TRUE,   
    map = uscountygeojson,
    df = grp1,
    borderWidth = 0.1,
    value = "value",
    joinBy = c("hc-key", "code"),
    nullColor = "transparent",
    color = "#F28E2B",
    states = list(
      hover = list(
        color = "#A4EDBA"
      )),
    tooltip = list(valueDecimals = 1, 
                   valueSuffix = "%",
                   pointFormat = "{point.name}: {point.value}")
) %>% 
  hc_add_series_map(
    name = "Group 2",
    showInLegend = TRUE,   
    map = uscountygeojson,
    df = grp1,
    borderWidth = 0.1,
    value = "value",
    joinBy = c("hc-key", "code"),
    nullColor = "transparent",
    color = "#F28E2B",
    states = list(
      hover = list(
        color = "#A4EDBA"
      )),
    tooltip = list(valueDecimals = 1, 
                   valueSuffix = "%",
                   pointFormat = "{point.name}: {point.value}")    
) %>% 
  hc_title(
    text = "US Counties Unemployment Rate"
  ) %>% 
  hc_legend(
    layout = "vertical",
    align = "right",
    floating = TRUE,
    backgroundColor = "rgba(255, 255, 255, 0.85"
  ) %>% 
  hc_mapNavigation(
    enabled = TRUE
  ) %>% 
  hc_colorAxis(
    min = 0,
    max = 25,
    tickInterval = 5,
    stops = list_parse2(
      tibble(
        q = c(0, .65,  1), 
        c = c("#500007", "#900037", "#F1EEF6")
        
      )
    ),
    labels = list(
      format = "{value}%"
    )
  ) %>% 
  hc_plotOptions(
      mapline = list(
      showInLegend = FALSE,
      enableMouseTracking = FALSE
    )
) %>% 
  hc_tooltip(
    valueDecimals = 1,
    valueSuffix = "%"
  ) %>% 
  hc_credits(
    enabled = TRUE
  ) %>% 
  hc_exporting(
    enabled = TRUE
  )

我刚开始使用highcharter,对javascript了解不多。我不知道如何将 javascript 文档翻译成 R。非常感谢您的帮助!

r highcharts r-highcharter
© www.soinside.com 2019 - 2024. All rights reserved.