R Package Highcharter: Как развернуть график до столбца с несколькими рядами? - PullRequest
0 голосов
/ 22 января 2019

Я хочу выполнить детализацию до нескольких серий.

Как изменить категории оси x после детализации и при этом сохранить серию?

hc <- highchart() %>%
  hc_chart(type = "column") %>%
  hc_title(text = "Job Ratio") %>%
  hc_xAxis(categories = c("Job A", "Job B")) %>%
  hc_plotOptions(series = list(stacking = "normal")) %>%
  hc_yAxis(max = 100) %>%
  hc_add_series(name = "Completed", 
                data = list(list(y = 40, drilldown = "job-a"), 
                            list(y = 35, drilldown = "job-a"))) %>%
  hc_add_series(name = "No progress", data = c(60, 65)) %>%
  hc_drilldown(
    allowPointDrilldown = TRUE,
    series = list(
      list(
        id = "job-a",
        categories = c("Job A1", "Job A2"),
        series = list(
          list(
            name = "Completed",
            data = list(
              list(y = 55), 
              list(y = 45)
            )
          ),
          list(
            name = "No Progress",
            data = list(
              list(y = 45),
              list(y = 55)
            )
          )
        )
      )
    )
  )
hc

Это начальный график, на котором отображается заданиеРазвертка A приведет к графику 2:

graph 1

Результат детализации из задания A:

graph 2

1 Ответ

0 голосов
/ 24 января 2019

Мне нужно было немного пересобрать твой код.Вам нужно использовать метод chart.addSingleSeriesAsDrilldown () в chart.events.drilldown событии.Это весь ваш код:

hc <- highchart() %>%
  hc_chart(
    type = "column",
    events = list(
      drilldown = JS(
        "function(e) {
          if (!e.seriesOptions) {
            var chart = this;
            chart.addSingleSeriesAsDrilldown(e.point, {
              color: Highcharts.getOptions().colors[0],
              name: 'Completed',
              data: [
                ['Job A1', 40],
                ['Job B1', 35]
              ]
            });
            chart.addSingleSeriesAsDrilldown(e.point, {
              color: Highcharts.getOptions().colors[1],
              name: 'No progress',
              data: [
                ['Job A1', 60],
                ['Job B1', 65]
              ]
            });

            chart.applyDrilldown();
          }
        }"
      )
    )
  ) %>%
  hc_title(text = "Job Ratio") %>%
  hc_xAxis(type = "category") %>%
  hc_plotOptions(series = list(stacking = "normal")) %>%
  hc_yAxis(max = 100) %>%
  hc_add_series(
    name = "Completed", 
    data = list(
      list(name = "Job A", y = 40, drilldown = T), 
      list(name = "Job B", y = 35, drilldown = T)
    )
  ) %>%
  hc_add_series(
    name = "No progress",
    data = list(
      list(name = "Job A", y = 60), 
      list(name = "Job B", y = 65)
    )
  ) %>%
  hc_drilldown(
    series = list()
  )
hc

И здесь вы можете взглянуть на реализацию чистого JS: https://jsfiddle.net/BlackLabel/m089w4yh

API: https://api.highcharts.com/highcharts/chart.events.drilldown

...