簡體   English   中英

谷歌圖表,每個欄的顏色不同

[英]Google Chart, different color for each bar

我有這個谷歌條形圖:

  function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', '');
    data.addColumn('number', '');
    data.addRows(2);
    data.setValue(0, 0, 'Value 1');
    data.setValue(0, 1, 250);
    data.setValue(1, 0, 'Value 2');
    data.setValue(1, 1, 100);

    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
    chart.draw(data, {
        width: 400, 
        height: 175, 
        title: 'Total',
        legend: 'none',
    });
  }

所有運行都沒問題,但問題是,兩個條都有相同的顏色,我希望每個條都能有不同的顏色。

誰可以幫我這個事?

不知道為什么沒有人提到樣式角色列 - 我認為它們是在最初的問題之后添加的,但對於現在正在尋找這個的人來說,更好的方法是:

function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', '');
        data.addColumn('number', '');
        data.addColumn({ type: 'string', role: 'style' });

        data.addRows(2);

        data.setValue(0, 0, 'Value 1');
        data.setValue(0, 1, 250);
        data.setValue(0, 2, 'rgb(200, 20, 60)');
        data.setValue(1, 0, 'Value 2');
        data.setValue(1, 1, 100);
        data.setValue(1, 2, 'rgb(20, 200, 60)');

        var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
        chart.draw(data, {
                width: 400, 
                height: 175, 
                title: 'Total',
                legend: 'none',
        });
    }

您可以設置許多其他CSS樣式,使您的圖表真的很難看。

https://developers.google.com/chart/interactive/docs/gallery/columnchart#Colors

請注意,它似乎不支持rgba()指定的顏色 - 您必須在樣式角色上設置不透明度。

這是一個小提琴:

http://jsfiddle.net/a1og7rq4/

SIDENOTE:如果您有多個系列,那么在每個系列數據列之后需要一個樣式角色列。

這是另一個小提示(顯示不透明度): http//jsfiddle.net/v5hfdm6c/1

這是修改后的功能(為清晰起見,保留上面未經修改的功能)

function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', '');
data.addColumn('number', '');
data.addColumn({ type: 'string', role: 'style' });
data.addColumn('number', '');
data.addColumn({ type: 'string', role: 'style' });

data.addRows(2);

var i = 0;
data.setValue(0, i++, 'Value 1');
data.setValue(0, i++, 200);
data.setValue(0, i++, 'color:rgb(200, 20, 60); opacity:0.5');
data.setValue(0, i++, 250);
data.setValue(0, i++, 'rgb(200, 20, 60)');

i = 0;
data.setValue(1, i++, 'Value 2');
data.setValue(1, i++, 120);
data.setValue(1, i++, 'color:rgb(20, 200, 60); opacity:0.5');
data.setValue(1, i++, 100);
data.setValue(1, i++, 'rgb(20, 200, 60)');

var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, {
    width: 400, 
    height: 175, 
    title: 'Total',
    legend: 'none',
});

}

一種hacky做事的方法是將它們全部放在同一行,而API會為此分配不同的顏色。 因此,以你的例子

function drawChart(){

    var data = new google.visualization.DataTable();
    data.addColumn('number', 'Value 1');
    data.addColumn('number', 'Value 2');
    data.addRows(2);
    data.setValue(0, 0, 250);
    data.setValue(0, 1, 100);

    var chart = new google.visualization.ColumnChart(document.getElementById('visualization'));

    chart.draw(data, {
        width: 600, 
        height: 175, 
        title: 'Total',
        legend: 'none',
    });
} 

如果您需要自己的顏色,請在chart.draw選項中添加,例如,

colors: ['red','yellow', 'blue'],

如果有太多的酒吧,這可能是一個不好的選擇,請看

http://code.google.com/apis/chart/interactive/docs/reference.html#barformatter

確切地說,您必須將colors屬性插入options變量中。

...

var options = {
    width: 600, 
    height: 175, 
    title: 'Total',
    legend: 'none',
    colors: ['red', 'green']
};

chart.draw(data, options);
...

請在選項中添加:

colors:['red','#009900']

喜歡:

var options = {
          title: 'Company Performance',
          vAxis: {title: 'Year',  titleTextStyle: {color: 'red'}},
          colors:['red','#009900']
};

這是我的答案。 它負責將數組轉換為dataTable

function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Season');
        data.addColumn('number', 'Deaths');
        data.addColumn({
            type: 'string',
            role: 'style'
        });

        var dataArray = new Array();
        dataArray[0] = ['Season 1', 1000, "#A0A0A0"]
        dataArray[1] = ['Season 2', 1170, "#FF3344"]
        dataArray[2] = ['Season 3', 660, "#BCBCBC"]
        dataArray[3] = ['Season 4', 1248, "#B3B3B8"]
        dataArray[4] = ['Season 5', 14353, "RED"];

        var charTitle = "Total deaths in Game of Thrones Series VS Screen Play Time";
        var noOfBars = dataArray.length;

        data.addRows(noOfBars);

        for (var row = 0; row < noOfBars; row++) {
            var label=dataArray[row][0];
            var value=dataArray[row][1];
            var color=dataArray[row][2];
                data.setValue(row, 0, label);
                data.setValue(row, 1, value);
                data.setValue(row, 2, color);
        }



    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
    chart.draw(data, {
        width: 600,
        height: 300,
        title: charTitle,
    });
}

google.load("visualization", "1", {
    packages: ["corechart"],
    callback: function () {
        drawChart();
    }
});

對於那些使用餅圖的人:

添加slices

// Set chart options
    var options = {'title':'How Much Pizza I Ate Last Night',
                   'width':400,
                   'height':300,
                    slices: {
                        0: { color: 'yellow' },
                        1: { color: 'transparent' }
                      }
                  };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM