我正在整理dc.js中一些公共健康数据的交互式可视化。我希望用户能够使用饼图过滤一组变量(例如医疗机构的类型,区域)。在这些过滤器下面,在行图中,我想显示十个具有最多患者的设施。
我遇到的问题是,行图仅显示整个数据集的前十个结果。理想情况下,我会根据设施类型/区域进行过滤,然后查看数据该子部分的前十个条形图。现在,我只看到整体前十名中的一两个小节。
我的问题是DC.js和crossfilter是否支持嵌套维度,我可以在第一维度(按设施类型/区域)过滤并显示第二维度的数据。由于其他原因,这也可能是错误的做法。
我可以尝试组合一个jsfiddle来展示我目前的情况。但是,有关嵌套维度是否存在(或适用于这种情况)的信息也会有所帮助。
答案 0 :(得分:1)
你绝对可以叠加尺寸。首先,创建维度A并按其过滤。然后你可以扼杀其他尺寸并叠加它们。
以下是工作代码的快速示例,该代码按“价格”维度创建和过滤,然后具有“restaurantNames”维度,然后是“星星”维度。
的链接 var xf;
function drawMarkerSelect(data) {
xf = crossfilter(data);
var groupname = "marker-select";
var priceDimension = xf.dimension(function(d) {
return d.price_range;
}).filter(function (d) {
//...
});
var restaurantNames = xf.dimension(function(d) {
return d.name;
});
var restaurantsGroup = restaurantNames.group().reduce(
// ....
);
marker = dc_leaflet.markerChart("#container .map", groupname)
// ........
;
var stars = xf.dimension(function(d) {
return d.stars;
});
var starsGroup = stars.group().reduceCount();
var pie = dc.pieChart("#container .pie",groupname)
.dimension(stars)
.group(starsGroup)
// ...
});
dc.renderAll(groupname);
}