Chart.js改变了点的垂直位置

时间:2016-05-27 08:21:04

标签: javascript chart.js

我扩展Chart.types.Line并将比例覆盖为某个常量值。

我现在需要 - 用

显示点数
  • y > scale.max位于scale.max位置
  • y < scale.min位于scale.min位置

用户与他们互动的能力。
标题应该是正确的(未修改的)值,因此我不能只修改数据集。

我怎样才能做到这一点?

简化代码:

function ChartFactory(title) {
  Chart.types.Line.extend({
    name: title,
    buildScale: function() {
        this.options.scaleOverride = true;
        this.options.scaleSteps = 10;
        this.options.scaleStepWidth = this.options.S;
        this.options.scaleStartValue = this.options.target - 5 * this.options.S;
        Chart.types.Line.prototype.buildScale.apply(this, arguments);      
    },
    draw: function () {
        var chart = this;
        Chart.types.Line.prototype.draw.apply(chart, arguments);
        // some additional graphic here 
    }
  });
}

1 个答案:

答案 0 :(得分:1)

只需在buildScale

的末尾添加以下内容即可
...
var scale = this.scale;
var originalCalculateY = scale.calculateY;
scale.calculateY = function(y) {
    if (y > scale.max)
        return originalCalculateY.apply(this, [scale.max]);
    else if (y < scale.min)
        return originalCalculateY.apply(this, [scale.min]);
    else
        return originalCalculateY.apply(this, [y]);
}
...

因为你仍然有轴标签会有点混乱。

小提琴 - http://jsfiddle.net/wjb3k4gx/