
Things that it would be nice to have done before the GNOME 1.4 Apps release.

* Finish the Pie Chart config dialog.
* Add support for categorical data to Pie Charts.

* Finish Bar Chart config dialog.
* Add support for categorical data to Bar Charts.

* Un-"demo"ify Pie and Bar charts.



-------------------------------------------------------------------------------

Stuff Jon Wants To Do Relatively Soon:

(1) Plot Plug-ins:

    * Add Parallel axis plots

    * Add Price Bars (OHLC)

    * Make rotated & multi-line text work right.

    * Allow for error bars on bar charts.

    * Get line/curve graphs working properly.  The main barrier is
      efficient rasterization algorithms for wide anti-aliased lines.

(2) Data types:

    * Price (OHLC) Sequences

    * finish Date Sequences

    * proper treatment for Categorical Data. (and integration into
      existing plot types)

    * 2D Curve (deriv from GuppiData) / 2D Sampled Curve (deriv from GuppiSeq)
      & integration into existing plot types

(3) Generalized curve fitting framework, with curve fitting plug-in system.

(4) Use the symbolic math code that is already in there for function
    plotting.


Other stuff that it would be nice to do.

(1) An XML format for importing/exporting data.

(2) Data export plug-ins (parallel to the import plug-ins)

(3) N-dimensional array data types, which good support for slicing.

(4) Numerical Python integration.

(5) GUI enhancements.

(6) Plug-ins:
 
    * A "scribble" plug-in for annotation with circles, arrows, text, etc.

    * Dot plots

    * Polar

(7) Images as a data type, with appropriate plug-ins and image processing
    operations.

(8) Lots of statistical functionality.

(9) More exotic data types: GuppiSeqComplex, GuppiSeqIPAddr, ...

(10) Scripting.

     * Perl bindings.

     * Support for using Guppi as a library/extension for guile/python/perl
       rather than the other way around.

(11) Session management.

(12) User-level documentation.

(13) Data importers for other data formats.

-------------------------------------------------------------------------------

On legend placement:

<gmorten> trow: If I graph (x,x*x) in gnuemric as a bar chart
<grib> it's a surprisingly useful thing to do, though you end up just totally homebrew kludging what is basically an HTML marshalling protocol for Scheme functions.
<gmorten> trow: the graph naturally has a lot of unused space for small x.
<gmorten> trow: shouldn't the legend take some of this space instead of using
<gmorten> trow: a lot of space on its own?
<trow> gmorten: yes
<trow> gmorten: except automatic legend-placement is fairly tricky.
<trow> gmorten: Most plot programs either punt the issue entirely and force you to place all legends by hand.
<gmorten> whose responsibility is it (will it be)?
<trow> gmorten: or they just plop it down in one place (like gnuplot), whether it covers up data or not.
<trow> gmorten: I haven't implemented draggable objects in guppi yet.  I'll probably ultimately adopt the "plop it down somewhere standard, but let users drag it around" approach.
<grib> trow: Am I just missing something or do guppi barcharts not support x and y axis labeling?  I mean I can put row-labels on the X axis, but if those are (for example) dates it would be nice to have an X-axis label saying "Date".
<trow> grib: Oh, we do those.  Maybe I just don't expose that via guppitank, though.
<trow> grib: If you try the scatterplot demo in the app, you'll see the axes get labeled by the name of the data set.
<gmorten> trow: I am quite certain that "try one of these five places" will do great in practice.  Assumming you can measure overlap.  Simple, not perfect.
<trow> gmorten: Measuring overlap is tricky.  Doable -- but the only obvious way I can think of do it would be a god-awful hack.
<gmorten> I recall from years back that a simple scheme to label line graphs (N lines in one chart) did great.  No overlap in most cases.
<trow> gmorten: I'd have to extend the API so that you could query objects about their whitespace.
<gmorten> not very appealing.
<trow> gmorten: ...and have them return some standard value describing their "coverage" of a box.  Say from 0 to 1.
<trow> gmorten: The problem is much easier for a specific graph type, like line graphs.  But to do it more generally is tricky.
<trow> gmorten: And I don't want to start duplicating code and having a line-graph legend, pie-chart legend, scatter-plot legend, etc.
<gmorten> trow: perhaps have a good find-a-nice-spot member, then?
<gmorten> s/member/virtual method/
<trow> gmorten: Actually doing the "coverage" thing might not be too bad.  Then for a plot you could query each of the four corners of a plot, looking for empty space.  If none was found, the legend could be put in the margin.
<trow> gmorten: Or you could (optionally) force the legend to be in the plot, and choose the corner where "coverage" is minimized.
<trow> gmorten: That would actually be pretty fucking cool.
<gmorten> indeed. patent it!
<trow> gmorten: ...or at least get it into Guppi ASAP, as "prior art".
<gmorten> trow: just cut-and-paste the irc log into TODO.