2016-12-22 2 views
1

Я создал диаграмму многослойной области в Highcharts, который вы можете видеть на картинке ниже, и в следующем jsfiddle: http://jsfiddle.net/m3dLtmoz/Highcharts - разрыв между сериями в сложенной гистограмме

2

У меня есть обойти пробелы, которые вы видите, что является сгруппировать данные для каждой серии по месяцам, так что каждая серия выглядит как это вместо:

series: [{ 
     data: [ 
      [1464739200000,2471], 
      [1467331200000,6275], 
      [1470009600000,2574], 
      [1472688000000,7221], 
      [1475280000000,3228] 
     ]} 
    ] 

Хотя выше не совсем то, что я иду, то путь выше, это структура d действительно дает мне то, что я в конечном счете хочу: 3

Я действительно умираю, чтобы узнать, почему исходная установка не работает должным образом. Я тестировал другие экземпляры, где datetimes группируются и группируются правильно на основе одного значения оси x datetime. Я в тупике, почему этот конкретный набор данных не работает. Я попытался использовать опцию dataGrouping в библиотеке Highstock, но не смог эффективно ее интегрировать. Я перепутал варианты, поскольку tickInterval идет безрезультатно. Я попытался установить параметр «stacking: 'normal» в каждой серии, а не в plotOptions, но это не имело никакого значения. Я видел проблемы с github, которые касаются диаграмм с разбивкой по областям, но ничто не похоже на то, что я «м видя любая помощь -. спасибо много

ответ

0

Вы получаете error в консоли Большинство серий требует, чтобы данные отсортированы в порядке возрастания Stacking не имеет ничего сделать с ним, увидеть example

!...

серии, которые не требуют данных для сортировки является рассеивает или многоугольник. No error in scatter

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

function groupData(unsortedData) { 
    var data = unsortedData.slice(); 
    data.sort(function (a, b) { 
     return a[0] - b[0] 
    }); 


    var i = 1, 
     len = data.length, 
     den = 1, 
     sum = data[0][1], 
     groupedData = [[data[0][0], sum]], 
     groupedData = []; 

    for (; i < len; i++) { 
    if (data[i - 1][0] === data[i][0]) { 
     sum += data[i][1]; 
     den++; 
    } else { 
     groupedData.push([data[i - 1][0], sum/den]); 
     den = 1; 
     sum = data[i][1]; 
    } 
    } 

    groupedData.push([data[i-1][0], sum/den]); 
    return groupedData; 
} 

пример: http://jsfiddle.net/e4enhw9a/1/

+0

Ничего как второй набор глаз! Спасибо за подробный ответ! – kryss88ltj

Смежные вопросы