Sankey 图无法使用 json 输出进行交付

问题描述 投票:0回答:1

使用数据库中的数据,我正在尝试模拟桑基图工作 JSFiddle。

我正在使用下面的代码组装我的数据

// sdata.php
<?php
$con = sqlsrv_connect($server, $options);
if (!$con){die('Could not connect: ' . sqlsrv_error());}
$sql_query = "select * from test_data";
$result = sqlsrv_query($con, $sql_query);
$series = array(); 
$series['type'] = 'sankey'; 
$series['name'] = 'Gendata'; 
$series['keys'] = '[\'from\',\'to\',\'weight\']'; 

while($r = sqlsrv_fetch_array($result)) 
{ 
$series1 = array(); 
$series1[] = $r['PARENT']; 
$series1[] = $r['CHILD']; 
$series1[] = $r['DGEN'];
$series['data'][] = $series1;
}
$result = array(); 
array_push($result,$series); 
print json_encode($result, JSON_NUMERIC_CHECK); 
sqlsrv_close($con);
?>


我的 JSON 看起来像

    [{
   "type":"sankey",
   "name":"Gendata",
   "keys":"['from','to','weight']",
   "data":[
      ["GROUP","COAL",24.46], ["GROUP","GAS",11.96],["GROUP","HYDRO",19.36],
      ["HYDRO","HYD",19.36], ["COAL","ER2",22.4],["GAS","NR",19]
          ]
    }]

我的图表渲染代码看起来像

$(document).ready(function() {  
var options = {
          chart: {
           renderTo: 'container',
            showAxes: true
                 },
          yAxis: [{
            lineWidth: 1,
            tickPositions: [0, 1, 2, 3]
                 }],
          title: {
                text: 'Sankey Diagram'
                 },
          series: []
}
$.getJSON("sdata.php", function(resp) {
 console.log(resp);
 options.series[0] = resp[1]; //option 1 to assign the data in series
 //options.series.push.resp; //option 2 to push the data in series
 chart = new Highcharts.Chart(options);
});
});

但我失败了。我无法找到我丢失的错误
请帮助我。

如果我需要任何进一步的信息,请告诉我。

php jquery json highcharts sankey-diagram
1个回答
0
投票

从您在此处发布的代码来看,错误是您的

keys
作业。

你有:

"keys":"['from','to','weight']",

但必须是:

"keys": ['from','to','weight'],

也就是说,数组不应该用引号引起来,因为这样它将被解释为字符串。

在你的 PHP 中这意味着:

$series['keys'] = '[\'from\',\'to\',\'weight\']'; 

需要:

$series['keys'] = ['from', 'to', 'weight']; 

工作示例:https://jsfiddle.net/ewolden/aeh02djx/

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.