dc.js和crossfilter-根本不读取json

斯瓦托

我有尝试导入geojson的问题(这似乎可行),然后将其传递到交叉过滤器中-似乎没有数据加载到交叉过滤器对象中。

我在这里做了一个jsfiddle:https ://jsfiddle.net/Svarto/pLyhg9Lb/

当我尝试使用console.log(ndx)(即交叉过滤器)时,我只会得到未加载任何内容的交叉过滤器对象(与尝试在console.log中使用的任何组相同):

在此处输入图片说明

在将带有已加载数据的交叉过滤器写入控制台时,我会期望有某种数据。当我尝试使用数据绘制直方图时,问题变得很明显-只有2条不是我期望的。

代码是这样的:

d3.json("https://dl.dropboxusercontent.com/s/7417jc3ld25i0a4/srealitky_geojson.json?dl=1", function(err,json){

var h = 300;
            var w = 350;

            var ndx = crossfilter();
            console.log(json.features);
            ndx.add(json.features);
            console.log(ndx);

            var all = ndx.groupAll();


            var yieldDimension = ndx.dimension(function(d){
                return d.properties.yields
            });


            var yieldGroup = yieldDimension.group().reduceCount();
            console.log(yieldGroup);

            var priceDimension = ndx.dimension(function(d){
                return d.properties.price
            });

            var priceGroup = priceDimension.group().reduceCount();

            var barChart = dc.barChart("#yieldChart");

            barChart.width(350)
            .height(300)
            .x(d3.scale.linear().domain([0,30]))
            .brushOn(false)
            .dimension(yieldDimension)
            .group(yieldGroup);

            dc.renderAll();

  }
高登

如上面的@Nilo所指出的,问题不在于读取json数据,而是坐标的设置。

您可能希望通过舍入到0.01的精度来对数据进行装箱:

        var yieldGroup = yieldDimension.group(function(yields) {
            return Math.floor(yields*100)/100;
        }).reduceCount();

然后清理边距,添加elasticXelasticY,并指定xUnits要匹配的,我们得到一个很好的直方图(具有正态分布):

     barChart
        .margins({left: 50, top: 5, right: 0, bottom: 20})
        .x(d3.scale.linear())
        .elasticX(true).elasticY(true)
        .xUnits(dc.units.fp.precision(0.01))

精度为0.01

你的小提琴的叉子。

0.001精度

精度为0.001。

有关更多详细信息,请参见coordinateGridMixin的文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章