【问题标题】:Create PieChart with google chart api and php使用 google chart api 和 php 创建 PieChart
【发布时间】:2013-10-07 13:47:35
【问题描述】:

我对 google chart api 还很陌生,但我的 php 知识仍在扫除,所以也许有人可以帮助解决这个(IMO)基本问题......

所以我有这个 php 类,它可以从服务器查询数据并将其发布回我的页面。其中有一个有效的折线图,您可以在下面的 sn-p 中看到:

$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

【问题讨论】:

    标签: php sql json google-visualization


    【解决方案1】:

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

    编辑:

    这里有一些 PHP 伪代码示例,用于为饼图构建 DataTable:

    $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
        ));
    }
    

    【讨论】:

    • 如果我尝试这样的事情怎么办:$col = array ('label' =&gt; 'facebook', 'type' =&gt; 'string', 'label' =&gt; 'facebook', 'type' =&gt; 'string'); $row = array ('label' =&gt; '10', 'type' =&gt; 'number', 'label' =&gt; '10', 'type' =&gt; 'number'); $teste = array($col, $row); 并调用“$chart->load(json_encode($teste));”?我收到“表没有列”错误
    • 代码输出的数据结构几乎是完全错误的。我将使用一些示例 PHP 代码修改我的答案以创建适当的数据数组。
    • 我想我还是遗漏了一些东西......您能否添加一些代码来说明如何使用静态内容创建这个数据数组? (以 $data 准备发送到 $chart-&gt;load() 的方式)谢谢
    • 我发布的代码(经过修改以实际填充数据)应该可以使用了。
    • 好吧,我在填充数据时遇到了麻烦,我还不清楚这个 DataTable 结构......我最终放弃了 php 并使用 javascript 代码 google suplies here (刚刚粘贴到我的 php 类中的一些 div)...
    猜你喜欢
    • 1970-01-01
    • 2017-01-16
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    相关资源
    最近更新 更多