1

円グラフにハイチャートを使用しています。以下は、その JS コードです。

$(document).ready(function () {
var chart;

var graphData = $("#graphContentdata").val();
console.log(graphData);
var options = {
        chart: {
            renderTo: 'graphContainer',
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        title: {
            text: 'SOV'
        },
        tooltip: {
            formatter: function() {
                return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
            }
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                dataLabels: {
                    enabled: true,
                    color: '#000000',
                    connectorColor: '#000000',
                    formatter: function() {
                        return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
                    }
                }
            }
        },
        series: [{
            type: 'pie',
            name: 'Browser share',
           data: []
        }]
    }

    chart = new Highcharts.Chart(options);
    chart.series[0].setData("["+graphData+"]");

 });

データを生成するための PHP コード:

foreach ($sumArray as $key=>$value)
    {
        $sumArray[$key] = array_sum($value);
        $percent = (number_format(($sumArray[$key]/$sovGrandTotal)*100,2));

        $data[] =  "['$key', $percent]";            
    }
    $data = join(",", $data);

?>               
  <input type='hidden' id='graphContentdata' value="<?php echo $data; ?>">  

取得するデータ形式は次のとおりです。

['www.quora.com', 0.23],['www.slideshare.net', 0.25],['me', 99.52]

問題は:

chart.series[0].setData("["+graphData+"]");

graphDataグラフを作成していませんが、変数の場所にコンソールから値をコピーして貼り付けると、次のように機能します。

chart.series[0].setData([['www.quora.com', 0.23],['www.slideshare.net', 0.25],['me', 99.52]]);

は働いている。

ここでやっている間違いは何ですか?

4

1 に答える 1