vega / vega-lite

A concise grammar of interactive graphics, built on Vega.
https://vega.github.io/vega-lite/
BSD 3-Clause "New" or "Revised" License
4.64k stars 602 forks source link

Implement `intersect_others` #3177

Open domoritz opened 6 years ago

domoritz commented 6 years ago

To make crossfiltering correct, we need intersect_others as a resolve mode for selections. Or is it already there?

arvind commented 6 years ago

2711 details why intersect_others, union_others and independent resolutions were removed. Namely, they significantly increased the complexity of the signal update expressions as we needed to identify the specific unit visualization.

While this limits support for some types of cross filtering interactions, I would want to see additional use cases/motivations in order to raise the priority for reintroducing them. Moreover, as the above issue argues, the cross filtering interaction that requires intersect_others presents other issues in Vega-Lite (fixing the binning scheme in repeated views).

domoritz commented 6 years ago

I think that intersect_others is the most common crossfiltering resolution. When I filter in one dimension, I don't want the histogram of the active dimension to change (as it does with intersect).

cross

This is the interactions I would almost always like to see in a dashboard application and it is what Tabelau, PowerBI, Crossfilter, Vega, and MapD use.

I can't think of a use case for union others off the top of my head.

I don't think this is needed immediately, but it is the selection feature I would like the most after bug fixes.

arvind commented 6 years ago

Thanks, yes I agree that intersect_others plays an important role in that version of cross filtering. However, as we've seen with our example version, the same effect can be replicated using a secondary layer and intersect (which has the added benefit of fixing the binning scheme, which would be another obstacle in recreating the above GIF with Vega-Lite).

In my comment above, I was looking to solicit other motivating examples for intersect_others, particularly those where there is not an equivalent formulation as with layered cross filtering.

domoritz commented 6 years ago

intersect_others would still be better, even for the case where we draw golden bars on top of blue bars.

Changing the domain might actually be what you want for ordinal data.