我在stackoverflow上建立了这个问题:
Varying bar colors with morris.js bar chart?

我想要栏B中的数据高于或低于70,然后更改其颜色。

我只是想不通我在做什么错才能使它正常工作?

这是我的代码:

new Morris.Bar({
element: 'bar-example',
gridTextColor: '#00ff55',
data: [
    { y: '2006', a: 100, b: 90 },
    { y: '2007', a: 75,  b: 65 },
    { y: '2008', a: 50,  b: 40 },
    { y: '2009', a: 75,  b: 65 },
    { y: '2010', a: 50,  b: 40 },
    { y: '2011', a: 75,  b: 65 },
    { y: '2012', a: 100, b: 90 }
],
barColors : function(row, series, type) {
    if(data.b <70) return ['black', 'white'];
    else if(data.b >= 70) return ['white', 'black'];
},
xkey: 'y',
ykeys: ['a', 'b'],
labels: ['Series A', 'Series B']
});

最佳答案

barColors函数中,您需要查看series.key值以确定要处理的条形。之后,您可以根据需要返回值。
假设您希望B系列中的条形图低于70则为红色,否则为蓝色。系列A中的条始终是绿色的。
然后,您的barColors函数将如下所示:

barColors: function(row, series, type) {
  if(series.key == 'b')
  {
    if(row.y < 70)
      return "red";
    else
      return "blue";
  }
  else
  {
    return "green";
  }
}


有关此说明,请参见this jsbin

09-12 01:30