Javascript+;Highcharts:用series.data替换我自己的

Javascript+;Highcharts:用series.data替换我自己的,javascript,highcharts,Javascript,Highcharts,我一直在为一个志愿大学网站的工作做这个脚本 请忽略除瓦特数和学校之外的所有参数。这些是使用json\u encode()转换为数组的SQL结果集。我相信结果集有字符串作为值,所以wattages和schools都应该是字符串数组 我要做的是为饼图输入我自己的数据,在本例中是mySeries,我在开始时构建/填充该饼图,然后将其作为数据 function createPieChartGradient(data,title,xlabel,ylabel,type,step,div_id,wattage

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

请忽略除瓦特数学校之外的所有参数。这些是使用json\u encode()转换为数组的SQL结果集。我相信结果集有字符串作为值,所以
wattages
schools
都应该是字符串数组

我要做的是为饼图输入我自己的
数据
,在本例中是mySeries,我在开始时构建/填充该饼图,然后将其作为
数据

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");
}
函数createPieChartGradient(数据、标题、xlabel、ylabel、类型、步长、div_id、瓦特数、学校){
var float_watt=新阵列();
对于(var指数=0;指数绿色。
};//变量选项的结尾{}//下一步:->黄色。
//最后->红色。
//画图表。
var chart=newhighcharts.chart(选项);//TODO:更改颜色。
文件。填写(“完成”);
}
问题是,上述方法行不通。由于我没有使用环境(使用记事本++编写并通过结果在apache web服务器上测试),因此我手动将有问题的行定义为
数据:mySeries

知道为什么吗?它们不是同一类型的数组吗,
[String,number]


此外,是否有任何环境可以帮助我调试javascript程序?对于这种情况,我真的束手无策,我非常希望有一个IDE告诉我出了什么问题,或者至少给我指出了正确的方向。

你知道你叫“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));
看看它是如何被转换成字符串的?如果删除“toFixed”并让格式化程序完成它的工作,事情就会进展顺利

编辑

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

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

yLabels格式化程序对饼没有任何作用。

您是否尝试过转储mySeries的内容以确保您的假设是正确的?e、 例如,console.log(mySeries)@Corey我在关键点使用了多个
document.write()
s,其中有好几吨,它被检查出来了。mySeries打印了3个学校和3个瓦特数,它们是这些阵列的大小。调试时使用console.log()而不是document.write()。您可以在Chrome Javascript控制台中看到输出。另外,可以导航记录的对象。这会让你的生活更轻松。(不过,确保在发货前将其删除。IE仅在调试器打开时才公开console对象。)天哪,你是个救命恩人。谢谢。toFixed()调用只得到两个十进制数字,因为瓦特数是平均的,因此我倾向于得到相当大的浮点数,例如
522.2222
。我添加了代码以正确地将数字格式化为答案。它位于配置的顶层,与“xAxis”和“yAxis”位于同一对象中。希望有帮助!(如果关闭了,请不要忘记单击“已回答”按钮。)在我测试它之前,还有一件事,
console.log()
在哪里输出它的内容?打开Chrome,单击汉堡托盘(右侧的三个栏),然后单击“工具”和“Javascript控制台”。这里有一篇文章:Firefox有一个类似的“Web调试控制台”,甚至IE现在在你按下F12键时也支持它。我为所有的问题道歉,对于Javascript,我绝对是一个处女,更不用说情节了,你到目前为止帮了我很大的忙。
plotOptions:{}
在哪里?它如何设置series.data字段的格式?
    plotOptions: {
        pie: {
            dataLabels: {
                formatter: function() {
                    return parseFloat(this.y).toFixed(2);
                }
            }
        }
    },