2014-03-04 42 views
1

如何創建繪製一個維度的多個圖形,以便它們對放置在另一個圖形上的濾鏡作出反應。實施例這裏:http://bl.ocks.org/pbutler/9356548dc.js:單個維度中的多個圖形

<html> 
<head> 
    <link href="style.css" rel="stylesheet"> 
    <link href="dc.css" rel="stylesheet"> 
      <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> 
    <script src="crossfilter.js"></script> 
    <script src="dc.js"></script> 
</head> 
<body> 
    <div id="chart1"> 
    </div> 
    <div id="chart2"> 
    </div> 
    <script> 
     var data = []; 
     for (var i = 0; i < 10; i++) { 
      data.push({'val' : 'a'}) 
     } 
     for (var i = 0; i < 15; i++) { 
      data.push({'val' : 'b'}) 
     } 

     var ndx = crossfilter(data); 
     var all = ndx.groupAll(); 

     var val = ndx.dimension(function (d) { return d.val; }); 
     var valGroup = val.group() 

     var chart1 = dc.pieChart("#chart1"); 
     var chart2 = dc.pieChart("#chart2"); 

     chart1.dimension(val) 
      .group(valGroup); 
     chart2.dimension(val) 
     .group(valGroup); 

     dc.renderAll(); 
    </script> 
</body> 
</html> 

在短的曲線似乎忽視彼此在這個例子。

回答

1

如果使用相同屬性創建第二個維度,則過濾將反映在各個圖表上。

下面是一個例子:http://jsfiddle.net/djmartin_umich/nw8EV/

// build charts 
teamMemberChart 
    .width(270) 
    .height(220) 
    .dimension(teamMemberDimension) 
    .group(teamMemberGroup) 
    .valueAccessor(function (d) { 
    return d.value.projectCount; 
}) 
    .elasticX(true); 

teamMemberChart2 
    .width(270) 
    .height(220) 
    .dimension(teamMemberDimension) 
    .group(teamMemberGroup) 
    .valueAccessor(function (d) { 
    return d.value.projectCount; 
}) 
    .elasticX(true); 

teamMemberChart3 
    .width(270) 
    .height(220) 
    .dimension(teamMemberDimension2) 
    .group(teamMemberGroup2) 
    .valueAccessor(function (d) { 
    return d.value.projectCount; 
}) 
    .elasticX(true); 

前兩個圖表使用相同的維度 - 選擇一個選項並不反映另一個選項。第三個圖表在同一個屬性上使用不同的維度 - 在此圖表上選擇一個選項可更新另外兩個圖表。

+0

我想我沒有解釋得很好是我不希望將過濾應用到第二個圖表。我只是希望應用這個高峯。我的例子被簡化了,但我試圖實現的應用程序是一個餅圖/ choropleth組合,如果它在餅圖中被選中,它將選擇感興趣的區域。 – hbar