php - 使用mysql数据生成Google图表

标签 php charts

我正在寻找一种解决方案来显示每个销售模型每月的数量总和(一个图表中的多行 --> 请参阅下面带有原始代码的示例)。

我可以使用 while 循环来运行销售模型:

   var data = new google.visualization.DataTable();
    data.addColumn('number', 'Day');
    <?php
        $query = "SELECT DISTINCT Model FROM stats LIMIT 3";
        $result = mysql_query($query);

        while ($row = mysql_fetch_array($result))
        {
            $value = $row['Model'];
            echo "data.addColumn('number', '".$value."');";
        }

然而,如何循环遍历为正确的销售模式注册销售的所有天/月/年?我如何获得每个销售模型的数量总和,如下面的“data,addRows”。

  data.addRows([
    [1,  37.8, 80.8, 41.8],
    [2,  30.9, 69.5, 32.4],
    [3,  25.4,   57, 25.7],
    [4,  25.4,   57, 25.7],
    [5,  25.4,   57, 25.7],
    [6,  25.4,   57, 25.7],
  ]);

原始代码

 <html>
  <head>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      
google.charts.load('current', {'packages':['line']});
google.charts.setOnLoadCallback(drawChart);

  function drawChart() {

      var data = new google.visualization.DataTable();
      data.addColumn('number', 'Day');
      data.addColumn('number', 'Sales Model 1');
      data.addColumn('number', 'Sales Model 2');
      data.addColumn('number', 'Sales Model 3');

      data.addRows([
        [1,  37.8, 80.8, 41.8],
        [2,  30.9, 69.5, 32.4],
        [3,  25.4,   57, 25.7],
        [4,  25.4,   57, 25.7],
        [5,  25.4,   57, 25.7],
        [6,  25.4,   57, 25.7],
      ]);

      var options = {
        chart: {
          title: 'Sales',
        },
        width: 900,
        height: 500
      };

      var chart = new google.charts.Line(document.getElementById('linechart_material'));

      chart.draw(data, options);
    }
    </script>
  </head>
  <body>
    <div id="linechart_material" style="width: 900px; height: 500px"></div>
  </body>
</html>

最佳答案

谷歌有group() method这将为你做到这一点

只需提供要分组的列以及其余列的聚合公式

请参阅以下工作片段,绘制了一个表格,其中包含每个销售模型的总和...

google.charts.load('current', {'packages':['line', 'table']});
google.charts.setOnLoadCallback(drawChart);

function drawChart() {
  var data = new google.visualization.DataTable();
  data.addColumn('number', 'Day');
  data.addColumn('number', 'Sales Model 1');
  data.addColumn('number', 'Sales Model 2');
  data.addColumn('number', 'Sales Model 3');

  data.addRows([
    [1,  37.8, 80.8, 41.8],
    [2,  30.9, 69.5, 32.4],
    [3,  25.4,   57, 25.7],
    [4,  25.4,   57, 25.7],
    [5,  25.4,   57, 25.7],
    [6,  25.4,   57, 25.7],
  ]);

  var options = {
    chart: {
      title: 'Sales',
    },
    width: 900,
    height: 500
  };

  var chart = new google.charts.Line(document.getElementById('linechart_material'));
  chart.draw(data, options);

  var dataGroup = google.visualization.data.group(
    data,
    // modifier column to total all rows
    [{column: 0, type: 'string', modifier: function () {return '';}}],
    // sum columns
    [
      {column: 1, type: 'number', aggregation: google.visualization.data.sum},
      {column: 2, type: 'number', aggregation: google.visualization.data.sum},
      {column: 3, type: 'number', aggregation: google.visualization.data.sum}
    ]
  );

  var table = new google.visualization.Table(document.getElementById('tablechart'));
  table.draw(dataGroup);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="linechart_material"></div>
<div id="tablechart"></div>

关于php - 使用mysql数据生成Google图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39574489/

相关文章:

php - 为 mysql 问题交换 pdo

javascript - Chart Js多轴,在数据集激活/停用时使刻度出现/消失

javascript - react-chartjs 饼图不呈现

map - Web 应用程序中的地理数据可视化

php - 同一组联接表上的 Mysql 联合

使用 JOIN 的 PHP MySQL 选项

php - "Inactive Wrapper"创建大量空白

2行之间的PHP friend 关系?

javascript - 谷歌图表 JSON

charts - Flutter 包失败