В настоящее время я использую highstock для построения графика общего количества доступных товаров в зависимости от времени в течение дня (которое затем обновляется в режиме реального времени).
Если одновременно происходит два изменения общего количества предметов, в highstock я получаю вертикальную черту разницы:
Итак, в моем примере изображения мы начинаем с 4299 вещей, затем удаляются 53 элемента и добавляются 50 (технически одновременно, но это две разные транзакции и две точки). С чистой разницей -3. (или, другими словами, я получаю {x: 5:44:15 и y: 4246, изменение: -53}, {x: 5:44:15, y: 4296, изменение: 50}).
Итак, мой вопрос: возможно ли в highstock объединить эти точки, чтобы избавиться от вертикальной полосы и использовать 4296 в качестве отображаемого значения? Я надеялся, что затем смогу использовать средство форматирования всплывающей подсказки, чтобы прокрутить «this.points» и отобразить изменение -53 и изменение 50 во всплывающей подсказке, чтобы пользователь мог видеть, что привело к чистому изменению -3.
Если это невозможно, я просто сам объединяю точки и передаю всю соответствующую информацию в точку, чтобы сгенерировать всплывающую подсказку (и внешний вид диаграммы), к которой я стремлюсь, но хотел посмотреть, смогу ли я просто использовать все функциональные возможности сначала highstock - и держите эти точки отдельно.
Спасибо!
Редактировать::
new Highcharts.StockChart({
chart : {
renderTo : 'realTimeChart',
zoomType: 'x',
backgroundColor: '#feffdd',
style: {
fontFamily: 'Segoe UI'
},
type: 'spline'
},
plotOptions: {
area: { animation: false },
arearange: { animation: false },
areaspline: { animation: false },
areasplinerange: { animation: false },
bar: { animation: false },
column: { animation: false },
columnrange: { animation: false },
gauge: { animation: false },
line: { animation: false },
pie: { animation: false },
scatter: { animation: false },
series: { animation: false },
spline: { animation: false }
},
xAxis: {
ordinal: false
},
tooltip: {
animation: false,
formatter: function() {
var p = '';
p += '<span style="font-size: 9px;">' + Highcharts.dateFormat('%A, %b %e, %Y %H:%M:%S', this.x) +'</span><br/>';
$.each(this.points, function(i, point){
p += '<span style="color:' + this.series.color + '">' + this.series.name + '</span>: <b>'+ this.y +'</b>';
if (point.point.where) {
p += '<br />' + point.point.where + ' changed by ' + point.point.change + (point.point.who ? ' (' + point.point.who + ')' : '');
}
});
return p;
}
},
rangeSelector: {
buttons: [{
count: 30,
type: 'minute',
text: '30M'
}, {
count: 1,
type: 'hour',
text: '1H'
}, {
count: 6,
type: 'hour',
text: '6H'
}, {
type: 'all',
text: 'Day'
}],
inputEnabled: false,
selected: 1
},
exporting: {
enabled: false
},
series : [{
name : 'Available',
data : data,
lineWidth: 1,
states: {
hover: {
enabled: false
}
}
}]
Данные в формате, который я показал ранее, за исключением того, что x на самом деле в миллисекундах с эпохи:
data = [
{x: 123456789, y: 2000, where: 'Location', change: 40, who: 'Joe'},
{x: 123456789, y: 1960, where: 'Location', change: -40, who: 'Bob'},
...
];