2013-05-24 2 views
7

Я очень благодарен, если кто-то может помочь мне в этом. Мы используем Jqplot для построения статистических данных и, как функция масштабирования.Получить список точек данных на холсте после увеличения jqplot

В частности, мы хотим использовать примеры в

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

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

Одна из вещей, нам нужно сделать, это пересчитать некоторые значения мы отображения на странице, как стандартное отклонение, среднее и т. д. для точек, видимых на графике после увеличения. Для этого нам нужно получить список точек данных, которые есть (остаются) на графике после того, как мы увеличили масштаб. Поэтому в идеале мы рассматриваем метод, который возвращает текущие данные набор отображается на графике после того, как я увеличил масштаб.

Я просмотрел документацию по API, но такой метод не доступен. Поэтому я был бы очень признателен, если бы кто-то помог с тем, как Я должен продолжить это.

Спасибо .... Амит

+0

Я пытаюсь получить те же данные по другой причине, но я не вижу никакого простого способа сделать это. Я обновлю ответ, если найду что-нибудь –

+0

Спасибо @JavaDrinker. На той же лодке :-) – Amitabh

ответ

6

Итак, после того, как много копаться в коде, есть на самом деле не любой простой способ, чтобы получить эти данные, но есть способ.

В приведенном ниже решении, у меня есть zoomChart jqPLot OBJ, который действует как зум-прокси для моего основного jqPLot, называется диаграмму. Предположительно, если у вас нет прокси-сервера, это должно работать так же хорошо, если вы привязываетесь к нужному объекту.

Что я делаю, это привязка настраиваемой функции к событию «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] (http://stackoverflow.com/questions/32699503/interval-selection-event-in-primefaces-chart/3271775) – Kukeltje

Смежные вопросы