要求:对一个[x, y]序列画一个bar图,把某些特殊数据用特殊颜色显示出来。
方法有多种,比如,画完图,再用js改颜色,结果要写很多代码,而且要考虑各种事件,实现难度大,而且容易招错。
也可以从改造数据结构入手,把[x, y]改成[x, y1, y2],不同的y对应不同颜色,这种方法值得实现。
下面以google chart为例:
<html>
<head>
</head>
<body>
<div id="chart_div" style="width: 500px;"></div>
https://developers.google.com/chart/interactive/docs/gallery/barchart
</body>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Year', 'Sales', 'Sales'],
['2004', 1000, null],
['2005', null, 460],
['2006', 660, null],
['2007', 1030, null]
]);
var options = {
title: 'Company Performance',
isStacked: true,
vAxis: {title: 'Year', titleTextStyle: {color: 'red'}},
series:{1:{visibleInLegend: false}}
};
var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</html>
我们把数据1改成数据2:
----------数据1==[原始数据]
var data = google.visualization.arrayToDataTable([
['Year', 'Sales'],
['2004', 1000],
['2005', 460],
['2006', 660],
['2007', 1030]
]);
----------数据2==[改造后的数据]
var data = google.visualization.arrayToDataTable([
['Year', 'Sales', 'Sales'],
['2004', 1000, null],
['2005', null, 460],
['2006', 660, null],
['2007', 1030, null]
]);
----------------------------------
isStacked: true 可以使bar对齐,好像只显示[x, y]。
series:{1:{visibleInLegend: false}} 可以隐藏y2的legend图标。
----------------------------------
结果如下: