Группировка столбцов с накоплением в Highcharter без использования hchart ()

Я пытаюсь создать столбчатую диаграмму с накоплением с группировками с помощью Highcharter, и мне нужно создать ее без использования функции hchart(). У меня есть следующий код (hchart() часть работает).

data <- data.frame(
  building = c("Building A", "Building A", "Building B", "Building B"),
  type = c("Rent", "Owned"),
  measure = c(100, 35, 124, 150),
  measure_target = c(95, 20, 122, 145)
)

# This works
hchart(data, "column", hcaes(x = "building", y = "measure", group = "type")) %>%
  hc_plotOptions(column = list(stacking = "normal"))

# How do we go from the above, to something like this?
highchart() %>%
  hc_xAxis(categories = data$building) %>%
  hc_add_series(type = "column", data = data$measure) %>%
  hc_plotOptions(column = list(stacking = "normal"))

Ожидаемый результат ниже. Конечная цель этого состоит в том, чтобы добавить составные столбцы и следовать за ними с другой серией hc_add_series, которая добавит серию точек в столбец measure_target (для сравнения фактических и целевых значений).

Мне нужно что-то похожее на это:  введите описание изображения здесь

За исключением двух составных полос и одной линии для цели, что-то вроде:

введите описание изображения здесь


person Bogdan Rau    schedule 10.10.2017    source источник


Ответы (1)


Что-то вроде этого?

library(highcharter)
library(dplyr)

data <- data.frame(
  building = c("Building A", "Building A", "Building B", "Building B"),
  type = c("Rent", "Owned"),
  measure = c(100, 35, 124, 150),
  measure_target = c(95, 20, 122, 145)
)

data_lst <- data %>% 
  group_by(type) %>% 
  do(data = list_parse2(.[, c('building', 'measure')])) %>% 
  rename(name = type) %>% 
  mutate(type = 'column') %>% 
  list_parse()


data_lst2 <- data %>% 
  group_by(type) %>% 
  do(data = list_parse2(.[, c('building', 'measure_target')])) %>% 
  rename(name = type) %>% 
  mutate(type = 'scatter') %>% 
  list_parse()


highchart() %>%
  hc_xAxis(categories = data$building) %>%
  hc_add_series_list(data_lst)%>%
  hc_add_series_list(data_lst2)%>%
  hc_plotOptions(series=list(stacking='normal'))

введите здесь описание изображения

person Pork Chop    schedule 10.10.2017
comment
Закрывать. Мне нужно, чтобы точки не были связаны, что, я думаю, можно было бы сделать с помощью разброса, а не линии. Однако я не могу найти list.parse3. Какую версию highcharter вы используете? У меня v 0.5.0.9999 - person Bogdan Rau; 10.10.2017
comment
Я использую версию для разработчиков - person Pork Chop; 10.10.2017
comment
@PorkChop версия dev от 1 года назад: D, list.parseX были заменены на list_parse / list_parse2. - person jbkunst; 11.10.2017
comment
@jbkunst У меня дома была другая версия ^^, которая намного старше. Я обновил ответ, спасибо - person Pork Chop; 11.10.2017
comment
Быстрый комментарий: использование категорий в hc_xAxis создает неправильно помеченные шаги xAxis. Это фактически видно на скриншоте выше (посмотрите, как здание A появляется дважды, а не здание A и здание B). Любые идеи? - person Bogdan Rau; 17.10.2017
comment
Хмммм ... Я не так беспокоюсь о том, чтобы делиться легендами, а скорее правильно определяю точки на оси X. Посмотрите на свой снимок экрана: первая группа стержней помечена как Building A. Вторая группа также помечена как Building A, тогда как это должно быть Building B. Я ошибся? - person Bogdan Rau; 17.10.2017