planetlabs / viewpoints

Viewpoints is a tool for visualizing high dimensionality data using linked scatter plots.
Apache License 2.0
63 stars 9 forks source link

Multibrush #13

Closed MattFerraro closed 6 years ago

MattFerraro commented 8 years ago

This is a fairly substantial change to take us from 1 highlight brush (blue) to 3 highlight brushes (blue, green, yellow). The UI paradigm is substantially different from the original viewpoint's, so let me pitch you the whole idea:

Points do not have a single color. Points exist in the red bucket and can also get copied into the blue, green, or yellow buckets. The buckets will always be drawn in the order red-->blue-->green-->yellow, so if a point appears in multiple buckets, its display color will be whichever is drawn last. In this way, the highlight brushes are somewhat akin to photoshop's idea of layers. A potential improvement in the future is to use a drag + drop list (like this one) to order the brushes at will, instead of a hardcoded order. We could also add a check box to optionally hide a brush layer entirely.

In addition, the tab area on the lower right offers plenty of screen real estate to host a color picker, so you could potentially change the colors of the brushes at will.

One interesting wrinkle is what to do with the i key, which currently inverts the selection. If I'm using the green brush and I have 10% of the points highlighted, tapping i will simply take every point that isn't in the green bucket and put it in the bucket, while taking every point that is already in the green bucket and putting it out. At the end, I will have 90% of the points in the green bucket, and the blue and yellow buckets will remain unchanged. This can be surprising behavior if say, 100% of the points are already in the yellow bucket, because in that case all points will just stay yellow. Still, I think layers is a reasonable abstraction for this concept.

Multiple brushes make it easy to illustrate "OR" ideas. If you highlight the lower quartile in blue and the higher quartile in yellow, you can just say that the highlighted points are in either the higher OR lower quartile. But how do you illustrate an "AND" idea? That requires a new abstraction--the "select from" panel.

By default, if you are highlighting anything, that means you are finding any points from the red bucket which meet a certain range criteria and you are copying them to the blue|green|yellow bucket. The "select from" panel just changes the source bucket from red to another color. Let's do an example.

Say we start with the inline skating file:

screen shot 2016-09-15 at 8 38 44 pm

On the lower left graph, we see two bunches of points. Let's highlight the bunch that has a high AngleKnee and relatively low MedialGastrocnemius in blue. This bundle is sufficiently tight that it likely corresponds to something physically meaningful:

screen shot 2016-09-15 at 8 39 02 pm

We can see in the upper right graph that the blue points actually separate into two species: one with low values of SpeedAnkl and SpeedKnee and one with high values of the same. If we click the yellow tab we are now highlighting with the yellow brush. If we then click Select From --> blue, we are going to highlight only from the blue points.

After doing this, we highlight the entire upper half of the upper right graph, and we see the following:

screen shot 2016-09-15 at 8 39 59 pm

Looking at the upper left graph we can deduce that if the skater's AngleKnee is high AND the SpeedKnee is high, the AngleAnkl will be rapidly increasing. However, if the AngleKnee is high AND the SpeedKnee is low, AngleAnkl will instead be slowly decreasing. (Actually, to know the difference between increasing and decreasing I had to use the green highlighter on the Time graph. I highlighted to the right and saw that the points circled the AngleKnee vs AngleAnkl clockwise, not anticlockwise)

One final wrinkle: What do I do if the user highlights a region in yellow, then tries to highlight in blue but only from the yellow bucket? If I naively did what the user asks for, they will highlight points into the blue bucket but those points will appear to just stay yellow because the yellow brush takes drawing precedence over blue. This strikes me as behavior that is too surprising, so until I have a sortable list of layers I will just disallow that action. If you're using a low precedence brush like blue, you aren't allowed to hit select from --> yellow. The button is just disabled for higher priority brushes.

MattFerraro commented 8 years ago

Another cool example of the "AND" operation is the tycho star catalog:

screen shot 2016-09-15 at 9 30 35 pm

I highlighted stars of a certain color in blue (bottom quartile of the bottom left graph). Then I highlighted just the stars with a low number of observations (bottom quartile of top left graph) in yellow, but only pulling from the blue bucket. What you see in the ra vs dec graph (upper right) is the galactic core in blue, with yellow prolate spheroids of uncertainty on top. I believe this tells us that the galactic core is pretty well observed in this data set, except for in the two yellow regions.

MattFerraro commented 6 years ago

Closed because I merged this behavior separately a few months ago