bar图调色

要求:对一个[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图标。

----------------------------------

结果如下:

barchart

 

你可能感兴趣的:(js)