在Highcharts中格式化工具提示编号

时间:2014-11-26 09:02:50

标签: javascript highcharts

我使用tooltip.pointFormat在工具提示中呈现其他数据。不幸的是,只有{千}分隔符才能正确格式化point.x

jsFiddle

$(function () {
  Highcharts.setOptions({
    global: {
      useUTC: false,
    },
    lang: {
      decimalPoint: ',',
      thousandsSep: '.'
    }
  });
  $('#container').highcharts({
    xAxis: {
      type: 'datetime'
    },
    tooltip: {
      pointFormat: '{series.name}: <b>{point.y}</b><br/>' + 'Count: <b>{point.count}</b><br/>',
      shared: true
    },
    series: [{
      data: [{
        y: 20009.9,
        count: 20009.9
      }, {
        y: 10009.9,
        count: 20009.9
      }, {
        y: 40009.9,
        count: 20009.9
      }],
      pointStart: Date.UTC(2010, 0, 1),
      pointInterval: 3600 * 1000 // one hour
    }]
  });
});

3 个答案:

答案 0 :(得分:19)

找到答案here

  

使用浮点格式约定的子集格式化数字   来自C库funciton sprintf。格式化附加在里面   变量括号,用冒号分隔。例如:

     
      
  • 两位小数:“{point.y:.2f}
  •   
  • 千位分隔符,无小数位:{point.y:,.0f}
  •   
  • 千位分隔符,小数点后一位:{point.y:,.1f}
  •   

因此,在括号内使用:,.1f将正确格式化数字。

tooltip: {
  pointFormat: '{series.name}: <b>{point.y}</b><br/>' + 'Count: <b>{point.count:,.1f}</b><br/>',
  shared: true
}

jsFiddle

答案 1 :(得分:12)

使用tooltip formatter然后Highcharts.numberFormat

代替pointFormat
tooltip: {
            formatter:function(){

                return this.point.series.name + ': <b>' + Highcharts.numberFormat(this.point.options.count,1,',','.') + '</b><br/>' + 'Count: <b>'+Highcharts.numberFormat(this.point.y,1,',','.')+'</b><br/>';
            }
        },

示例:http://jsfiddle.net/8rx1ehjk/4/

答案 2 :(得分:3)

在我们的情况下tooltipFormatter仅适用于y属性的格式,我发现了一些方法,不仅可以为y添加格式,

  1. 为每个工具提示和每个属性添加格式,例如point.count:,.f

    pointFormat: '{series.name}: <b>{point.count:,.f}</b><br/>' + 'Count: <b>{point.y}</b><br/>',
    
  2. 像这样创建小扩展

    (function (Highcharts) {
      var tooltipFormatter = Highcharts.Point.prototype.tooltipFormatter;
    
      Highcharts.Point.prototype.tooltipFormatter = function (pointFormat) {
        var keys = this.options && Object.keys(this.options),
            pointArrayMap = this.series.pointArrayMap,
            tooltip;
    
        if (keys.length) {
          this.series.pointArrayMap = keys;
        }     
    
        tooltip = tooltipFormatter.call(this, pointFormat);        
        this.series.pointArrayMap = pointArrayMap || ['y'];
    
        return tooltip;
      }
    }(Highcharts));
    
  3. Example