Highcharts - разверните несколько серий в R - PullRequest
0 голосов
/ 09 мая 2018

Я знаю, что на JS уже был дан ответ, но я надеялся найти решение с использованием highcharter в R. Highcharts - развернуть до нескольких серий

Я новичок в JS, а также не очень знаком с библиотекой highcharter в R, поэтому любая помощь будет принята с благодарностью. Следующий код компилируется, но так как код более экспериментален, чем что-либо еще, он не позволяет мне углубиться в многосерийную диаграмму, как хотелось бы.

DATABrowser = list(list(y= 55.11
                    ,drilldown = list(
                      name = 'MSIE versions',
                      categories = list('MSIE 6.0', 'MSIE 7.0', 'MSIE 8.0', 
'MSIE 9.0'),
                      series = list(list(
                        type = 'spline',
                        name = 'MSIE versions 2000',
                        data = list(10.85, 7.35, 33.06, 2.81)

                      ),list(
                        type = 'spline',
                        name = 'MSIE versions 2010',
                        data  = list (1, 5, 10, 15)
                      ))

                    )),list(y = 21.6),list(y = 11.6),list(y = 7.3),list(y = 
2.6)

)

categories = list('MSIE', 'Firefox', 'Chrome', 'Safari', 'Opera')
name = 'Browser brands'



fn <-"function () {

var drilldown = this.drilldown;
var len = chart.series.length;
var name = null, catergories = drilldown.categories, data = drilldown, type 
=drilldown.type;
chart.xAxis[0].setCategories(categories);
for(var i = 0; i < len; i++){
chart.series[0].remove();
}

if(data.series){
for( i = 0; i < data.series.length; i ++ ){
chart.addSeries({
name: data.series[i].name,
data: data.series[i].data,
type: data.series[i].type,
});
}
} else {
chart.addSeries({
name: name,
data: data,
type: type,

});
}
} 
"

hc = highchart() %>%
hc_chart(type = "column") %>%

hc_title(text = "Basic Drilldown Big Bossing") %>%
hc_xAxis(categories = categories) %>%
hc_add_series(
name = name
,data = DATABrowser
) %>%   hc_plotOptions(
column = list(
  # allowPointSelect = TRUE,
  cursor = "pointer",
  point = list(
    events = list(
         click = JS(fn)
    )
  )
)
)
hc

1 Ответ

0 голосов
/ 10 мая 2018

Функция JS возвращает ошибку

диаграмма не определена

На самом деле у нас нет доступа к диаграмме из события click, но мы можем извлечь еес:

var chart = Highcharts.charts[0]

Таким образом, размещение этого внутри JS вместе с некоторым исправлением опечатки дает нам:

fn <-"function () {
  var chart = Highcharts.charts[0];
  var drilldown = this.drilldown;
  var len = chart.series.length;
  var name = null, 
      categories = drilldown.categories, 
      data = drilldown, 
      type = drilldown.type;
  chart.xAxis[0].setCategories(categories);
  for(var i = 0; i < len; i++){
    chart.series[0].remove();
  }

  if(data.series){
    for( i = 0; i < data.series.length; i ++ ){
      chart.addSeries({
        name: data.series[i].name,
        data: data.series[i].data,
        type: data.series[i].type,
        });
    }
  } else {
    chart.addSeries({
    name: name,
    data: data,
    type: type,

    });
  }
} 
"

Дает нам:

library(highcharter)

highchart() %>%
  hc_chart(type = "column") %>%

  hc_title(text = "Basic Drilldown Big Bossing") %>%
  hc_xAxis(categories = categories) %>%
  hc_add_series(
    name = name
    ,data = DATABrowser
  ) %>%   hc_plotOptions(
    column = list(
      # allowPointSelect = TRUE,
      cursor = "pointer",
      point = list(
        events = list(
          click = JS(fn)
        )
      )
    )
  )

First screen Second screen

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...