获取jqplot缩放后画布中数据点的列表

7

如果有人能帮我解决这个问题,我将不胜感激。我们正在使用Jqplot来绘制一些统计数据,并且喜欢缩放功能。

具体而言,我们想使用以下示例:

http://www.jqplot.com/deploy/dist/examples/zoom1.html

http://www.jqplot.com/deploy/dist/examples/zoomOptions.html

其中的一个问题是,在缩放后重新计算我们在页面上显示的一些值,例如标准偏差、平均值等等,以展示在图表中可见的点。因此,我们需要获取图表上缩放后仍然存在的数据点列表。理想情况下,我们正在寻找一种方法,该方法返回缩放后图表中当前可见的数据集。

我查阅了API文档,但似乎没有这样的方法可用。所以,如果有人能够帮助我解决这个问题,我会非常感激。

谢谢....Amit


我也在尝试获取相同的数据,但我没有找到任何简单的方式来做到这一点。如果我找到了什么,我会更新答案。 - Java Drinker
感谢 @JavaDrinker。我们在同一条船上 :-) - Amitabh
1个回答

6

好的,经过对代码的大量挖掘,实际上并没有任何简单的方法来获取这些数据,但是有一种方法。

在下面的解决方案中,我有一个名为 zoomChart 的jqPLot对象,它充当我的主jqPLot(称为 chart )的缩放代理。假设如果你没有代理,只要绑定到正确的对象即可。

我正在将自定义函数绑定到'jqplotZoom'事件,该事件在缩放操作完成后调用。

    zoomChart.target.bind('jqplotZoom', function(ev, gridpos, datapos, plot, cursor){
        var plotData =  plot.series[0].data;
        for (var i=0; i< plotData.length; i++) {
            if(plotData[i][0] >= chart.axes.xaxis.min && plotData[i][0] <= chart.axes.xaxis.max ) {
                //this dataset from the original is within the zoomed region
                //You can save these datapoints in a new array
                //This new array will contain your zoom dataset
                //for ex: zoomDataset.push(plotData[i]);
            }
        }
    });

这是否有意义?实质上,chart.axes.xaxis 包含缩放区域的边界,而 plot.series[N].data 则是图表格式中的所有原始数据。

请注意,我使用了 chart,因为我最初创建了 var chart = $.jqplot("chartDiv", ...

您应该使用您给绘图器赋的任何变量名。希望这能有所帮助!


1
我可以确认它可以在没有代理的情况下工作。即使图表是由PrimeFaces生成的。 - Kukeltje

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接