【问题标题】:How to add Google Column Chart and Google Table Chart in the same page?如何在同一页面中添加谷歌柱形图和谷歌表格图?
【发布时间】:2016-02-02 11:04:34
【问题描述】:

我正在尝试在同一页面中添加一个谷歌柱形图,然后是一个谷歌图表。在添加柱形图时它工作正常,但是一旦我添加了表格图表,我就会在谷歌柱形图的代码中得到一个错误。错误是: 您使用错误类型的数据而不是 DataTable 或 DataView 调用了 draw() 方法。

有趣的部分是,当我删除提供指向 Google 表格图表所需的 javascript 文件链接的行时,此错误就会消失。该行是:

以下是我的代码,谁能帮我解决如何在同一页面中添加谷歌柱形图和谷歌表格图?

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>MyTitle</title>
    <!-- Bootstrap Styles-->
    <link href="assets/css/bootstrap.css" rel="stylesheet" />
     <!-- FontAwesome Styles-->
    <link href="assets/css/font-awesome.css" rel="stylesheet" />
        <!-- Custom Styles-->
    <link href="assets/css/custom-styles.css" rel="stylesheet" />
     <!-- Google Fonts-->
   <link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css' />
   <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
   <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1.1','packages':['corechart', 'table', 'bar']}]}"></script>
    <script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1.1','packages':['bar']}]}"></script>

</head>

<script type="text/javascript">
      google.load("visualization", "1.1", {packages:["bar"]});
        google.setOnLoadCallback(drawChart1);


      function drawChart1() {
      var abc = $.ajax({url:'kpi24.php',async:false,dataType:"json",}).responseText;
        var data = new google.visualization.DataTable(abc);

        var options = {
          chart: {
            title: '',
            subtitle: '',
          },
          bars: 'vertical',
          vAxis: {format: 'percent'},
          legend: { position: 'right', maxLines: 3 },
          colors: ['#20488D', '#EA922B']
        };

       var chart = new google.charts.Bar(document.getElementById('columnchart_material'));


        chart.draw(data, options);
      }
    </script>



    <script type="text/javascript">

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

      function drawTable() {
      var abcnew = $.ajax({url:'kpi26.php',async:false,dataType:"json",}).responseText;
        var datanew = new google.visualization.DataTable(abcnew);

        var table = new google.visualization.Table(document.getElementById('table_div'));

        table.draw(datanew, {showRowNumber: true, width: '100%', height: '100%'});
      }

</script>

<body>
    <div id="wrapper">

        <!-- /. NAV SIDE  -->


                  <div class="panel panel-default">
                            <div class="panel-heading">
                                Top 5 Doctors 

                            </div> 
                            <div class="panel-body">
                                <div id="columnchart_material" style="width: 1200px; height: 300px;"></div>
                            </div>
                        </div>



                  <div class="panel panel-default">
                            <div class="panel-heading">
                                Doctors by Hospital Revenue


                            </div> 
                            <div class="panel-body">

                                <div id="table_div"></div>
                            </div>
                        </div>





                 <!-- /. ROW  -->
                </div>
             <!-- /. PAGE INNER  -->
            </div>
         <!-- /. PAGE WRAPPER  -->
        </div>
     <!-- /. WRAPPER  -->
    <!-- JS Scripts-->
    <!-- jQuery Js -->
    <script src="assets/js/jquery-1.10.2.js"></script>
      <!-- Bootstrap Js -->
    <script src="assets/js/bootstrap.min.js"></script>
    <!-- Metis Menu Js -->
    <script src="assets/js/jquery.metisMenu.js"></script>
      <!-- Custom Js -->
    <script src="assets/js/custom-scripts.js"></script>


</body>
</html>

【问题讨论】:

    标签: google-api google-visualization


    【解决方案1】:

    google 加载次数过多。
    google.loadgoogle.setOnLoadCallback 只能调用一次。

    材料柱形图和表格图需要的包是bartable

    在这里,我删除了两个autoload 脚​​本,并在柱形图之后绘制了表格图。

    另外,我建议将&lt;script&gt; 标签添加到&lt;head&gt;&lt;body&gt;

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    
      <title>MyTitle</title>
    
      <!-- Bootstrap Styles-->
      <link href="assets/css/bootstrap.css" rel="stylesheet" />
      <!-- FontAwesome Styles-->
      <link href="assets/css/font-awesome.css" rel="stylesheet" />
      <!-- Custom Styles-->
      <link href="assets/css/custom-styles.css" rel="stylesheet" />
      <!-- Google Fonts-->
      <link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css' />
    
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    
      <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
      <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    
      <script type="text/javascript">
        google.load("visualization", "1.1", {packages:["bar", "table"]});
        google.setOnLoadCallback(drawChart1);
    
        function drawChart1() {
          var abc = $.ajax({url:'kpi24.php',async:false,dataType:"json",}).responseText;
          var data = new google.visualization.DataTable(abc);
    
          var options = {
            chart: {
              title: '',
              subtitle: '',
            },
            bars: 'vertical',
            vAxis: {format: 'percent'},
            legend: { position: 'right', maxLines: 3 },
            colors: ['#20488D', '#EA922B']
          };
    
          var chart = new google.charts.Bar(document.getElementById('columnchart_material'));
          chart.draw(data, options);
    
          // draw table chart
          drawTable();
        }
      </script>
    
      <script type="text/javascript">
        function drawTable() {
          var abcnew = $.ajax({url:'kpi26.php',async:false,dataType:"json",}).responseText;
          var datanew = new google.visualization.DataTable(abcnew);
          var table = new google.visualization.Table(document.getElementById('table_div'));
          table.draw(datanew, {showRowNumber: true, width: '100%', height: '100%'});
        }
      </script>
    </head>
    

    【讨论】:

    • 如果你不使用它,你不需要加载 www.gstatic.com/charts/loader.js。如果你想使用它,你需要改变你的 google.load() 和 google.setOnLoadCallback() 调用。在此处查看文档:developers.google.com/chart/interactive/docs/…
    猜你喜欢
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    相关资源
    最近更新 更多