带有DC.js等值线图的Crossfilter

单凭D3,我就可以得到我想要的结果,但对于DC.js,我面临着一些问题,而且我的猜测是,这是因为我缺乏与Crossfilter合作的知识。

我的CSV数据如下所示:

ccgcode,ccgname,metric,male,female
06M,Great Yarmouth And Waveney,3,50,70
05G,North Staffordshire,3,40,60
... etc

我的javascript如下:

'use strict'

var numberFormat = d3.format(".2f");
var ccgMap       = dc.geoChoroplethChart('.map-wrap');
// var sexPieChart  = dc.pieChart('.pie-chart');

d3.csv('../data/metricdata.csv', function (data) {
    var data = crossfilter(data);

    var ccgs = data.dimension(function (d) {
        return d['ccgcode'];
    });

    var ccgMetric = ccgs.group();

    d3.json("../data/ccg.json", function (map) {
        ccgMap.width(800)
            .height(800)
            .dimension(ccgs)
            .group(ccgMetric)
            .colors(d3.scale.quantize().range(["#7cbd30", "#0066cc", "#ee2e11"]))
            .colorDomain([0, 200])
            .colorCalculator(function (d) { return d ? ccgMap.colors()(d) : '#ccc'; })
            .overlayGeoJson(topojson.feature(map, map.objects.ccg).features, "CCGcode", function (d) {
                return d.properties.CCGcode;
            });

        dc.renderAll();
    });
});

大部分代码,我从这里得到。 所以我知道我以后会遇到一些问题,当我着色..等等,但现在我甚至无法得到地图显示!

我只是得到一个空白页! 我可以看到SVG正在绘制到页面上,但它没有路径信息!

在这里输入图像描述

我究竟做错了什么? 我在Crossfilter中看到的所有示例都有非常好的细粒度数据,这很好,但是在我的情况下,DBA已经将粒度数据分组到CCG代码组中。

如果你问为什么要打扰Crossfilter,那是因为我想稍后使用它(通过创建一个性别维度)来驱动一个女性/男性的饼图,当点击一个特定的CCG(只是一个地图区域)时。


好的,我已经得到了地图显示,这是我所做的:

  • 显然dc.geoChoroplethChart()只能用于GeoJSON ,而不是TopoJSON ,这是我的。 我使用这个工具转换回来。
  • 给代码一个.projection()使用(就像这里),因为默认是d3.geo.albersUsa() ,它不适用于英国(不适用于我)
  • 非常感谢Xavier在这个线程。

    链接地址: http://www.djcxy.com/p/32703.html

    上一篇: Crossfilter with DC.js Choropleth map

    下一篇: understanding dc interaction with crossfilter objects