2015-12-31 3 views
2

Когда я увеличиваю масштаб диаграммы, масштаб Y автоматически изменяется, чтобы выбрать диапазон, соответствующий значениям, ограниченным x.dygraphs - ограничение изменения диапазона осей y при масштабировании

Я знаю параметр valueRange, где я могу исправить диапазон, но я ищу вариант для определения некоторого максимального диапазона.

Так что масштаб Y меняется при изменении масштаба, но масштаб ограничивается каким-либо параметром

ответ

0

В интересах ясности и краткости, я опустил некоторые вещи - такие, как процесс создания.

Вы могли бы сделать что-то похожее, чтобы ограничить минимальный диапазон.

g = new Dygraph(
    ... your parameters ... 
); 

window.intervalId = setInterval(
    function(){ 
     var extents = g.yAxisRange(); 
     var lowerExtent = extents[0]; 
     var upperExtent = extents[1]; 

     if(upperExtent > MY_MAX_DESIRED){ 
      var range = [lowerExtent, MY_MAX_DESIRED]; 
      g.updateOptions('valueRange': range); 
     } 
    }, 
    500 
); 

Используя вышеуказанное решение, вы заметите полусферу «сбой» при масштабировании при заданном диапазоне. В качестве альтернативы, вы можете также использовать zoomCallBack, указанный при создании объекта графа:

g = new Dygraph(
    document.getElementById("div_g"), 
    [[0,0]], 
    { 
     zoomCallBack: function(minDate, maxDate, yRanges){ 
      var extents = yRanges; 
      var lowerExtent = extents[0]; 
      var upperExtent = extents[1]; 

      if(upperExtent > MY_MAX_DESIRED){ 
       var range = [lowerExtent, MY_MAX_DESIRED]; 
       g.updateOptions('valueRange': range); 
      } 
     } 
    } 
); 

Одно предостережение, я не проверял вышеуказанные решения. Я просто считаю, что они должны работать. Удачи!

+0

Я бы рекомендовал подход «zoomCallback». – danvk

0

спасибо! Я пытался использовать свое предложение У меня есть несколько вопросов:

"http://jsfiddle.net/stojak/zL6es924/4/" 

моя цель: например, когда у значения в данных находится в диапазоне от 10 до 11, то я хочу, чтобы увеличить на Y 0, (10-10) до 21 (11 + 10) код почти работает, однако я не знаю, как сказать, сбросить значение valueRange. результат состоит в том, что после каждого действия масштабирования диапазон увеличивается.

+0

Это не ответ, это еще один вопрос! Ваша проблема заключается в том, что вы получаете параметр yRanges в качестве параметра, тогда вы увеличиваете его на 10 в каждом направлении каждый раз. Попробуйте следующее: http://jsfiddle.net/slightlyNybbled/zL6es924/7/ – slightlynybbled

+0

Спасибо за отзыв. ваша модификация не решает мою проблему, потому что использование двойного щелчка (для unzoom) ось y не меняется снова до полного диапазона - но остается от 0 до 10 http://jsfiddle.net/stojak/zL6es924/8/ моя цель - ограничить масштаб в диапазоне до некоторого диапазона, но при снятии с охраны, а затем обратно в автоматический расчет значения Range – strojak

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