D3.js 交叉筛选是否支持嵌套维度?
我正在dc.js中整合一些公共卫生数据的交互式可视化。我希望用户能够使用饼图按一组变量(例如医疗设施类型、地区)进行筛选。在这些过滤器下面的行图中,我想显示患者数量最多的十个设施 我遇到的问题是,行图只显示整个数据集的前十个结果。理想情况下,我会根据设施类型/区域进行过滤,然后查看该部分数据中的前十个条形图。现在,我只看到了前十名中的一两条 我的问题是DC.js和crossfilter是否支持嵌套维度,我可以在第一个维度上进行过滤(按设施类型/地区),并显示第二个维度的数据。出于其他原因,这也可能是错误的做法D3.js 交叉筛选是否支持嵌套维度?,d3.js,dc.js,crossfilter,D3.js,Dc.js,Crossfilter,我正在dc.js中整合一些公共卫生数据的交互式可视化。我希望用户能够使用饼图按一组变量(例如医疗设施类型、地区)进行筛选。在这些过滤器下面的行图中,我想显示患者数量最多的十个设施 我遇到的问题是,行图只显示整个数据集的前十个结果。理想情况下,我会根据设施类型/区域进行过滤,然后查看该部分数据中的前十个条形图。现在,我只看到了前十名中的一两条 我的问题是DC.js和crossfilter是否支持嵌套维度,我可以在第一个维度上进行过滤(按设施类型/地区),并显示第二个维度的数据。出于其他原因,这也可
我可以试着用一个JSFIDLE来演示我目前的情况。但是,有关嵌套维度是否存在(或是否适用于这种情况)的信息也会很有帮助。您完全可以堆叠维度。首先,创建维度A并按其过滤。然后,您可以将其他维度划分为栅格并将其堆叠 下面是工作代码中的一个快速示例,该代码按“价格”维度创建和筛选,然后有“restaurantNames”维度和“stars”维度 链接到
你所描述的应该有用。它没有向您显示所选内容的最佳结果,这可能是因为您的组定义不正确(组不遵守自己维度上的过滤器),也可能是因为您使用dc.js的
cap
选项的方式。如果您可以共享一个JSFIDLE,我们应该能够帮助您。如果我正确理解您的问题,我不会将这些描述为“嵌套”维度——它们只是独立的维度,这正是crossfilter擅长的。预期的行为是,在筛选之前,第二个图表将显示总体排名前十的结果;使用第一个图表进行过滤后,第二个图表的条形图应调整大小,并显示过滤结果的前十位。
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);
}