单独使用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。所以我知道以后当我着色时会遇到一些问题..但是现在我甚至无法显示地图!
我只是得到一个空白页面!我可以看到SVG被绘制到页面上,但它没有路径信息!
我做错了什么?我在Crossfilter中看到的所有示例都有非常精细的粒度数据,这很好,但是在我的情况下,DBA已经将粒度数据分组到CCG代码组中,该怎么做。
如果您一直在问为什么要使用Crossfilter,那是因为我希望稍后(通过创建性别维度)使用它来驱动一个特定的CCG(只是一个区域)的女性/男性饼图点击地图。
答案 0 :(得分:1)
好的我已经有地图显示了,这就是我做的:
dc.geoChoroplethChart()
仅适用于GeoJSON
,而不是TopoJSON
,这就是我所拥有的。我使用this tool转换回来。.projection()
使用(like here),默认为d3.geo.albersUsa()
,对英国不起作用(对我来说没有用)< / LI>
醇>
非常感谢this thread中的Xavier
。