Graph view design

From Emergent

Jump to: navigation, search

Contents

Design of the New GraphView

Overall design considerations:

  • Don't want to spend much time configuring
  • DataTable can be reconfigured -- cols added, removed -- need view to update sensibly
  • In general you can't comprehend that much at one time anyway -- need efficient way to limit what is displayed, which may suggest different design considerations.

Different use cases and how to implement them:

  • easy 2d case: one "y" data value and one "x" -- e.g., clusterplot or specific function graph. no issues.
  • easy 3d case: x = epochs, z = batch, y = error (or cycles) --
  • one matrix of e.g., unit activations in a layer over time (x value = time is avail):
    • simplest: a bunch of superimposed lines sharing one Y axis. not very easy to read?
    • better: 3d plot with z axis as the index within a cell, x is time
    • best: TwoDGeom layout of graphlets following geom of matrix, each with own graph over time.
  • a huge datatable with different types of stats -- want to click on different things and see what happens to each
    • mutex selection of what to graph: only one at a time. reduces to simple cases above...
    • but you do want to be able to compare things, etc..
  • raster/spike plot: col val = color (or thresh point); Y value & axis = a special "raster_axis" (e.g., batch or epoch or whatever), set max = expected max and makes points fill accordingly..
  • trace colors: color_axis sets the color values (for compare across mult runs: need generated "run" column)
  • redundant color value coding: overall check box

Proposed Design

Params, all on the GraphTableView:

  • x_axis, z_axis, y1_axis, y2_axis (2 is just plain the max # at a time!) = pointers to cols (names or refs or what??) probably lookup names..
  • fixed/auto min/max for each of above (common interface chunk; toggle & two fields)
  • raster_axis, color_axis..
  • color enum: FIXED_COLOR (as spec'd), Y_COLOR (y axis value), COLOR_AXIS (color_axis value)
  • color/style/marker for each y guy (needed??) not for 2 guys really.. just make them 2 good colors.
  • if y1 is a matrix, other auto-set to empty
  • matrix_mode = SEP_GRAPHS, Z_INDEX (see above) -- if y1 is a matrix (auto set y2 = empty)
  • default config: initial X is last int data, initial Z is int just before that one, Y = first float
  • mode = SAME_AXIS, SEP_AXIS (SEP_GRAPHS) -- if 2 y guys selected..
  • the one thing that gets stored on the column guy itself is any fixed min/max scaling -- so when you flip around to diff Y vals they always remember their last scaling thing.


Dave's thoughts

  • These notes are incomprehensible to me but I have a few thoughts on graphs generally that may be of use. You may actually say all this above, I can't tell.
  • It seems like a graphview is associated with a datatable. It's important that the mapping from a datatable to a graph be (a) persistent and (b) explicit.
  • By mapping I mean the parameters of the graph like which column is the independent variable, which ones are the dependent variables, and which ones are not included; as well as what the scales are for x and y and the assignment of colors to dependent vars.
  • By persistent I mean that the mapping stays intact or is saved with the graph; but I'd say also it would be nice to be able to copy the mapping to a new graph so you don't have to start from scratch to create a new view.
  • By explicit I mean it needs to be really easy to see and change which var is dependent and independent - no ctrl keys or anything - this is one of the main things you have to do with it and if you can't remember the command the graphing function is useless. My general impression of graphing in 3.2 is that it is not useful, because I can never figure out or remember how to change things. In addition to selecting variables, it needs to be easy and obvious how to change the scale (and the scale should be persistent) and colors for the dependent variables (actually, it would be really nice if one could set the defaults for the automatic colors. Obviously I have more issues with this than others, but again the lack of this makes setting up a USEFUL graph a lot of work).
  • A cool but not essential feature would be for the graphing system to understand that the datatable needs to be sorted on the independent variable, so that you didn't have to produce a new datatable for graphing in a different order.
Personal tools