我的flot图表没有显示任何行,问题是使用Java中的Integer将纪元乘以1000?
这是我的原始数据,存储在.txt
文件
epoch,value
1383229104,55559
1383229121,55559
1383229787,55565
由Servlet解析并存储在其中:
Vector<Integer> points = new Vector<Integer>();
e.g
points.add(Integer.parseInt(strLine.split(",")[0]) * 1000);
points.add(Integer.parseInt(strLine.split(",")[1]));
有多个文件,每个文件都包含一个单独的系列(线),可以在图表上绘制
对于每个Vector<Integer> points
对象,它们都会添加到..
Vector<Dataset> datasets = new Vector<Dataset>();
数据集具有以下定义:
public class Dataset {
private String name;
private Vector<Vector<Integer>> points;
解析完所有文件并将其添加到Vector<Dataset> datasets
后,将使用response.getWriter().write(new Gson().toJson(datasets));
向客户端发送此对象。
并使用
var datasets = JSON.parse(xmlhttp.responseText);
var plotarea = $("#placeholder");
$.plot(plotarea, [datasets[0].points, datasets[1].points, datasets[2].points, datasets[3].points, datasets[4].points], {
xaxis: {
mode: "time",
min: (new Date(2012, 0, 1)).getTime(),
max: (new Date(2015, 0, 1)).getTime()
}
});
更新: -------------------------------------- ------------------------------------
在javascript中调试输出。
有{5}个文件被加载到Vector<Dataset> datasets = new Vector<Dataset>();
alert(datasets) .. [object Object],[object Object],[object Object],[object Object],[object Object]
console.log(datasets) .. [object Array]
我可以使用以下方式访问值:
alert(datasets[0].points[0][0]);
alert(datasets[0].points[0][1]);
输出将是两个警告对话框,一个包含249634688
,另一个包含55559
注意: 1383229104 * 1000
不应为249634688
答案 0 :(得分:2)
你应该使用Long,而不是Integer。显然这是一个溢出问题。
答案 1 :(得分:0)
将private Vector<Vector<Integer>> points;
更改为private Vector<Vector<Long>> points;
造成预期结果,即1383229104000