0

縦棒グラフを作成しようとしていますが、値が負の場合に縦棒を赤くしたいです。これが私の機能です:

function drawChartFlows(data, title, id) {

if (googleAPILoaded != true)
    return;

var array = new google.visualization.DataTable();
array.addColumn('number', 'months');
array.addColumn('number', 'flows');
var flows = dataToArray(data);
var series = [];
for (var it = 0; it < flows.length; it++) {
    var flow = Number(flows[it]);
    if (flow <= 0) {
        series[it] = 'red';
        array.addRow([it, (flow*(-1))]);
    } else {
        series[it] = 'blue';
        array.addRow([it, flow]);
    }
}
var options = {
        title: 'Cash flows for '+title,
        width: 1400,
        height: 800,
        legend: { position: 'none' },
        chart: { subtitle: 'monthly flows' },
        axes: {
            x: {
                0: { side: 'top', label: 'Cash flows'}
            }
        },
        bar: { groupWidth: "50%" },
        colors: series
};

var chart = new google.visualization.ColumnChart($(id)[0]);
chart.draw(array, options); 
}

列は正しく表示されますが、すべて青色です。すべての列の色が series[0] の色に依存していることに気付きました。series[0] が「青」の場合、series[] の他のスロットにどんな色を入れても、すべての列が青になります。

私は何を間違えましたか?前もって感謝します !

4

1 に答える 1

0

スタイルの列の役割を使用する

array.addColumn('number', 'months');
array.addColumn('number', 'flows');
array.addColumn({role: 'style', type: 'string'});

それから...

if (flow <= 0) {
    array.addRow([it, (flow*(-1)), 'color: red;']);
} else {
    array.addRow([it, flow, 'color: blue;']);
}
于 2016-05-31T00:36:15.540 に答える