使用数据库中的数据,我正在尝试模拟桑基图工作 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);
});
});
但我失败了。我无法找到我丢失的错误
请帮助我。
如果我需要任何进一步的信息,请告诉我。
从您在此处发布的代码来看,错误是您的
keys
作业。
你有:
"keys":"['from','to','weight']",
但必须是:
"keys": ['from','to','weight'],
也就是说,数组不应该用引号引起来,因为这样它将被解释为字符串。
在你的 PHP 中这意味着:
$series['keys'] = '[\'from\',\'to\',\'weight\']';
需要:
$series['keys'] = ['from', 'to', 'weight'];