Диаграмма Google, различный цвет для каждой панели.
У меня есть эта диаграмма Google:
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',
});
}
Все работает нормально, но дело в том, что оба столбца имеют один и тот же цвет, и я хотел бы иметь разные цвета для каждого бара.
Может ли кто-нибудь помочь мне в этом?
Ответы
Ответ 1
Один хакерский способ сделать что-то поместил все в одну строку, и 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
Ответ 2
Точно вам нужно вставить атрибут colors в переменную options.
...
var options = {
width: 600,
height: 175,
title: 'Total',
legend: 'none',
colors: ['red', 'green']
};
chart.draw(data, options);
...
Ответ 3
Не знаю, почему никто не упоминал столбцы роли стиля - я предполагаю, что они были добавлены после первоначального вопроса, но для тех, кто ищет это сейчас, лучший способ:
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',
});
}
Ответ 4
Пожалуйста, добавьте это в опции:
colors:['red','#009900']
Как
var options = {
title: 'Company Performance',
vAxis: {title: 'Year', titleTextStyle: {color: 'red'}},
colors:['red','#009900']
};
Ответ 5
Вот мой ответ. Он заботится о преобразовании массива в 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();
}
});
Ответ 6
Для тех, кто использует круговую диаграмму:
Добавьте 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' }
}
};