【问题标题】:Set column color in google chart在谷歌图表中设置列颜色
【发布时间】:2014-07-01 19:46:18
【问题描述】:

我正在使用谷歌图表来构建折线图。我正在使用类别过滤器来切换显示的列,如下面的小提琴所示。

http://jsfiddle.net/asgallant/WaUu2/

如何为每列设置颜色,以便它们始终具有该颜色。例如,如果您在小提琴示例中删除列 Foo,则列 Bar 将获得其颜色。

google.load('visualization', '1', {packages: ['controls']});
google.setOnLoadCallback(drawChart);

function drawChart () {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Year');
    data.addColumn('number', 'Foo');
    data.addColumn('number', 'Bar');
    data.addColumn('number', 'Baz');
    data.addColumn('number', 'Cad');
    data.addRows([
        ['2005',  45, 60, 89, 100],
        ['2006',  155, 50, 79, 24],
        ['2007',  35, 31, 140, 53],
        ['2008',  105, 23, 43, 82],
        ['2009',  120, 56, 21, 67],
        ['2010',  65, 19, 34, 134],
        ['2011',  80, 23, 130, 40],
        ['2012',  70, 140, 83, 90]
    ]);

    var columnsTable = new google.visualization.DataTable();
    columnsTable.addColumn('number', 'colIndex');
    columnsTable.addColumn('string', 'colLabel');
    var initState= {selectedValues: []};
    // put the columns into this data table (skip column 0)
    for (var i = 1; i < data.getNumberOfColumns(); i++) {
        columnsTable.addRow([i, data.getColumnLabel(i)]);
        // you can comment out this next line if you want to have a default selection other than the whole list
        initState.selectedValues.push(data.getColumnLabel(i));
    }
    // you can set individual columns to be the default columns (instead of populating via the loop above) like this:
    // initState.selectedValues.push(data.getColumnLabel(4));

    var chart = new google.visualization.ChartWrapper({
        chartType: 'BarChart',
        containerId: 'chart_div',
        dataTable: data,
        options: {
            title: 'Foobar',
            width: 600,
            height: 400
        }
    });

    var columnFilter = new google.visualization.ControlWrapper({
        controlType: 'CategoryFilter',
        containerId: 'colFilter_div',
        dataTable: columnsTable,
        options: {
            filterColumnLabel: 'colLabel',
            ui: {
                label: 'Columns',
                allowTyping: false,
                allowMultiple: true,
                allowNone: false,
                selectedValuesLayout: 'belowStacked'
            }
        },
        state: initState
    });

    function setChartView () {
        var state = columnFilter.getState();
        var row;
        var view = {
            columns: [0]
        };
        for (var i = 0; i < state.selectedValues.length; i++) {
            row = columnsTable.getFilteredRows([{column: 1, value: state.selectedValues[i]}])[0];
            view.columns.push(columnsTable.getValue(row, 0));
        }
        // sort the indices into their original order
        view.columns.sort(function (a, b) {
            return (a - b);
        });
        chart.setView(view);
        chart.draw();
    }
    google.visualization.events.addListener(columnFilter, 'statechange', setChartView);

    setChartView();
    columnFilter.draw();
}

【问题讨论】:

    标签: javascript colors charts google-visualization


    【解决方案1】:

    试试这个:

    var colors=["#3366cc","#dc3912","#ff9900","#109618","#990099","#0099c6","#dd4477","#66aa00","#b82e2e","#316395","#994499","#22aa99","#aaaa11","#6633cc","#e67300","#8b0707","#651067","#329262","#5574a6","#3b3eac","#b77322","#16d620","#b91383","#f4359e","#9c5935","#a9c413","#2a778d","#668d1c","#bea413","#0c5922","#743411"];
    
        //the code
        view.columns.sort(function (a, b) {
            return (a - b);
        });
        chart.getOptions().series=[];
        for(var i=1;i<view.columns.length;i++){
            chart.getOptions().series.push({color:colors[view.columns[i]-1]});
        }
        //the code
    

    小提琴:http://jsfiddle.net/juvian/WaUu2/236/

    【讨论】:

    • 您先生真了不起。感谢您的快速回复。
    • 你能解释清楚一点吗?我正在尝试使用此解决方案在组合图中保持系列类型相同。我有一种“线条”类型,我想在选择和取消选择列时将其保留在列中。问题是我不太明白发生了什么。谢谢!我可以做 var types = [bar, bar, bar, bar, bar, bar, bar, line] 并使用相同的解决方案吗?
    • @Jglstewart 不确定我是否理解,你有小提琴吗?此代码用于为每个系列设置不同的颜色,即使取消选择某些列也保持相同的颜色。你设置的类型有多精确?
    • @juvian 看到这个问题stackoverflow.com/questions/28090882/…
    • @juvian,sn-p 适用于 Google Column Chart 吗?我有一个类似的问题,我需要为每个堆栈列设置颜色。
    猜你喜欢
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    相关资源
    最近更新 更多