Javascript 设置图表y轴标签的格式

Javascript 设置图表y轴标签的格式,javascript,highcharts,Javascript,Highcharts,我正在使用Highcharts生成一个显示货币价值的折线图。默认情况下,y轴标签使用公制前缀作为缩写,例如显示3k而不是3000 我想在这些标签上预先添加一个货币符号,例如显示$3k而不是3k。但是,只要添加货币符号,度量前缀就不再使用。我试过以下方法 yAxis: { labels: { formatter: function () { return '$' + this.value

我正在使用Highcharts生成一个显示货币价值的折线图。默认情况下,y轴标签使用公制前缀作为缩写,例如显示3k而不是3000

我想在这些标签上预先添加一个货币符号,例如显示$3k而不是3k。但是,只要添加货币符号,度量前缀就不再使用。我试过以下方法

    yAxis: {
        labels: {                
            formatter: function () {
                return '$' + this.value;
            }
        }
    }
也试过了

    yAxis: {
        labels: {
            format: '${value}'
        }
    }
但在这两种情况下,显示的都是3000美元,而不是3k美元。是否可以在不丢失公制前缀的情况下添加货币符号

这里有一个演示()说明了这个问题

$(函数(){
$(“#容器”)。高图({
亚克斯:{
//如果包含以下行,则度量前缀将消失
/*
标签:{
格式:“${value}”
}
*/
},
系列:[{
数据:[15000、20000、30000]
}]
});
});

我查看了HighCharts源代码,发现如果您传递
格式
格式设置程序
,它将不会添加数字符号。它位于
else if
语句中,即formatOption xor numericSymbol。因此,您需要添加一个格式化程序并自己执行逻辑

这是他们代码的一个稍加修改的复制粘贴:

       formatter: function() {
           var ret,
               numericSymbols = ['k', 'M', 'G', 'T', 'P', 'E'],
               i = numericSymbols.length;
           if(this.value >=1000) {
               while (i-- && ret === undefined) {
                   multi = Math.pow(1000, i + 1);
                   if (this.value >= multi && numericSymbols[i] !== null) {
                      ret = (this.value / multi) + numericSymbols[i];
                   }
               }
           }
           return '$' + (ret ? ret : this.value);
       }

您可以从格式化程序函数调用原始格式化程序:

$(function () {
    $('#container').highcharts({

        yAxis: {            
            labels: {
                formatter: function () {
                    return '$' + this.axis.defaultLabelFormatter.call(this);
                }            
            }
        },

        series: [{
            data: [15000, 20000, 30000]
        }]

    });
});

谢谢!你知道我怎么加逗号吗?@xgrioux我不知道你这是什么意思。你想让它显示$3000而不是$3k吗?老评论,但也许这可以帮助其他人。您可以通过设置
lang.thousandsSep
配置属性来获取逗号:。仅供参考,如果向值中添加2个零,则上面的JSFIDLE中将显示逗号。