Highcharts - небольшая часть группы круговых / кольцевых диаграмм

Круговую / кольцевую диаграмму будет легче читать, если небольшие части можно будет сгруппировать вместе для других. Я хотел бы добавить эту функцию в zeppelin-highcharts

В этом примере кольцевая диаграмма. В Safari есть небольшие фрагменты, которые невозможно прочитать. Лучше сгруппировать их вместе в «Другие версии Safari».

{
    name: 'Safari versions',
    categories: ['Safari v5.0', 'Safari v5.1', 'Safari v6.1', 
                 'Safari v6.2', 'Safari v7.0', 'Safari v7.1', 'Safari v8.0'],
    data: [0.3, 0.42, 0.29, 0.17, 0.26, 0.77, 2.56],
}

Я хотел бы сгруппировать небольшие части с другими, подобными этому jsfiddle

{
    name: 'Safari versions',
    categories: ['Safari Other Versions', 'Safari v8.0'],
    data: [2.21, 2.56],
}

Я просматриваю документ Highcharts API, но не нашел никакой конфигурации, которая могла бы это включить.

Как я могу реализовать эту функцию в Highcharts?


person Rockie Yang    schedule 05.08.2016    source источник
comment
Рассматривали ли вы использование круговой диаграммы с детализацией? Если вы захотите, это должно быть легко преобразовано в кольцевую диаграмму. См. highcharts.com/demo/pie-drilldown.   -  person Mike Zavarello    schedule 05.08.2016
comment
@MikeZavarello, спасибо за комментарии. Поскольку я предоставляю инструмент, другие пользователи сами выбирают, какую диаграмму использовать. А для одной круговой диаграммы - как сгруппировать небольшие части вместе с другими, чтобы на круговой диаграмме было всего несколько (например, 5) частей.   -  person Rockie Yang    schedule 05.08.2016
comment
Как ваши данные попадают в диаграмму? Я думаю, что, возможно, вы могли бы запустить функцию, в которой сегменты круговой диаграммы меньше определенного процента можно было бы сначала сгруппировать вместе, а затем добавить на диаграмму как данные вашего ряда.   -  person Mike Zavarello    schedule 05.08.2016
comment
Я пытаюсь конвертировать из Spark DataFrame - ›Highcharts. Пожалуйста, проверьте github.com/knockdata/zeppelin-highcharts   -  person Rockie Yang    schedule 05.08.2016
comment
Я думаю, что идея Майка о добавлении функции фильтра перед построением нашей диаграммы - хорошая идея. Вы также можете сделать эту функцию при загрузке функции обратного вызова. Посмотрите на этот пример, возможно, он поможет вам в решении вашей проблемы: jsfiddle.net/b33ynvaq/1   -  person Grzegorz Blachliński    schedule 05.08.2016
comment
@ GrzegorzBlachliński Большое спасибо за решение. Это может решить мою проблему. Вы рассматриваете вариант ответа?   -  person Rockie Yang    schedule 05.08.2016


Ответы (1)


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

Здесь вы можете найти простой пример кода, фильтрующий данные в функции обратного вызова:

var groupSmallData = function(series, number) {
    var groupValue = 0,
        newData = [];
    Highcharts.each(series.data, function(p) {
        if (p.y < number) {
          groupValue += p.y;
        } else {
          newData.push([p.name, p.y])
        }
    });
    newData.push(['others', groupValue]);
    series.setData(newData)
}

Здесь вы можете найти живой пример того, как это может работать: http://jsfiddle.net/b33ynvaq/1/

person Grzegorz Blachliński    schedule 08.08.2016