我对谷歌图表api有点新,并且还在擦除我的PHP知识,所以也许有人可以帮助解决这个(IMO)的基本问题......
所以我有这个php类从服务器查询数据,应该将其发布回我的页面。其中有一个有效的折线图,您可以在下面的代码段中看到:
$rowdata = array();
$i=0;
$_POST['from'] = str_replace("/","-",$_POST['from']);
$_POST['to'] = str_replace("/","-",$_POST['to']);
$cur_date = $_POST['from'];
$sql = "SELECT DATE(entered),
COUNT(*) AS totalaccounts,
SUM(CASE WHEN facebook_username != '' THEN 1 ELSE 0 END) AS facebook,
SUM(CASE WHEN facebook_username = '' THEN 1 ELSE 0 END) AS standard
FROM Account
WHERE entered BETWEEN '". $_POST['from'] ."' AND '". $_POST['to'] ."'
GROUP BY DATE(entered)";
$result = $dbMain->query($sql);
$rows = tratarDadosParaGrafico($result);
$return = json_encode(array('cols' => $cols, 'rows' => $rows));
$data = array(
'cols' => array(
array('id' => '', 'label' => 'Date', 'type' => 'string'),
array('id' => '', 'label' => 'Total Accounts', 'type' => 'number'),
array('id' => '', 'label' => 'Total Accounts (Facebook)', 'type' => 'number'),
array('id' => '', 'label' => 'Total Accounts (Non Facebook)', 'type' => 'number')
),
'rows' => $rows
);
$chart = new Chart('LineChart');
$options = array('title' => 'Accounts');
$chart->load(json_encode($data));
echo $chart->draw('rchart', $options);
我试图做的是使用相同的查询结果($ data)来填充另一个图表,这个是一个饼图......所以我只是粘贴了最后4行代码,在创建新代码时更改了参数图表实例:
$chart = new Chart('PieChart');
$options = array('title' => 'Accounts');
$chart->load(json_encode($data));
echo $chart->draw('pchart', $options);
在此之后,我关闭了php标签并使用2个div显示我的图表......
<div id="rchart"></div>
<div id="pchart"></div>
这里的所有东西都来自这个index.php类,我根本没有看过html文件......我可以在折线图正下方看到饼图,但是它没有数据,即整个图表为灰色并标记为“其他”
我做错了什么?提前谢谢!
[编辑] 假设我想要一个只有2个切片的饼图,为什么下面的代码不起作用? (我得到“无法读取属性'1'未定义”错误)
$data = array(
'cols' => array(
array('label' => 'Pie slice labels', 'type' => 'string'),
array('label' => 'Pie slice values', 'type' => 'number')
),
'rows' => array(
array('v' => intval($facebook_accounts[0]), 'type' => 'int'),
array('v' => intval($default_accounts[0]), 'type' => 'int')
)
);
$chart = new Chart('PieChart');
$options = array('title' => 'Accounts');
$chart->load(json_encode($data));
echo $chart->draw('piechart', $options);
[编辑]也许这可以帮助你帮助我:) https://groups.google.com/forum/#!topic/google-visualization-api/Wi_WOVOgzG8
Creating Pie char from mysql database using php and google charts
答案 0 :(得分:2)
PieCharts不使用与LineCharts相同的数据结构。 PieCharts期望两列数据:第一列是饼图切片标签,第二列是饼图切片值。您必须重新配置数据拉取以使数据格式正确。
编辑:
以下是一些用于为PieChart构建DataTable的PHP伪代码示例:
$data = array(
'cols' => array(
array('label': 'Pie slice labels', type: 'string'),
array('label': 'Pie slice values', type: 'number')
),
'rows' => array()
);
while (/* loop over SQL results */) {
$data['rows'][] = array('c' => array(
array('v' => /* pie slice label */),
array('v' => /* pie slice value */) // use (int) or (float) to parse appropriately, as many databases output numbers as strings
));
}