【发布时间】: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