Javascript + Highcharts:将series.data替换为我自己的

时间:2014-01-23 21:43:18

标签: javascript highcharts

我一直在做一个志愿者大学网站工作的脚本。

瓦数学校外,请忽略所有参数。这些是使用 json_encode()转换为数组的SQL结果集。我相信,结果集将字符串作为值,因此wattagesschools都应该是字符串数组。

我想要做的是为饼图输入我自己的data,在本例中为 mySeries ,我在开始时构建/填充并放置为{{1}以后。

data
事情是,上述情况不会奏效。由于我没有使用环境(用记事本++编写并在我的apache web服务器上进行测试,通过结果)我手动将有问题的行标记为function createPieChartGradient(data,title,xlabel,ylabel,type,step,div_id,wattages,schools){ var float_watt = new Array(); for(var index = 0; index < wattages.length; index++) { float_watt[index] = parseFloat(wattages[index]).toFixed(2); } var mySeries = []; //Hopefully this creates a [String, number] array that can be used as Data. for (var i = 0; i < float_watt.length; i++) { mySeries.push([schools[i], float_watt[i]]); } var options = { chart: { renderTo: 'graph', zoomType: 'x', defaultSeriesType: type }, title: { text: 'Consumption Percentage of IHU Schools, Last 7 days' }, tooltip: { //pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' }, xAxis: { categories: [], tickPixelInterval: 150, // maxZoom: 20 * 1000, title: { style: { fontSize: '14px' }, text: xlabel }, labels: { rotation: -45, step: step, align: 'right'//, // step: temp } }, yAxis: { title: { style: { fontSize: '14px' }, text: ylabel }, labels: { align: 'right', formatter: function() { return parseFloat(this.value).toFixed(2); } }, min: 0 }, legend: { layout: 'vertical', align: 'right', verticalAlign: 'center', floating: true, shadow: true }, series: [{ type: 'pie', name: 'Consumption Percentage', data: mySeries //Problematic line. }] //Faculty with the smallest wattage -> Green. }; //end of var options{} //Next: -> Yellow. //Last -> Red. //Draw the chart. var chart = new Highcharts.Chart(options); //TODO: Change colours. document.write("FINISHED"); }

知道为什么会这样吗?它们不是同一类型的数组data: mySeries吗?

此外,是否有任何环境可以帮助我调试JavaScript程序?我真的很想知道这种情况,我更倾向于让IDE告诉我什么是错的,或者至少指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

你看到你在哪里打电话给“toFixed”?我们来做一个小实验:

var wattages = [2.0, 3.0];

 var float_watt = new Array();
 for(var index = 0; index < wattages.length; index++)
 {
    float_watt[index] = parseFloat(wattages[index]).toFixed(2);
 }

 console.log(JSON.stringify(float_watt));

输出不是您所期望的:

["2.00", "3.00"]

看看它是如何转换为字符串的?如果您删除“toFixed”并让格式化程序完成其工作,那么事情就可以了。

修改

以下是修复格式化程序的方法:

    plotOptions: {
        pie: {
            dataLabels: {
                formatter: function() {
                    return parseFloat(this.y).toFixed(2);
                }
            }
        }
    },

yLabels格式化程序没有为这个饼干做任何事情。