2015-10-06 4 views
0

Есть ли способ сделать ось y только имеют метки на основе целых чисел. Это было бы огромной помощью. Кроме того, если клещ знаки могут быть только кратныеvis graph2d только для оси y

2 when 0 <= window height <= 10 
10 when 10 < window height <= 100 
100 window height < 100 

... что было бы неплохо - хотя и не является абсолютно необходимым. Извините за псевдокод.

Прямо сейчас я делаю следующее и работает нормально, но это не очень удобно.

this.dataset = new vis.DataSet(); 
var options = { 
    start: vis.moment(), 
    end: vis.moment().add(50, 'seconds'), 
    showMajorLabels: false, 
    zoomable: true, 
    dataAxis: { 
     left: { 
      range: { 
       min: 0 
      } 
     }, 
    } 
    style: 'bar', 
    drawPoints: false, 
} 
this.graph = new vis.Graph2d(container/*assume I made it :)*/, this.dataset, options); 

//+~~~~~~~~~~+ 
//| LATER ON | 
//+~~~~~~~~~~+ 

range = this.graph.getWindow(); 
var current = this.dataset.get({ 
    filter: function(item) { 
     return item.x > range.start && item.x < range.end; 
    } 
}); 
var maxY = 0; 
for (var i = 0, currentLen = current.length; i < currentLen; i++) { 
    if (current[i].y > maxY) { 
     maxY = current[i].y; 
    } 
} 
maxY = maxY < 8 ? Math.floor((maxY + 4)/4) * 4 : Math.floor((maxY + 6)/6) * 6; // makes tick marks at places that don't cause decimal values @[email protected] 
this._graph.setOptions({ 
    dataAxis: { 
     left: { 
      range: { 
       max: maxY, 
      } 
     } 
    } 
}); 

Краткое примечание: линия maxY = maxY < 8 ? ... работает только для 1-11 от того, что я могу проверить. Я не уверен в более высоких цифрах. Однако, надеюсь, это может быть исправлено.

ответ

0

Таким образом, мне кажется, что метод, который я реализовал (например, я вижу только целые числа, независимо от значения y), если вы хотите только ints и не возражаете (или хотите) минимальное значение y равным 4 и, Кроме того, не против, какой шаг.

Однако обратите внимание, что это тестирование было проверено только с помощью [0, inf) (положительных, цифр или 0).

Если у вас есть решение, использующее vis для этого, вместо того, чтобы проверять все значения max y вручную, пожалуйста, сделайте общий вклад в ответе .

2

Очень очень поздно ответ, но если вы только заботиться о оси у себя, а не горизонтальные линии сетки этикетки, вы можете сделать это:

var options = { 
    dataAxis: { 
     left: { 
      format: function(value){ 
       // don't show non-integer values on data axis 
       return Math.round(value) === value ? value : ""; 
      } 
     } 
    } 
} 

Вы также можете получить доступ к window.height в этой функции и настройки соответственно для описанных вами поведений.

+0

Прохладный для вас ввод. Это было так давно, что я потерял из виду, что именно было намерено, но еще раз спасибо: D – dylnmc

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