2016-07-12 4 views
1

Google 시각화 API를 사용하여 3 개의 그래프를 만들었지 만 그래프가 1 개만 표시됩니다. 그러나 페이지를 새로 고치거나 다른 브라우저로 이동하면 다른 그래프가 나타납니다. 모든 그래프를 표시하려면 어떻게합니까? @WhiteHat 제안을 사용했지만 작동하지 않았습니다. 여기에 자신의 제안 이후 업데이트 된 코드입니다 :Google API 시각화 차트가 작동하지 않습니다.

<script> 
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 

    ga('create', 'UA-66892235-1', 'auto'); 
    ga('send', 'pageview'); 
</script> 
<meta charset="utf-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<meta name="description" content=""> 
<meta name="author" content=""> 

<title>Analysis Tool</title> 

{% load staticfiles %} 

<!-- Bootstrap Core CSS --> 
<link rel="stylesheet" type="text/css" href="{% static 'home/css/bootstrap.min.css' %}" /> 

<!-- Custom CSS --> 
<link rel="stylesheet" type="text/css" href="{% static 'home/css/grayscale.css' %}" /> 
<link rel="stylesheet" type="text/css" href="{% static 'home/css/style.css' %}" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 

<!-- Custom Fonts --> 
<link href="{% static 'home/font-awesome/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css"> 

<link href="http://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" rel="stylesheet" type="text/css"> 
<link href="http://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css"> 
<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'> 
<link href='http://fonts.googleapis.com/css?family=Raleway:300,400,500,600' rel='stylesheet' type='text/css'> 


<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> 
<!-- WARNING: Respond.js doesn't work if you view the page via file:// --> 
<!--[if lt IE 9]> 
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> 
<![endif]--> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" ></script> 
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> 

<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.1.min.js" > </script> 

<script type="text/javascript"> 



    function printDiv(divName) { 
     var printContents = document.getElementById(divName).innerHTML; 
     console.log(printContents) 
     w=window.open(); 
     w.document.write("<html><head><title>Print Page</title>"); 
     w.document.write("{% load staticfiles %}") 
     w.document.write("<link rel='stylesheet' type='text/css' href='{% static 'home/css/bootstrap.min.css' %}' />") 
     w.document.write("<link rel='stylesheet' type='text/css' href='{% static 'home/css/style.css' %}' />") 
     w.document.write("<link href='http://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>") 
     w.document.write('</head><body>'); 
     w.document.write(printContents); 
     w.document.write('</body></html>'); 
     w.print(); 
     w.close(); 
    }  


    // Load the Visualization API and the piechart package.   
    google.charts.load('current', {callback: drawChart,packages: ['bar', 'corechart', 'line', 'table'] }); 

    // Set a callback to run when the Google Visualization API is loaded. 
    google.setOnLoadCallback(drawChart); 

    function drawChart() { 
     var djangoDataTable = {{ tableArr|safe }}; 
     var dataTable = google.visualization.arrayToDataTable(djangoDataTable); 

     var djangoData1 = {{ deathHBV_Final|safe }} 
     var data1 = google.visualization.arrayToDataTable(djangoData1); 

     var djangoData2 = {{ hcc_Final|safe }} 
     var data2 = google.visualization.arrayToDataTable(djangoData2); 

     var djangoData3 = {{ cirrhosis_Final|safe }} 
     var data3 = google.visualization.arrayToDataTable(djangoData3); 



     var options3 = { 
      title: "Mortality Rate HBV", 
      titleTextStyle :{ 
       fontSize:26, 
       fontName:'Raleway', 
      }, 
      colors: ['#ff7f50','#49B7A8'], 

      width: 400, 
      height: 400, 
      vAxis: { 
       title:'Percentage (%)', 
       maxValue: 100, 
      }, 
      hAxis:{ 
       title:'Year', 
      }, 
      legend:{ 
       position:'none', 
       maxLines: 2, 
      } 
     }; 

     var options4 = { 
      title: "Cirrhosis", 
      titleTextStyle :{ 
       fontSize:26, 
       fontName:'Raleway', 
      }, 
      colors: ['#ff7f50','#49B7A8'], 
      width: 400, 
      height: 400, 
      vAxis: { 
       title:'Percentage (%)', 
       maxValue: 100, 
      }, 
      hAxis:{ 
       title:'Year', 
      }, 
      legend:{ 
       position:'none', 
       maxLines: 2, 
      } 
     }; 

     var options5 = { 
      title: "Liver Cancer", 
      titleTextStyle :{ 
       fontSize:26, 
       fontName:'Raleway', 
      }, 
      colors: ['#ff7f50','#49B7A8'], 

      width: 400, 
      height: 400, 
      vAxis: { 
       title:'Percentage (%)', 
       maxValue: 100, 
      }, 
      hAxis:{ 
       title:'Year', 
      }, 
      legend:{ 
       position:'none', 
       maxLines: 2, 
      } 
     }; 

     var optionsTable = { 
      'showRowNumber': false, 
      'width': '100%', 
      'height': '100%', 
      'allowHtml': true, 
     }; 

     var chart3 = new google.visualization.LineChart(document.getElementById('linechart1')); 
     chart3.draw(data1, options3); 

     if({{ ifCirr }} == 0){ 
      var chart4 = new google.visualization.LineChart(document.getElementById('linechart2')); 
      chart4.draw(data3, options4); 
     } 

     var chart5 = new google.visualization.LineChart(document.getElementById('linechart3')); 
     chart5.draw(data2, options5); 

     for (y = 0; y < 4; y++){ 
      dataTable.setCell(y,0,String(djangoDataTable[y+1][0]),null,{'style': ' font-size:20px;'}) 
     } 

     for (j = 1; j < djangoDataTable[1].length; j += 2){ 
      for (i = 0; i < 4; i++) { 
       dataTable.setCell(i,j,String(djangoDataTable[i+1][j]),null,{'style': 'background-color: rgba(255,127,80,0.7); font-size:18px;'}) 
      } 
     } 

     for (j = 2; j < djangoDataTable[1].length; j += 2){ 
      for (i = 0; i < 4; i++) { 
       dataTable.setCell(i,j,String(djangoDataTable[i+1][j]),null,{'style': 'background-color: #49b7a8; font-size:18px;'}) 
      } 
     } 

     var table = new google.visualization.Table(document.getElementById('table_div')); 
     table.draw(dataTable, optionsTable); 
    } 

    $('#mailform').submit(function(){ 
     var formAction = $("#selectmail").val() == "technical" ? "[email protected]" : "[email protected]"; 
     $("#mailform").attr("action", "MAILTO:" + formAction); 
    }); 

</script> 

답변

0

첫 번째는, 이전 라이브러리 jsapiloader.js를 사용하는 것이 좋습니다.

<script src="https://www.gstatic.com/charts/loader.js"></script>
대 다음
<script src="https://www.google.com/jsapi"></script>

load 명령문은 페이지로드 당 한 번만 호출해야합니다.
이는 임의 차트 선택의 이유 일 수 있습니다.
그리고 한 번에 필요한 모든 packages을로드 할 수 있습니다.

시도이 교체 ...이와

// Load the Visualization API and the piechart package. 
google.load('visualization', '1.0', {'packages':['corechart']}); 
google.load('visualization', '1', {'packages': ['corechart', 'bar']}); 
google.load('visualization', '1.1',{'packages': ['line']}); 
google.load("visualization", "1.0", {'packages':['table']}); 
// Set a callback to run when the Google Visualization API is loaded. 
google.setOnLoadCallback(drawChart); 

...

google.charts.load('current', { 
    callback: drawChart, 
    packages: ['bar', 'corechart', 'line', 'table'] 
}); 
+0

나는 오류 내 호스팅 웹 사이트와 깨달았다. 코드가 작동합니다! 정말 고맙습니다! –

+0

안녕하세요. 나는 그것을 호스팅했으며 여전히 오류가 발생하고 있습니다. 한 번만 작동했지만 다른 양식 입력을 사용하면 작동하지 않습니다. 내가 뭘해야하는지 알려줘. –

+0

나는 Heroku를 사용하고 있으며 매우 느리다 고 생각합니다. 그게 문제라고 생각하니? –

관련 문제