php - 谷歌组合图问题

标签 php jquery mysql html google-visualization

我正在尝试使用谷歌图表创建组合图表, 在 CDN 和 div 下方添加的 HTML 中

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div" style="width: auto; height: 500px;"></div>

结果

var examname = <?php echo json_encode($examnames); ?>;
var highestScore = <?php echo json_encode($heighestScores); ?>;
var userScore = <?php echo json_encode($userScores); ?>;

var examname = ["Test Name 1", "Full Test", "Knowledge"]; 
var highestScore = ["8", "11", "10"];
var userScore = ["6", "11"];



google.charts.load('current', {
        'packages': ['corechart']
      });
      google.charts.setOnLoadCallback(drawVisualization);

      function drawVisualization() {
        // Some raw data (not necessarily accurate)
        var graphData = new google.visualization.DataTable();
        graphData.addColumn('string', 'TestName');
        graphData.addColumn('number', 'Height');
        graphData.addColumn('number', 'YourScore');

        for (var i = 0; i < examname.length; i++) {
          if (userScore[i] === undefined) {
            userScore[i] = 0;
          }
          console.log(userScore[i]);
          graphData.addRow(examname[i], {
            v: highestScore[i],
            f: userScore[i]
          });
        }
        //graphData = graphData.replace(/'/g, '"');
        //var data = google.visualization.arrayToDataTable(graphData);
        console.log(data);
        var options = {
          title: 'Score Dashboard',
          vAxis: {
            title: 'Score'
          },
          hAxis: {
            title: 'Exam Name'
          },
          seriesType: 'bars',
          series: {
            5: {
              type: 'line'
            }
          }
        };

        var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));
        chart.draw(graphData, options);
      }

JSFIDDLE

我收到一个错误:

Error: If argument is given to addRow, it must be an array, or null

即使我在谷歌搜索,但我不明白。请任何人帮助我解决问题。

最佳答案

你的传递(字符串,对象)。当它只期待(数组)时。

改变

graphData.addRow(examname[i], {
    v: highestScore[i],
    f: userScore[i]
});

graphData.addRow([
    examname[i],
    Number(highestScore[i]),
    Number(userScore[i])
]);

工作示例: https://jsfiddle.net/g4vjvam9/

注意:如果要填充最后一列,需要加上值:/

var userScore = ["6", "11", "2"];

还要避免使用字符串,否则您需要像上面那样使用 Number()

关于php - 谷歌组合图问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47710318/

相关文章:

php - 选择当前、上个月、上个月的数据并在图表上回显

php - 为什么在 php 中使用 imagecreatefromjpeg() 函数时会收到 "Corrupt JPEG data"消息?

php - 在 PHP 中创建数组的简单方法

php - jQuery ajax,发送数据

mysql - 计数总计和细目

php - 如何从mysql数据库中获取刚刚输入的表单数据的id

c# - 为什么 Facebook 使用 PHP 而不是 ASP.NET MVC?

javascript - 是否可以在我页面的一个特定部分使用一个 jquery?

javascript - 使用 jQuery $().find 解析带有命名空间的 XML

javascript - 带 JSON 的 JQuery 选择器