Карта High Charter с возможностью детализации - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть датафрейм со штатами США и их округами, как показано ниже:

State<-c("Alabama","Alabama","Alaska","Alaska")
StateCode<-c("AL","AL","AK","AK")
County<-c("AUTAUGA","BALDWIN","ANCHORAGE","BETHEL")
CountyCode<-c("AL001","AL003","AK020","AK050")
Murder<-c(5,6,7,8)
d<-data.frame(State,StateCode,County,CountyCode, Num)

Моя цель - создать развернутую карту штата-округа, такую ​​как эта карта старших диаграмм ,После нахождения сводки Murder по каждому штату я создал фрейм данных, подобный приведенному ниже:

data("USArrests", package = "datasets")
USArrests <- add_rownames(USArrests, "state")

(я использую USArrests, потому что он похож на мой оригинальный набор данных в своей форме, чтобы использовать егокак пример)

Затем я использую этот высокоуровневый метод github , чтобы создать карту детализации

library("highcharter")
library("purrr")
library("dplyr")
library("viridisLite")

data("USArrests", package = "datasets")
data("usgeojson")
data("uscountygeojson")

names(usgeojson)
names(usgeojson$features[[1]])

usgeojson$features <- usgeojson$features %>% 
  map(function(x){
    x$properties$code <- gsub("us-", "", x$properties$code)
    x$properties$name <- x$properties$woename
    x$drilldown <- x$properties[["code"]]
    x$value <- ceiling(abs(rnorm(1)*2))
    x$properties$value <- x$value

    x
  })

names(usgeojson$features[[1]])

names(usgeojson$features[[1]]$properties)
usgeojson$features[[1]]$properties

USArrests <- add_rownames(USArrests, "state")

fn <- JS("function(e){  if (!e.seriesOptions) {  alert(e.point.drilldown) } }")
fn2 <- JS("function () { this.setTitle(null, { text: 'USA' });  }")

highchart(type = "map") %>%
  hc_chart(
    events = list(
      drilldown = fn,
      drillup = fn2
      )
    ) %>% 
  hc_colorAxis(min = 0, minColor = "#FAFAFA", maxColor = "#2D2D2D") %>% 
  hc_series(
    list(
      data = USArrests %>% select(name = state, value = Murder) %>% list_parse(),
      mapData = usgeojson,
      joinBy = "name",
      # data = usgeojson,
      # type = "map",
      name = "USA",
      dataLabels = list(
        enabled = TRUE,
        format = "{point.properties.code}"
      )
    )
  ) %>% 
  hc_drilldown(
    activeDataLabelStyle = list(
      color = '#FFFFFF',
      textDecoration = 'none',
      textShadow = '0 0 3px #000000'
    ),
    drillUpButton = list(
      relativeTo =  'spacingBox',
      position = list(x = 0, y = 60)
    )
  ) 

Карта состояний может быть создана, но развертка отсутствуетспособность и мое предположение, потому что нет никакой связи между моим начальным кадром данных с данными на уровне округа с новым.Кто-нибудь знает, как заставить это работать?

...