gpt4 book ai didi

javascript - 来自 JSON 的具有多个系列和公共(public) x 轴的 Dojo 折线图

转载 作者:行者123 更新时间:2023-11-29 10:21:28 25 4
gpt4 key购买 nike

我相信我要完成的任务应该是一项相当常见的任务,但我很难让它发挥作用。我只是希望从包含(对于每条记录)一个 ISO8601 时间戳和多个数据点的数据集中创建一个多系列图。数据采用 JSON 格式,我使用的是 dojox.charting.chart“Lines”类型。

我已经知道 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 在 x 轴组件的 JSON 数据中使用“Offset_ms”字段?

我已经搜索了教程、API 文档并进行了大量的 Google 和 SO 搜索,但均无济于事。我什至浏览了部分 Dojo 源代码,尤其是 StoreSeries.js.uncompressed.js,但我没有找到任何答案。这当然是可能的,而且希望是微不足道的!

最佳答案

不幸的是,dojo 的官方文档严重缺乏,我只是通过浏览 dojo 源代码才弄明白如何做类似的事情。具体来说,StoreSeries 测试的第 135 行,http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/charting/tests/test_StoreSeries.html

StoreSeries 构造函数的第三个参数接受一个对象,该对象将 X 轴和 Y 轴映射到数据存储中的特定字段。

从此代码中更改以下行:

chart.addSeries(sColumnName, new dojox.charting.StoreSeries(sequenceDataStore, { query: {} },
sColumnName));

为此:

chart.addSeries(sColumnName, new dojox.charting.StoreSeries(sequenceDataStore, { query: {} }, 
{ x: "Offset_ms", y: sColumnName }));

sColumnName 变为 { x: "Offset_ms", y: sColumnName }

关于javascript - 来自 JSON 的具有多个系列和公共(public) x 轴的 Dojo 折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11018723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com