2

我想更改条形图中每个条形的颜色。目前,我尝试设置文档中指定的颜色选项:

var options = {
        'title' : results.title,
        'width' : 400,
        'height' : 300,
        'is3D' : true,
        'colors' : ["#194D86","#699A36", "#000000"],
        'allowHtml' : true
    }

但它不起作用。基本上,我希望下图中的每个条都具有相同的颜色:http: //jsfiddle.net/etiennenoel/ZThMp/12/

有没有办法做到这一点,还是我必须改变我的代码结构才能做到这一点?

4

2 回答 2

5

[编辑 - 在下面的编辑中有一个更好的方法]

Visualization API 按系列(或 DataTable 中的列,如果您愿意)为数据着色。解决方案是使用 DataView 将数据拆分为多个系列:

// get a list of all the labels in column 0
var group = google.visualization.data.group(data, [0], []);

// build the columns for the view
var columns = [0];
for (var i = 0; i < group.getNumberOfRows(); i++) {
    var label = group.getValue(i, 0);
    // set the columns to use in the chart's view
    // calculated columns put data belonging to each label in the proper column
    columns.push({
        type: 'number',
        label: label,
        calc: (function (name) {
            return function (dt, row) {
                return (dt.getValue(row, 0) == name) ? dt.getValue(row, 1) : null;
            }
        })(label)
    });
}
// create the DataView
var view = new google.visualization.DataView(data);
view.setColumns(columns);

将图表中的“isStacked”选项设置为“true”以修复导致的列间距问题,并使用视图而不是 DataTable 绘制图表:

var chart = new google.visualization.ColumnChart(document.querySelector('#chart_div'));
chart.draw(view, {
    // options
    isStacked: true
});

请参阅此处的示例。

[编辑:可视化 API 更新提供的新(改进)方法]

您现在可以使用新的“样式”列角色为您的列指定样式。它是这样工作的:

function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Name');
    data.addColumn('number', 'Value');
    data.addColumn({type: 'string', role: 'style'});
    data.addRows([
        ['Foo', 5, 'color: #ac6598'],
        ['Bar', 7, 'color: #3fb0e9'],
        ['Baz', 3, 'color: #42c698']
    ]);

    var chart = new google.visualization.ColumnChart(document.querySelector('#chart_div'));
    chart.draw(data, {
        height: 400,
        width: 600,
        legend: {
            position: 'none'
        }
    });
}
google.load('visualization', '1', {packages:['corechart'], callback: drawChart});

请参阅此处的示例:http: //jsfiddle.net/asgallant/gbzLB/

于 2013-07-23T18:24:06.010 回答
1

您的问题有一个解决方案。您需要添加series您的选项。我已经回答了类似类型的问题。在这里参考我的答案我希望这能帮到您。

于 2013-07-17T09:21:21.643 回答