0

J'utilise le diagramme à colonnes Google pour visualiser les données.Diagramme à colonnes Google: La hauteur des colonnes n'est pas proportionnelle à la valeur

Problème:

Malheureusement, avec une certaine entrée les hauteurs des barres de colonne ne sont pas en proportion.


Erreur Reproduction:

I reconstructed this in a simple JsFiddle.

Here is an other example, which contains a working and a not working version.


Question:

Comment la question soit fixé, de sorte que la hauteur est proportionnelle à la différence de valeur de mes colonnes.

Si par exemple une colonne a la valeur 20.000 et l'autre 40.000, la hauteur du premier doit être moitié moins élevée que pour la deuxième colonne.

Merci beaucoup.


exemples de code & images:

Voici mon jsFiddleCode:

Html:

<body> 
    <h1> 
    Weird height of <a href="https://developers.google.com/chart/interactive/docs/gallery/columnchart">Google Column Chart</a> Bars. 
    </h1> 

    <div id="columnchart_values"></div> 

    <h1> 
    Correct height of <a href="https://developers.google.com/chart/interactive/docs/gallery/columnchart">Google Column Chart</a> Bars. 
    </h1> 

    <div id="columnchart_values2"></div> 

</body> 

Javascript:

function numberWithCommas(x) { 
    var parts = x.toString().split("."); 
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, "."); 

    if(typeof(parts[1]) != 'undefined'){ 
    parts[1] = parts[1].substr(0,2); 
    } 

    return parts.join(","); 
} 

function drawChart1() { 

    var data = google.visualization.arrayToDataTable([ 
    ['Quelle', 'Geldbetrag', { role: 'style' }, { role: 'annotation' } ], 
    ['test1', 40000, '#11368A', 'Cu' ], 
    ['test2', 29400, '#000357', 'Ag' ], 
    ['test3', 22193, '#40F020', 'Au' ], 
    ]); 

    var view = new google.visualization.DataView(data); 
    view.setColumns([0, 1, 
        { calc: "stringify", 
        sourceColumn: 1, 
        type: "string", 
        role: "annotation" }, 
        2]); 

    var options = { 
    title: "Density of Precious Metals, in g/cm^3", 
    width: 600, 
    height: 400, 
    bar: {groupWidth: "95%"}, 
    legend: { position: "none" }, 
    }; 
    var chart = new google.visualization.ColumnChart(document.getElementById("columnchart_values")); 
    chart.draw(view, options); 
} 
function drawChart2() { 
/*only the data of test 3 changed*/ 
    var data = google.visualization.arrayToDataTable([ 
    ['Quelle', 'Geldbetrag', { role: 'style' }, { role: 'annotation' } ], 
    ['test1', 40000, '#11368A', 'Cu' ], 
    ['test2', 29400, '#000357', 'Ag' ], 
    ['test3', 19000, '#40F020', 'Au' ], 
    ]); 

    var view = new google.visualization.DataView(data); 
    view.setColumns([0, 1, 
        { calc: "stringify", 
        sourceColumn: 1, 
        type: "string", 
        role: "annotation" }, 
        2]); 

    var options = { 
    title: "Density of Precious Metals, in g/cm^3", 
    width: 600, 
    height: 400, 
    bar: {groupWidth: "95%"}, 
    legend: { position: "none" }, 
    }; 
    var chart = new google.visualization.ColumnChart(document.getElementById("columnchart_values2")); 
    chart.draw(view, options); 
} 
google.charts.load('current', {packages: ['corechart'], 'language': 'de'}); 
google.charts.setOnLoadCallback(function(){ 
    drawChart1(); 
    drawChart2(); 
}); 

enter image description here

Répondre

0

Ajout: Vaxis: {minValue: 0, format: '€ #, ###'} aux options permet de résoudre le problème.

1

Le comportement actuel est de rester rétrocompatible avec ce qu'il était il y a des années. Maintenant, il inclura la valeur de base dans le graphique s'il est "assez proche" des données. Mais vous pouvez forcer l'inclusion de la valeur de base des barres dans le graphique en spécifiant simplement la valeur de base explicitement. Pour exemple, il suffit d'ajouter:

vAxis: { baseline: 0 }

vos options. Voir https://jsfiddle.net/2betxw5u/2/