2017-09-11 2 views
0

J'utilise la fonctionnalité histogram de Google pour représenter graphiquement la sortie d'un modèle stochastique et superposer des barres supplémentaires au-dessus d'un autre graphique intéressant.Graphiques Google - histogramme: barres supplémentaires apparaissant aux côtés des données

Le graphique est généré en exécutant la fonction calculate_display_coverage() des centaines de fois avec différentes entrées. Je vous assure que les fonctionnements internes de la fonction ne sont pas un problème ici (je ne peux pas vraiment poster tout mon Fiddle, mais je montre à quoi ressemblent les données dans mon extrait de code).

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); 
} 

Avec HTML:

<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> 

Dans ce cas, où x = 100, l'histogramme comprend ces barres supplémentaires extra bars shown in 100 meta-run chart

mise en forme Un peu différent, mais même problème pour plus de points, où x = 2000.

extra bars shown in 100 meta-run chart

Tout le monde vu ceci avant?

Répondre

0

Le problème est que les deux colonnes de vos données sont numériques. Actuellement, il a le format

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

L'histogramme inclut donc les valeurs d'index en tant que points de données. Vous avez besoin de les jeter comme des chaînes, donc dans le code ci-dessus, la déclaration doit être

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

Cela supprimera les barres supplémentaires.