2017-09-11 9 views
0

JavaScript의 Google histogram 기능을 사용하여 확률 모델의 출력을 그래프로 나타냅니다. 멋진 차트 상단에 여분의 막대가 오버레이됩니다.Google 차트 - 히스토그램 : 데이터 옆에 여분의 막대가 표시됩니다.

도표는 다른 입력으로 calculate_display_coverage() 기능을 수백 번 실행하여 생성됩니다. 함수의 내부 동작이 여기에 문제가되지 않는다는 것을 확신합니다 (필자의 전체 피들을 게시 할 수는 없지만 코드 스 니펫에서 데이터가 어떻게 보이는지 보여줍니다). HTML로

gender = { 
    gender1: "Male", 
    gender2: "Female" 
}; 
device = { 
    device1: "Tablet", 
    device2: "Mobile", 
    device3: "Desktop" 
}; 
var paramstring = ""; 

resultArray = []; 
resultArray[0] = ['Run','Coverage']; 
var q = 1; 

for (var x = 0; x < 100; x++) { 
    for (var y in gender) { 
     for (var w in device) { 
      for (var z = 1950; z < 1980; z++) { 
       paramstring = "09/21/"; 
       paramstring += z.toString(); 
       resultArray[q] = [q,calculate_display_coverage('SIW', y, paramstring, w).displayed]; 
       q++ 
      } 
     } 
    } 
} 

// dataset looks like [['Run','Coverage'],[1,80000],[2,42000],...] 

google.charts.load("current", {packages:["corechart"]}); 
google.charts.setOnLoadCallback(drawChart); 
function drawChart() { 
    var data = google.visualization.arrayToDataTable(resultArray); 

    var options = { 
     title: 'Model output by coverage', 
     legend: { position: 'none' }, 
    }; 

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

: x = 100는, 히스토그램이 추가 바

다소 다른 형식하지만 더 실행, x = 2000에 대한 동일한 문제 extra bars shown in 100 meta-run chart가 포함이 경우,

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"> 
</script> 

<body> 
    <div id="chart_div" style="width: 900px; height: 500px;"></div> 
</body> 

.

extra bars shown in 100 meta-run chart

사람은 전에 본?

답변

0

문제는 데이터의 두 열이 모두 숫자입니다. 현재 형식은

[['Run','Count'],[1,80000],[2,42000],...] 

입니다. 따라서 히스토그램은 데이터 값으로 색인 값을 포함합니다. 당신은 문자열로 캐스팅 할 필요가 있으므로 위의 코드에서 문은 별도의 막대를 제거합니다

resultArray[q] = [q.toString(),calculate_display_coverage('SIW', y, paramstring, w).displayed]; 
// [['Run','Count'],['1',80000],['2',42000],...] 

해야한다.