Highcharts数据插件小数分隔符

时间:2013-07-17 12:27:51

标签: javascript highcharts

如果获得了highcharts 3数据插件来读取表中的值。这不是因为英语的问题。用于小数分隔符。在荷兰语中,表使用a作为小数分隔符。图表不显示因为数据插件无法看到5,5与5.5相同。

这是我的javascript代码:

<!-- language: lang-js -->
$('#grafiek620').highcharts({  
  chart: {  
    type: 'bar'  
  },  
  credits: {  
    enabled: false  
  },
  data: {  
    table: document.getElementById('datatable620')  
  },  
  title: {  
    text: jQuery('#datatable620').data('labeltitle')  
  },  
  xAxis: {  
    labels: {  
      rotation: 0  
    },  
    title: {  
      text: jQuery('#datatable620').data('labelx')  
    }  
  },  
  yAxis: [{  
    min: 0,  
    title: {  
      text: jQuery('#datatable620').data('labely')  
    },  
    labels: {  
      rotation: 0  
    }  
  }, {  
    opposite: true,  
    title: {  
      text: jQuery('#datatable620').data('labelz')  
    },  
  }],  
  legend: {  
    layout: "horizontal"  
  }  
});  

我添加了一个js小提琴:http://jsfiddle.net/knscs/

3 个答案:

答案 0 :(得分:0)

您必须将这些逗号更改为有效期。 Javascript在数字格式的文化差异方面不是很好。一个简单的string.replace应该这样做。

例如,用你的例子做一个非常便宜和hacky的方法是:

$("td").each(function() {
    var str = $(this).text();
    $(this).text(str.replace(',','.'));
}); 

哪些内容会更改,代码中.td的所有内容,但它不是很聪明,如果您的代码需要国际友好且遇到数据,您应该非常小心例如1,000.5或者如果您的td字符串包含逗号。

答案 1 :(得分:0)

好的,你有一个解决方案:

var ConvertStringToFloat = function( datas ) {
    return datas.map(function(i, el) {
        var str = $(el).text();
        return parseFloat(str.replace(",", "."));
    });
}
ConvertStringToFloat ( $("td", $('#datatable620') ) )

这里有一个float数组,现在你只需要用HighChart创建一个系列。

series: [{
    data: ConvertStringToFloat ( $("td", $('#datatable620') ) )        
}]

这是一个工作示例:http://jsfiddle.net/knscs/3/

要显示数字(以荷兰语方式),您可以在Highcharts的选项中执行此操作:

Highcharts.setOptions({
    lang: {
        decimalPoint: ','
    }
});

PS:你选择的功能名称......我没有真正考虑它,但ConvertStringToFloat不是一个好选择;)

答案 2 :(得分:0)

您可以简单地编辑data.src.js模块以允许使用comas进行此操作。编辑源代码有什么用呢?您不需要在HTML中更改任何内容,您不必再次遍历所有数组项,只需找到该行(在data.src.js中):

floatVal = parseFloat(val);

并使用replace(),替换为.,如其他答案所示。