如何格式化Highcharts dataLabels小数点

时间:2014-07-11 23:53:09

标签: highcharts

请你看一下this example,让我知道如何格式化dataLabels只显示两位小数?

以下是本系列中的数字格式

 series: [{
                name: 'Tokyo',
                data: [7.554555, 6.34345559, 9.5555, 14.5555, 18.4333433, 21.5555, 25.2, 26.5333333, 23.33333, 18.23243543, 13.776565669, 9.65454656]
            }, {
                name: 'London',
                data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
            }]

我想提出它们,如7.55,6.34,9.55。感谢

4 个答案:

答案 0 :(得分:26)

您需要合并dataLabels formatterHighcharts.numberFormat

...
dataLabels: {
    enabled: true,
    formatter: function () {
        return Highcharts.numberFormat(this.y,2);
    }
}
...

请参阅jsFiddle

答案 1 :(得分:17)

我只需在数据标签中添加格式选项,如下所示:

dataLabels: {
    enabled: true,
    format: '{point.y:,.2f}'
}

这是一种简单的方法,无需使用格式化程序定义函数。

额外:

冒号后的逗号确保像1450.33333这样的数字显示为1,450.33,这也很不错。

答案 2 :(得分:2)

如果有人想要“进一步”,我显示的数据可能是10 ^ 1到10 ^ 9,所以我正在转换它们并在之后显示单位。

请记住,Highcarts只处理整数,所以如果你想添加单位(而不是因为多个单位而在YAxis中)你可以在源数据中提供它,但你必须在之后格式化它们:

column: {
            dataLabels: {
                enabled: true,
                formatter: function () {
                    // Display only values greater than 0.
                    // In other words, the 0 will never be displayed.
                    if (this.y > 0) {
                        if (this.y >= Math.pow(10, 9))
                        {
                            return Highcharts.numberFormat(this.y /Math.pow(10, 9) , 1) + " mias";
                        }
                        else if (this.y >= Math.pow(10, 6))
                        {
                            return Highcharts.numberFormat(this.y /Math.pow(10, 6) , 1) + " mios";
                        }
                        else
                        {
                            return Highcharts.numberFormat(this.y, 0);
                        }
                    }
                },

mias:代表“milliards”(台球的法语翻译) mios:代表“数百万”(法语翻译数百万)

答案 3 :(得分:0)

我在您要不显示尾随零的注释中注意到。

这是我能够召集的最简单的解决方案:

...
dataLabels: {
    enabled: true,
    formatter: function () {
        return parseFloat(this.y.toFixed(2)).toLocaleString();
    }
}
...

如果您不希望数字以逗号分隔符结尾(取决于语言环境),请删除.toLocaleString()。

侧注::不幸的是,使用格式(而不是像我们上面那样使用格式化程序和js函数)仅限于 float 格式的子集C库函数sprintf中的约定,如here on highcharts website所示。该库具有the code g可以自动为我们完成此操作,但不幸的是,它没有在Highcharts中实现:(,即格式:'{point.y:,。2g}'无效。