情节图表不会得出我的观点

时间:2014-01-05 21:22:43

标签: c# javascript asp.net ajax flot

enter image description here

我的问题在于这张照片。我试图用传感器数据绘制一个图形作为我的点(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类的样子。我解析数据然后将其存储在列表中。 enter image description here

然后我将其发送到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最终返回一些数据时,我用返回的数据重新开始绘图。

1 个答案:

答案 0 :(得分:3)

如果{/ 1}}呼叫的最小/最大轴更改,则需要调用setData重新计算轴。来自documentation,大胆的矿井:

  

使用setData(数据)

     

您可以使用它来重置使用的数据。 请注意轴缩放,   ticks,legend等不会被重新计算(使用setupGrid()来做   那)。您可能希望之后调用draw()。

     

如果您可以使用此功能加快重绘小图   知道轴不会改变。用新的数据输入   setData(newdata),调用draw(),你很高兴。请注意   大型数据集,几乎所有时间都在draw()绘制中使用   数据所以在这种情况下不要打扰。

     

setupGrid()

     

重新计算并设置轴缩放,刻度,图例等。

     

请注意,由于画布的绘图模型,此功能   将立即重绘(实际上重新插入DOM)标签和   传说,但不是实际的刻度线,因为它们被绘制在   帆布。你需要调用draw()来重绘画布。