我想创建一个颜色函数,当值为负时显示红色,否则在条形图中显示绿色。
这是我到目前为止想出的:
var colorChoice = d3.scale.ordinal().domain(["positive","negative"])
.range(["#00FF00","#FF0000"]);
hitsPerDaybarChart
.colors(function(d) {return(colorChoice((d.hits>0) ? "positive":"negative"));})
但是我收到以下错误消息:TypeError: Object function (d) {return(colorChoice((d.pnl>0) ? "positive":"negative"));} has no method 'range'
。
欢迎所有帮助。谢谢。
您需要使用 colorAccessor
函数。
1) 定义您的颜色范围和域:
.colors(d3.scale.ordinal().domain(["positive", "negative"])
.range(["#00FF00", "#FF0000"]))
2) 定义您的颜色附件:
.colorAccessor(function(d) {
if (d.value > 0) {
return "positive";
}
return "negative";
})
希望这个JSFiddle有所帮助:http://jsfiddle.net/djmartin_umich/9ELWV/
注意:对于最新版本的 d3.js,请使用 d3.scaleOrdinal()
而不是 d3.scale.ordinal()
。