0

我对谷歌图表 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 的新实例时更改了参数:

$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

使用 php 和 google 图表从 mysql 数据库创建 Pie char

4

1 回答 1

2

PieCharts 不使用与 LineCharts 相同的数据结构。PieCharts 需要两列数据:第一列是饼图的标签,第二列是饼图的值。您将不得不重新配置您的数据提取以将数据以正确的格式放置。

编辑:

下面是一些用于为饼图构建 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
    ));
}
于 2013-10-07T14:15:48.940 回答