有没有办法让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 @_@
this._graph.setOptions({
dataAxis: {
left: {
range: {
max: maxY,
}
}
}
});
快速注意:maxY = maxY < 8 ? ...
行仅适用于我测试的1-11。我不确定更高的数字。但是,希望这可以修复。
答案 0 :(得分:2)
答案非常晚,但假设您只关心y轴标签本身而不是水平网格线,您可以这样做:
UIFeedbackGenerator
您还可以访问该功能中的var options = {
dataAxis: {
left: {
format: function(value){
// don't show non-integer values on data axis
return Math.round(value) === value ? value : "";
}
}
}
}
,并根据您描述的行为进行相应调整。
答案 1 :(得分:0)
所以,看起来我实现的方法是有效的(例如,我只看到整数而不管y值)如果你只想要整数并且不介意(或想要)最小y值为4,另外,不要介意这一步是什么。
但请注意,这仅使用[0,inf](正数,数字或0)进行测试。
如果您有一个使用vis的解决方案来执行此操作 - 而不是手动检查所有最大值 - 请分享答案。