我正在使用dc.js / crossfilter / d3绘制包含以下数据的图表
var jsonStr = ([
{"date": "2011-11-14", "value": 0.1121},
{"date": "2011-11-15", "value": 0.2221},
{"date":"2011-11-16", "value": 0.3321},
{"date":"2011-11-17", "value": 0.4221},
...
{"date":"2011-11-22", "value": -0.6544},
{"date":"2011-11-23", "value": -0.3131},
{"date":"2011-11-24", "value": -0.2122},
{"date":"2011-11-25", "value": -0.0231}
]);
设置我的dimmension:
// set up my date objects
var timeFormat = d3.time.format("%Y-%m-%d");
jsonStr.forEach(function (e) {
e.date = timeFormat.parse(e.date);
e.dd = new Date(e.date);
e.month = d3.time.month(e.dd);
});
// feed it through crossfilter
var ndx = crossfilter(jsonStr);
var all = ndx.groupAll();
//setup dimmensions
var dateDimension = ndx.dimension(function (d) {
return d.dd;
});
//fluctuation chart, I bet i'm doing something wrong here...
var fluctuation = ndx.dimension(function (d) {
return d.value.toFixed(2);
// return Math.round(d.value);
});
绘制图表时,我无法选择单个负值。任何人都知道我需要做什么?
这里完整的小提琴:http://jsfiddle.net/wbott70/Fvw9m/
答案 0 :(得分:0)
你的赌注是对的! d.value.toFixed返回string of the value,直方图笔刷调用的交叉滤波器函数正在尝试使用数值。
让波动维度处理精确的数值,并使用涨动组对直方图的近似值进行分组:
//fluctuation chart
var fluctuation = ndx.dimension(function (d) {
return d.value;
});
var fluctuationGroup = fluctuation.group(function(d){
return Math.round(d*10)/10;
});