#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