【问题标题】:Create Google Chart data table array from two arrays从两个数组创建 Google Chart 数据表数组
【发布时间】:2013-04-07 23:48:15
【问题描述】:

我正在尝试使用 Google 的图表 api:https://google-developers.appspot.com/chart/interactive/docs/gallery/columnchart

我想使用两个数组来生成和标记可视化。但是,我找不到将这些数组组合并转换为正确对象结构的方法。

我的数组如下,它们的内容在它们旁边:

years;   // 2014,2015,2020,2021
sales;   // 100,100,200,100

我需要动态地使用这些数组来形成这个对象,它是 Google 的 API 使用的格式:

 var data = google.visualization.arrayToDataTable([
          ['Year', 'Sales'],
          ['2014',  100],
          ['2015',  100],
          ['2020',  200],
          ['2021',  100]
        ]);

感谢您的帮助。

【问题讨论】:

    标签: javascript arrays google-visualization


    【解决方案1】:

    您应该在 for 循环中使用 addColumnaddRow 来遍历您的数组。

    这是一个示例:

    function drawVisualization() {
      // Create and populate the data table.
      var years = ['2001', '2002', '2003', '2004', '2005'];
      var sales = [1, 2, 3, 4, 5];
    
      var data = new google.visualization.DataTable();
      data.addColumn('string', 'years');
      data.addColumn('number', 'sales');
    
      for(i = 0; i < years.length; i++)
        data.addRow([years[i], sales[i]]);
    
      // Create and draw the visualization.
      new google.visualization.LineChart(document.getElementById('visualization')).
        draw(data, {});
    }
    

    【讨论】:

      【解决方案2】:

      下面是完整的代码,数据填充分开。

      <?php
      
      function testing($chartId, $chartFunc, $chartTitle, $xAxisTitle, $chartData, $chartType)
      {
      $pageMeat =<<<EOD
      <html>
      <head>
      <script type="text/javascript" src="https://www.google.com/jsapi"></script>
      <script type="text/javascript">
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback($chartFunc);
      function $chartFunc() {
      var data = google.visualization.arrayToDataTable($chartData);
      
      var options = {
      title: '$chartTitle',
      hAxis: {title: '$xAxisTitle', titleTextStyle: {color: 'red'}}
      };
      EOD;
      
      if($chartType == "line") {
      $pageMeat .=<<<EOD
      var chart = new google.visualization.LineChart(document.getElementById('$chartId'));
      EOD;
      }
      else if($chartType == "pie") {
      $pageMeat .=<<<EOD
      var chart = new google.visualization.PieChart(document.getElementById('$chartId'));
      EOD;
      }
      else {
      $pageMeat .=<<<EOD
      var chart = new google.visualization.ColumnChart(document.getElementById('$chartId'));
      EOD;
      }
      $pageMeat .=<<<EOD
      chart.draw(data, options);
      }
      </script>
      </head>
      <body>
      <div id="$chartId" style="width: 900px; height: 500px;"></div>
      </body>
      </html>
      EOD;
      echo $pageMeat;
      }
      
      $gChartId = "vertColumns";
      $gChartFn = "columnChart";
      $gChartTitle = "Company Performance";
      $gXAxisTitle = "Year";
      
      $gChartData[] = array('Year', 'Sales', 'Expenses');
      $gChartData[] = array('2004', 1000, 400);
      $gChartData[] = array('2005', 1170, 460);
      $gChartData[] = array('2006', 660, 1120);
      $gChartData[] = array('2007', 1030, 540);
      
      testing($gChartId, $gChartFn, $gChartTitle, $gXAxisTitle, json_encode($gChartData), "column");
      ?>
      

      【讨论】:

        猜你喜欢
        • 2012-05-12
        • 2013-08-07
        • 2019-07-25
        • 1970-01-01
        • 1970-01-01
        • 2012-07-10
        • 1970-01-01
        • 2014-09-22
        • 2023-02-23
        相关资源
        最近更新 更多