cosmograph-org/cosmos

Selection and with selection; action(s)

Opened this issue · 1 comments

We want to make the visualization of graph data useful for a data analyst.
They may come for the beauty, but making things useful will help them stay.

I imagine, as they explore the galaxies of their data, they'll spot something interesting or curious, and want to ask further questions to the data. For this, they'll want to be able to select one or many nodes (and/or links) and do stuff with them: Drill into the information associated with the selection, of course, but much more.

Here are a few considerations to think of.

With selection; actions

It's important that the selection and action concerns be as separated as possible.

Here's a list of possibilities, off the top of my head (but we should extend this list):

  • view information (may be different whether the selection has a single, a few, or many items)
  • produce some selection specification data (node ids, links -- whatever can allow a user to then recreate the selection within the same context) that can subsequently be;
    • downloaded
    • saved
    • copied
  • add information (tag, label, comment, etc.)
  • apply some analysis function to it (could be a function that produces the data of the subgraph, which can also be used to re-render)

How is a selection made?

Let's emulate whatever are the most common means of selection, such as (off the top of my head -- this is not verified to be the most common):

  • click
  • Ctrl+click to add an additional item to the selection
  • click and drag to make a rectangular selection (i.e. all items within the rectangle). Problem with click and drag is that it is already used for controlling position/perspective, so we may need to add a keypress for selection (or the current use of click+drag)
  • Shift+click to add an additional rectangular selections to the on going selection

The above is relevant to keyboard+mouse "manual" selection.
There's also "logical selectors": Some criteria, or formula, that can be applied to the dataset (or view, or selection) to determine what items should be selected.

What is being selected?

We'll need to figure out rules on how the relationship between node and link selection works. Are we selecting nodes through links or links through nodes. And in the latter case, when a node is selected, are all the links it's involved in selected to? Only the outgoing links? Only the incoming links? Neither? The user should probably be able to chose (again, the right choice might depend on the context).

This is its best future