Диаграмма R Highchart // сгруппированные категории по оси x

#r #highcharts

#r #старшие диаграммы

Вопрос:

Я хочу создать сложенную столбчатую диаграмму с сгруппированными категориями, как там.

Это мой пример фрейма данных:

 region <- c("bavaria", "bavaria", "bavaria", "bavaria", "berlin", "berlin", "berlin", "berlin")
year <- c(2016, 2016, 2017, 2017, 2016, 2016, 2017, 2017)
month <- c(11, 12, 01, 02, 11, 12, 01, 02)
sales <- c(20, 17, 10, 5, 18, 16, 10, 7)
inc_sales <- c(3, 2, 1, 0, 4, 3, 2, 0)
df <- data.frame(region, year, month, sales, inc_sales)
  

Ось x должна быть сгруппирована по месяцам / годам / регионам, где месяц находится сверху.

Я уже закодировал это, используя только месяц в качестве оси x:

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

highchart() %>% 
      hc_chart(type = "column") %>% 
      hc_title(text = "Sales") %>% 
      hc_xAxis(categories = df$month) %>%
      hc_yAxis(title = list(text = "Sales")) %>% 
      hc_plotOptions(column = list(
        dataLabels = list(enabled = FALSE),
        stacking = "normal",
        enableMouseTracking = TRUE)
      ) %>% 
      hc_series(list(name="sales",data=df$inc_sales),
                list(name="inc_sales",data=df$sales))
  

Может кто-нибудь помочь мне сгруппировать категории?

Комментарии:

1. У вас есть представление о том, чего вы хотите, или что-то подобное?

2. Привет @jbkunst. Это ( i.stack.imgur.com/icqbN.png ) похоже на то, что я хочу в Excel. Вы можете видеть, что я имею в виду, группируя категории по оси x. (Это не те же самые данные, но хороший пример для оси x!)

3. Ммм, не так просто, но возможно ;)! Вам нужно добавить вручную (к настоящему моменту) плагин сгруппированных категорий ( highcharts.com/plugin-registry/single/11/Grouped-Categories ) затем используйте этот пример github.com/jbkunst/highcharter/issues/… чтобы получить rpubs.com/jbkunst/highcharter-issue-172 . Если у меня будет время, я мог бы попытаться сделать то же самое, что и с демонстрационными данными

Ответ №1:

Может быть, вы можете попробовать что-то вроде этого:

 df <- data.frame(region, date=paste(month, year, sep="-"), sales, inc_sales)
df

highchart() %>% 
hc_chart(type = "column") %>% 
hc_title(text = "Some Title") %>%
hc_add_series(name="Sales",data = df$sales  ) %>% 
hc_add_series(name="Inc Sales", data = df$inc_sales) %>%
hc_xAxis(categories = list(
list(
  name =  "Bavaria",
  categories = list("11-2016","12-2016","1-2017","2-2017") 
      ),
list(
  name =  "Berlin",
  categories = list("11-2016","12-2016","1-2017","2-2017") 

)
) )%>%

hc_plotOptions(column = list(stacking = "percent"))
  

Ответ №2:

Опция «Сгруппированные категории» может оказаться полезной: примеры из highcharter