【问题标题】:Crossfilter with DC.js Choropleth map使用 DC.js Choropleth 地图进行交叉过滤
【发布时间】:2016-04-26 13:55:16
【问题描述】:

单独使用 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();
    });
});

大部分代码,我得到了from here。所以我知道我以后在着色时会遇到一些问题 ..etc 但现在我什至无法显示地图!

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

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

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

【问题讨论】:

  • 如果你没有路径信息,那么我假设你的地图没有被绘制。这是overlayGeoJSON 调用或您的地图数据的问题。如果您在 JSFiddle 或 Codepen 或类似服务上整理了一个工作示例,它会更容易为您提供帮助。
  • 谢谢@EthanJewett,代码是here
  • 存在一些 XHR 问题,我现在已经修复了。所以你应该看到我所看到的,一个空白页(仅显示 h1

标签: d3.js dc.js crossfilter


【解决方案1】:

好的,我要显示地图,这就是我所做的:

  1. 显然dc.geoChoroplethChart() 仅适用于GeoJSON,而不适用于我所拥有的TopoJSON。我使用this tool 转换回来。
  2. 给代码一个 .projection() 以使用 (like here),因为默认为 d3.geo.albersUsa(),这不适用于英国(不适用于我)

非常感谢Xavier in this thread

【讨论】:

  • 那么你现在可以走了吗?将来,您可能要记住,如果您创建一个工作的、可编辑 示例,您更有可能获得帮助。浏览器开发工具得到了改进,但是在 JSFiddle 之类的东西上尝试修复代码比在普通 Web 服务器上要容易得多:-)
  • 感谢@EthanJewett,当我有外部库可供参考时,我仍然无法理解 JSFiddle :(
  • 点击左侧的“外部资源”部分,添加资源的 URL。它们应该通过 HTTPS 提供服务并启用 CORS,这意味着您不能直接从 Github 加载文件。请改用 rawgit.com。
猜你喜欢
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
相关资源
最近更新 更多