2017-02-15 11 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]]); 
     }) 
    } 
    }); 

Forked Пример - http://jsfiddle.net/81mzjkjz/37/

ответ

1

По умолчанию dc.js помещает кисть слой перед всем остальным, так что она будет перехватывать все щелчки. Если вы можете навести курсор на точки, вы также сможете щелкнуть по ним, а это означает, что если вы случайно начнете чистить щеткой, а чистку не произойдет.

Но если вы готовы взять на себя этот риск, вы можете переместить кисть к задней части своих братьев и сестер, как это:

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