我的问题在于这张照片。我试图用传感器数据绘制一个图形作为我的点(X,y)。当网页加载时,它会读取csv文件并将此数据发送到我的codebhind的ajax调用。这就是我背后的代码所返回的内容:
var myData = new Stats {
Time = dataContainer.time,
LhXVals = dataContainer.lhXVals,
LhYVals = dataContainer.lhYVals,
LhZVals = dataContainer.lhZVals,
RhXVals = dataContainer.rhXVals,
RhYVals = dataContainer.rhYVals
};
这是我的Stats类的样子。我解析数据然后将其存储在列表中。
然后我将其发送到ajax调用。这是我对ajax的成功函数:
var time = new Array();
var lhXVals = new Array();
var cumulative = new Array();
var data2;
success: function (result) {
time = result.d.Time; //Time is a List<double>
lhXVals = result.d.LhXVals; //Left-Hand-X-Values is a List<double>, both are the same size
//check if time and lhXVals are empty, if not proceed
if (time.length > 0 || lhXVals.legnth > 0) {
for (var i = 0; i < time.length; ++i) {
//only grabbing little bit of data just to test,
//only taking first 2 elements
if (i == 6)
break;
//use the time data ex:(510.2838439) as my X-axes
//use the left-hand-X-Values ex:(23.9384384) as my Y-axes
debugger;
cumulative.push([parseFloat(time[i]), parseFloat(lhXVals[i])]);//data2 was a manually populated example i used before
data2 = [[4.53123342, 0], [4.9039293, 24.89323233], [6, 0], [6, -12.134], [8, 0], [8, 6.932]];
//an index in the "cumulative" array would look like this:
// [0]: [510.2838439,23.9384384]
}
}
updateOnce(cumulative);
updateOnce(cumulative);
函数接受我在flot.setData()
方法中使用的累积点数组来绘制新图形。
function updateOnce(cumulative) {
debugger;
plot.setData([cumulative]);
plot.draw();//draws nothing
}
然而,最大的问题是当plot.draw();
被绘制时,我的图表上没有任何内容,我也不知道为什么。我已经尝试了所有我能想到的东西。我已经尝试解析数据浮动,并留下它但不改变任何东西。我在“累积”中的数据与我为图形点创建的手动数组(var数据)的存储方式完全相同,但它不起作用,我一直在拉我的头发。
修改 对于下面的评论。我最初设置如下:
function updateOnce(cumulative) {
debugger;
plot.setData([cumulative]);
plot.draw(); //draws nothing
}
//implementing getData Last
var plot = $.plot("#placeholder", [getData()], {
series: {
shadowSize: 0 // Drawing is faster without shadows
},
yaxis: {
min: -50,
max: 50
},
xaxis: {
show: true
}
});
我返回数据,这是一个手动设置的点数组(x,y),因此它将首先在图形上绘制一些东西。然后当ajax最终返回一些数据时,我用返回的数据重新开始绘图。
答案 0 :(得分:3)
如果{/ 1}}呼叫的最小/最大轴更改,则需要调用setData
重新计算轴。来自documentation,大胆的矿井:
使用setData(数据)
您可以使用它来重置使用的数据。 请注意轴缩放, ticks,legend等不会被重新计算(使用setupGrid()来做 那)。您可能希望之后调用draw()。
如果您可以使用此功能加快重绘小图 知道轴不会改变。用新的数据输入 setData(newdata),调用draw(),你很高兴。请注意 大型数据集,几乎所有时间都在draw()绘制中使用 数据所以在这种情况下不要打扰。
setupGrid()
重新计算并设置轴缩放,刻度,图例等。
请注意,由于画布的绘图模型,此功能 将立即重绘(实际上重新插入DOM)标签和 传说,但不是实际的刻度线,因为它们被绘制在 帆布。你需要调用draw()来重绘画布。