Flot 折线图 - 如何更改静态值以从 ajax url 加载
Flot line chart - How to change static value to load from ajax url
我有一个 flot 线图,它正在从静态 java 脚本数组加载数据。
d1 = [
[1262304000000, 5], [1264982400000, 200], [1267401600000, 1605], [1270080000000, 1129],
[1272672000000, 1163], [1275350400000, 1905], [1277942400000, 2002], [1280620800000, 2917],
[1283299200000, 2700], [1285891200000, 2700], [1288569600000, 2100], [1291161600000, 1700]
]
d2 = [
[1262304000000, 434], [1264982400000, 232], [1267401600000, 475], [1270080000000, 553],
[1272672000000, 675], [1275350400000, 679], [1277942400000, 789], [1280620800000, 1026],
[1283299200000, 1640], [1285891200000, 1892], [1288569600000, 2147], [1291161600000, 2256]
]
data = [{
label: "Total visitors",
data: d1
}, {
label: "Total Sales",
data: d2
}]
var holder = $('#line-chart')
if (holder.length) {
$.plot(holder, data, chartOptions )
}
我的 Web 应用程序中有一个 java url returns 这个 json。它非常相似,但不是 100% 相同的格式。
{"label":"This Year","data":[[1423659600000,28192],[1423746000000,33216],[1423832400000,31314],[1423918800000,22875],[1424005200000,20792],[1424091600000,20151],[1424178000000,22424]]}
我需要一些帮助来确定我是否可以使用那个 json 来绘制我的图表,而且我对 ajax 还很陌生,需要一些帮助来了解我如何 运行 ajax 调用,将数据存储在变量中,然后绘制图形。我需要调用 ajax url 并为图表上的每个系列绘制一次。
抱歉问了这么多细节。但是我有点迷茫,因为我找不到很多关于如何做我想做的事情的例子。
编辑
对于其他需要帮助的人,我设法通过做这样的事情来解决我的问题....
fetchData(function (data) {
console.log(data);
});
function fetchData(callback) {
$.when(fetchThisYearsData(), fetchLastYearsData()).done(function (dataThisYear, dataLastYear) {
var data = [];
data.push(dataThisYear[0]);
data.push(dataLastYear[0]);
callback(data);
});
}
function fetchThisYearsData() {
// NOTE: This function must return the value
// from calling the $.ajax() method.
return $.getJSON( "service/tranAnalysis/tranCounts.json?siteId=1&yearOffset=0", function(json) {});
}
function fetchLastYearsData() {
// NOTE: This function must return the value
// from calling the $.ajax() method.
return $.getJSON( "service/tranAnalysis/tranCounts.json?siteId=1&yearOffset=1", function(json) {})
}
很好,我们都学过一次!
但这正是我不给你一个完整例子的原因,你会学到更多。
对于 Ajax,使用 JQuery 或类似的库。它使事情变得容易得多:
http://api.jquery.com/jquery.ajax/
如果您将JSON指定为return类型,它会自动将其解析为Javascript对象。或者,您可以使用本机 JSON 对象来解析和字符串化数据。
你只有一个数据集(具有正确的属性),所以你可以简单地将它添加到一个数组中并提供给 flot,例如:
var data = [json_data];
var holder = $('#line-chart')
if (holder.length) {
$.plot(holder, data, chartOptions);
}
如果您需要使用新数据集重新绘制图形:
data.push(new_json);
plot.setData(data);
plot.setupGrid(); //only necessary if your new data will change the axes or grid
plot.draw();
我有一个 flot 线图,它正在从静态 java 脚本数组加载数据。
d1 = [
[1262304000000, 5], [1264982400000, 200], [1267401600000, 1605], [1270080000000, 1129],
[1272672000000, 1163], [1275350400000, 1905], [1277942400000, 2002], [1280620800000, 2917],
[1283299200000, 2700], [1285891200000, 2700], [1288569600000, 2100], [1291161600000, 1700]
]
d2 = [
[1262304000000, 434], [1264982400000, 232], [1267401600000, 475], [1270080000000, 553],
[1272672000000, 675], [1275350400000, 679], [1277942400000, 789], [1280620800000, 1026],
[1283299200000, 1640], [1285891200000, 1892], [1288569600000, 2147], [1291161600000, 2256]
]
data = [{
label: "Total visitors",
data: d1
}, {
label: "Total Sales",
data: d2
}]
var holder = $('#line-chart')
if (holder.length) {
$.plot(holder, data, chartOptions )
}
我的 Web 应用程序中有一个 java url returns 这个 json。它非常相似,但不是 100% 相同的格式。
{"label":"This Year","data":[[1423659600000,28192],[1423746000000,33216],[1423832400000,31314],[1423918800000,22875],[1424005200000,20792],[1424091600000,20151],[1424178000000,22424]]}
我需要一些帮助来确定我是否可以使用那个 json 来绘制我的图表,而且我对 ajax 还很陌生,需要一些帮助来了解我如何 运行 ajax 调用,将数据存储在变量中,然后绘制图形。我需要调用 ajax url 并为图表上的每个系列绘制一次。
抱歉问了这么多细节。但是我有点迷茫,因为我找不到很多关于如何做我想做的事情的例子。
编辑
对于其他需要帮助的人,我设法通过做这样的事情来解决我的问题....
fetchData(function (data) {
console.log(data);
});
function fetchData(callback) {
$.when(fetchThisYearsData(), fetchLastYearsData()).done(function (dataThisYear, dataLastYear) {
var data = [];
data.push(dataThisYear[0]);
data.push(dataLastYear[0]);
callback(data);
});
}
function fetchThisYearsData() {
// NOTE: This function must return the value
// from calling the $.ajax() method.
return $.getJSON( "service/tranAnalysis/tranCounts.json?siteId=1&yearOffset=0", function(json) {});
}
function fetchLastYearsData() {
// NOTE: This function must return the value
// from calling the $.ajax() method.
return $.getJSON( "service/tranAnalysis/tranCounts.json?siteId=1&yearOffset=1", function(json) {})
}
很好,我们都学过一次!
但这正是我不给你一个完整例子的原因,你会学到更多。
对于 Ajax,使用 JQuery 或类似的库。它使事情变得容易得多:
http://api.jquery.com/jquery.ajax/
如果您将JSON指定为return类型,它会自动将其解析为Javascript对象。或者,您可以使用本机 JSON 对象来解析和字符串化数据。
你只有一个数据集(具有正确的属性),所以你可以简单地将它添加到一个数组中并提供给 flot,例如:
var data = [json_data];
var holder = $('#line-chart')
if (holder.length) {
$.plot(holder, data, chartOptions);
}
如果您需要使用新数据集重新绘制图形:
data.push(new_json);
plot.setData(data);
plot.setupGrid(); //only necessary if your new data will change the axes or grid
plot.draw();