2017-02-15 2 views
1

私は、棒グラフと散布図からなる複合チャートを持っています。ブラッシングが有効になっていますが、散布図のデータポイントを表示したいと思います。ブラシの上にデータポイントを表示

現在の動作では、ブラッシングはデータポイントのツールチップをオーバーライドします。この要件を満たすための助けてください?

scatterChart 
    .width(380) 
    .height(200) 
    .margins({ 
    top: 10, 
    right: 20, 
    bottom: 30, 
    left: 40 
    }) 
    .dimension(scatterDimension) 
    .group(scatterGrouping) 
    .x(d3.scale.linear().domain([0., 100.])) 
    .y(d3.scale.linear().domain([0., 100.])) 
    .renderHorizontalGridLines(true) 
    .renderVerticalGridLines(true) 
    .symbolSize(5) 
    .highlightedSize(8) 
    //.brushOn(false) 
    .existenceAccessor(function(d) { 
    return d.value > 0; 
    }) 
    .colorAccessor(function(d) { 
    return d.key[2]; 
    }) 
    .colors(fruitColors) 
    .filterHandler(function(dim, filters) { 
    // https://jsfiddle.net/gordonwoodhull/c593ehh7/5/ 
    if (!filters || !filters.length) 
     dim.filter(null); 
    else { 
     // assume it's one RangedTwoDimensionalFilter 
     dim.filterFunction(function(d) { 
     return filters[0].isFiltered([d[0], d[1]]); 
     }) 
    } 
    }); 

フォークト例 - それはすべてのクリックをインターセプトするように、デフォルトのdc.jsによってhttp://jsfiddle.net/81mzjkjz/37/

答えて

1

は、他のすべての前にブラシ層を置きます。ドットの上にマウスを置くことができれば、それらをクリックすることもできます。これは、間違ってドットの上でブラッシングを開始すると、ブラッシングが発生しないことを意味します。

しかし、あなたはそのリスクを取って喜んでいる場合は、このような兄弟の背中にブラシを移動することができます。私はそれをクリックするとを通過させることが可能だかどうかに見ていない

scatterChart.on('pretransition', function(chart) { 
    var brushNode = chart.select('g.brush').node(); 
    var firstChild = brushNode.parentNode.firstChild; 
    if (firstChild) { 
    brushNode.parentNode.insertBefore(brushNode, firstChild); 
    } 
}); 

ホバーがそれらの上にとどまっている間の点。私の推測では、これは正しいことが難しいだろうということです。

あなたのフィドルのフォーク(ありがとう!):http://jsfiddle.net/gordonwoodhull/sajwjv7n/3/

+0

それは素晴らしい作品、感謝ゴードン – user3559365

関連する問題