簡體   English   中英

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

[英]Javascript+Highcharts: Substituting series.data for my own

我一直在為志願者的大學工作做這個腳本。

除了功率學校以外,請忽略所有參數。 這些是已使用json_encode()轉換為數組的SQL結果集。 結果集有一個字符串作為值,我相信,這樣既wattagesschools應該是字符串數組。

我想要做的是為餅圖輸入我自己的data ,在本例中是mySeries ,我一開始就將其建立/填充,然后作為data放置。

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");
}

問題是,上述方法不起作用。 由於我沒有使用環境(通過結果在notepad ++中編寫和在apache Web服務器上進行測試,因此我將結果中的問題手動刪除data: 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));

輸出不是您期望的:

["2.00", "3.00"]

看看如何將其轉換為字符串? 如果刪除“ toFixed”並讓格式化程序執行其工作,一切將會順利進行。

編輯

這是修復格式程序的方法:

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

yLabels格式化程序對餅沒有任何作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM