D3.js 交叉筛选是否支持嵌套维度?

D3.js 交叉筛选是否支持嵌套维度?,d3.js,dc.js,crossfilter,D3.js,Dc.js,Crossfilter,我正在dc.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);
  }