簡體   English   中英

Highcharts餅圖數據通過php設置格式

[英]Highcharts Pie chart data Format via php

我正在使用Highcharts繪制餅圖。 下面是它的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+"]");

不創建圖形,但是如果我從控制台復制值, graphDatagraphDatagraphData變量的位置,其工作方式如下:

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

正在工作。

這是怎么了?

問題是您在使用時將數據作為字符串傳遞

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

您需要將數據設置為Array 您可以通過使用eval轉換String來實現:

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

您還可以使用jQuery將String轉換為JSON ,但是在這種情況下, 必須使用雙引號打開和關閉String:

$.parseJSON("[[\"www.quora.com\", 0.23],[\"www.slideshare.net\", 0.25],[\"me\", 99.52]]");

暫無
暫無

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

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