Как я могу переключать мой ZingChart между ежемесячными / квартальными / полугодовыми приращениями?

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

Date        Score
...
11/16/2012  14.30
12/14/2012  14.40
01/25/2013  12.10
02/22/2013  12.30
03/22/2013  16.10
04/26/2013  13.60
05/24/2013  16.80
06/21/2013  16.50
07/26/2013  16.20
08/23/2013  16.00
09/27/2013  13.60
10/25/2013  12.60
11/29/2013  8.00

Я использую ZingChart для отображения этих данных на линейном графике. Я пытаюсь предоставить пользователю возможность полной настройки, включая возможность изменять данные с ежемесячных (по умолчанию) на квартальные или полугодовые. Например, если пользователь выбирает "ежеквартально", он должен показываться только каждые 3 месяца (в обратном направлении - поэтому будут отображаться данные за 11/29, 8/23, 5/24 и т. Д.).

Как я могу заставить ZingChart показывать только каждый n-й пункт? (И переключаться между этими приращениями легко)

1 ответ

Я вижу, что это более старый вопрос, но, надеюсь, мой ответ поможет вам, если вы все еще работаете с ZingChart.

Это можно сделать, вызвав метод api setseriesdata, чтобы изменить данные ряда, чтобы отображать только те точки, которые вы хотите, когда пользователь изменяет интервал. В этой демонстрации я реализовал простой HTML <select> элемент для создания выпадающего меню.

<select id="interval">
<option value=1>Monthly</option>
<option value=2>Quarterly</option>
<option value=3>Semi-Annually</option>
</select>

Я слушаю изменения в раскрывающемся меню, используя событие JQuery .change(), и изменяю данные ряда в зависимости от того, какая опция была выбрана.

$('#interval').change(function(){
var select = document.getElementById("interval");
var selVal = select.options[select.selectedIndex].value;
if(selVal==1){
    zingchart.exec("zc", "setseriesdata", {
        "plotindex":0,
        "data":{
        "values":[[1353024000000,14.3],[1355443200000,14.4],[1359072000000,12.1],[1361491200000,12.3],[1363910400000,16.1],[1366934400000,13.6],[1369353600000,16.8],[1371772800000,16.5],[1374796800000,16.2],[1377216000000,16.0],[1380240000000,13.6],[1382659200000,12.6],[1385683200000,8.0]]
        }
    });
}
else if(selVal==2){
//setseriesdata API call with quarter data here
}
else if(selVal==3){
//setseriesdata API call with semi-annual data here
}
});

Еще несколько вещей:

Вы можете использовать "зеркальный" логический атрибут в вашем объекте "scale-x", чтобы инвертировать данные в этом масштабе.

ZingChart использует время Unix (в миллисекундах) для ряда времени / даты.

Обязательно просмотрите исходный код демо-страницы, чтобы увидеть полный код.

Другие вопросы по тегам