dc.js / crossfilter图表不能正确选择底片

时间:2013-06-07 15:47:01

标签: floating-point d3.js negative-number crossfilter dc.js

我正在使用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/

1 个答案:

答案 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;
});

http://jsfiddle.net/Fvw9m/2/