Highcharts - 如何在自定义格式化程序中获取默认的y轴标签格式化程序

时间:2015-04-08 10:51:14

标签: javascript highcharts

我希望编写一个自定义标签格式化程序,它会在某些条件下显示自定义标签,并在其他条件下返回默认标签:

function yAxisFormatter() {
    var val = //need default formatter value here 
    if(someCondition){
       val = ....
    }

    return val;
}

Doc表示默认格式化程序为

function() {
    return this.value;
}

this.value显示与默认标签不同,我需要默认标签,如9k而不是9000,依此类推。

2 个答案:

答案 0 :(得分:1)

如果其他人偶然发现(就像我一样),你不需要复制部分内核。默认格式化程序被定义为轴对象的一部分。你可以像这样后退:

function myCustomFormatter() {
       var result = this.axis.defaultLabelFormatter.call(this);
       //Do your own things here.
       return result;
};

答案 1 :(得分:0)

您需要从核心中提取部分代码,然后才能实现。

formatter: function () {
                var numericSymbolDetector = this.axis.isLog ? this.value : this.axis.tickInterval,
                    numericSymbols = this.chart.options.lang.numericSymbols,
                    i = numericSymbols && numericSymbols.length,
                    value = this.value,
                    ret=value, 
                    multi;

                if (i && numericSymbolDetector >= 1000) {
                    ret = UNDEFINED;
                    while (i-- && ret === UNDEFINED) {
                        multi = Math.pow(1000, i + 1);
                        if (numericSymbolDetector >= multi && numericSymbols[i] !== null) {
                            ret = Highcharts.numberFormat(value / multi, -1) + numericSymbols[i];
                        }
                    }
                }

                return ret;

            }

示例:http://jsfiddle.net/x9r35s5q/5/