Я считаю, что то, что я пытаюсь выполнить, должно быть довольно распространенной задачей, но мне трудно заставить ее работать. Я просто хочу создать многосерийный график из набора данных, содержащего (для каждой записи) временную метку ISO8601 вместе с несколькими точками данных. Данные представлены в формате JSON, и я использую тип dojox.charting.chart «Линии».
Я уже знаю, что диаграммы Dojo не могут напрямую обрабатывать данные оси времени, не говоря уже об ISO8601. Итак, я уже имел дело с преобразованием оси x в миллисекунды с момента T0 на стороне сервера.
Вот дистиллированный пример выдержки из моего JSON:
[{"Offset_ms":0,"CP":250.58368,"TP":181.88211},
{"Offset_ms":360000,"CP":233.18443,"TP":119.94824},
{"Offset_ms":540000,"CP":227.15465,"TP":117.99422},
{"Offset_ms":720000,"CP":222.87495,"TP":117.55895},
{"Offset_ms":896000,"CP":218.19876,"TP":117.64221},
{"Offset_ms":900000,"CP":219.77487,"TP":117.93475}]
И дистиллированный JavaScript (предположим, что приведенный выше JSON находится в переменной 'sequenceData'):
var chart = new dojox.charting.Chart("sequenceDataGraph");
chart.addPlot("default", {
type: "Lines",
tension: "X"
});
chart.addAxis("x", { labelFunc: labelTimeAxis });
chart.addAxis("y", { vertical: true });
var sequenceDataStore = new dojo.store.Observable(new dojo.store.Memory({
data: {
label: "Sequence",
items: sequenceData
}
}));
addSequenceDataSeries(chart, sequenceDataStore, "TP");
addSequenceDataSeries(chart, sequenceDataStore, "CP");
chart.render();
function addSequenceDataSeries(chart, sequenceDataStore, sColumnName) {
chart.addSeries(sColumnName, new dojox.charting.StoreSeries(sequenceDataStore, { query: {} },
sColumnName));
}
Что, по-видимому, происходит, так это то, что Dojo Chart вообще не использует данные по оси X, а вместо этого отображает каждую точку с фиксированным интервалом на основе количества точек данных. То есть, кажется, что каждой точке данных присвоен порядковый номер, например, если бы Offset_ms было просто 1, 2, 3... Поскольку мои точки данных не всегда находятся с фиксированными интервалами, результирующий график искажен. .
Как указать Dojo Chart использовать поле «Offset_ms» в данных JSON для компонента оси X?
Я просмотрел учебные пособия, документы API и выполнил многочисленные поиски в Google и SO, но безрезультатно. Я даже просмотрел некоторые части исходного кода Dojo, в частности StoreSeries.js.uncompressed.js, но не нашел ответов. Конечно, это возможно, и, надеюсь, тривиально!