GSoC project "Visualization of STLContainers as SVG" - possible features?

I've been collecting a shopping list of possibly desirable features for Jake Voytko's GSoC STL containers as SVG plots. Project and class names? Boost.Plot? - as Boost.Graph is 'spoken for' - and does that mean that to avoid confusion we should always use the work plot rather than graph? Like svg_plot my_plot("my_plot1.svg"); rather than svg_graph my_graph("test.svg"); // Construct class Best to get the name right as early as possible? Features of plots I have thought that are (or might be) wanted are: General ======= * overall (called chart area in Excel - is this the right name?) background box colour, if any. * background border? colour, if any Axes ==== * axes area background and/or border? (called plot area in Excel) * title, font, size and colour * axis lines, thickness, colour? * axis labels (and perhaps separate units) default x axis (y axis, z axis)? * axis markers (or not), major (and minor?) width, length and colour. default of these, marks inside or outside * (separate for x, (y and z), logarithmic, and anti) axis?/axes * axis marker labels - as vector of pairs of values and short strings of values? max, min, Auto option, axis * must go through origin? * should axes be scaled, for example, if all values are in range 1e-6 to 9e-6, should be axes be 1. to 10. with a scale factor of 1e-6? Data ==== * data marker symbol like * x . | |_| etc, size, boldness and color (and outline?). Lines or Blocks can be used to show 1D as histograms if they can optionally be used to stack on top of each other. * data value labels? - showing the x (y & z) value of each data point: font, size, colour, position? format? * should data values be show with the same scale factor as axes, or include any exponent 1.23e6? * multiple data series, * series legend, position (top, bottom , left right exact) , font, colour, border? * gridlines?? Not a priority,but some people will probably want them, sometimes. * lines (colour, thinkness) and/or curves joining data points. * lines representing a fitted line or curve - lower prority as users can always do this themselves. * Will need greek for all sorts of text (labels, title legends), so use Unicode strings? Need sub and superscript too, and other symbols like sqrt? Maybe worry about this later? data sources ============ x data points in 'container' (C array, Boost array, std::vector, std::list, std::deque, circular_buffer) (I'm using container to include C arrays that are not strictly STL containers). * Default is to plot all in the container, but also: count of values, starting with 1st, index of 1st and last values. iterator to 1st and last. * Similarly for x & y data (perhaps even x & y & z data). * y values at equally spaced x with start and finish indexes and iterators, or count of values? Default for array, vector...? * array x values, array y values, container x & y pairs, (container x, y, z as tuples) * container of 'points' as a struct double, double? * Function like y = mx + c, y = sin(x) ... as source (but need to specify the limits of x (and/or y??)). (This will also be useful to show fitted lines or curves on top of the data points). * need to provide svg class member functions with defaults for all, as well as control of *all* details. * getter functions like my_graph.point_color() returning red? Views on priorities, and things I have missed? Paul --- Paul A Bristow Prizet Farmhouse, Kendal, Cumbria UK LA8 8AB +44 1539561830 & SMS, Mobile +44 7714 330204 & SMS pbristow@hetp.u-net.com

I personally like the suggested changes to the name of the namespace/class. Unless anybody has any strong objections, I'll be working with that as the name from now on. All of the other things will get added to the "to do" list. I feel that some of these features have lower priority than others.. proper auto-displaying of all data points clearly has a higher priority than the thickness of minor axis ticks :). Does anybody else have any suggestions? Jake On 5/23/07, Paul A Bristow <pbristow@hetp.u-net.com> wrote:
I've been collecting a shopping list of possibly desirable features for Jake Voytko's GSoC STL containers as SVG plots.
Project and class names?
Boost.Plot? - as Boost.Graph is 'spoken for' - and does that mean that to avoid confusion we should always use the work plot rather than graph? Like
svg_plot my_plot("my_plot1.svg");
rather than
svg_graph my_graph("test.svg"); // Construct class
Best to get the name right as early as possible?
Features of plots I have thought that are (or might be) wanted are: General ======= * overall (called chart area in Excel - is this the right name?) background box colour, if any. * background border? colour, if any Axes ==== * axes area background and/or border? (called plot area in Excel) * title, font, size and colour * axis lines, thickness, colour? * axis labels (and perhaps separate units) default x axis (y axis, z axis)? * axis markers (or not), major (and minor?) width, length and colour. default of these, marks inside or outside * (separate for x, (y and z), logarithmic, and anti) axis?/axes * axis marker labels - as vector of pairs of values and short strings of values? max, min, Auto option, axis * must go through origin? * should axes be scaled, for example, if all values are in range 1e-6 to 9e-6, should be axes be 1. to 10. with a scale factor of 1e-6? Data ====
* data marker symbol like * x . | |_| etc, size, boldness and color (and outline?). Lines or Blocks can be used to show 1D as histograms if they can optionally be used to stack on top of each other. * data value labels? - showing the x (y & z) value of each data point: font, size, colour, position? format? * should data values be show with the same scale factor as axes, or include any exponent 1.23e6? * multiple data series, * series legend, position (top, bottom , left right exact) , font, colour, border?
* gridlines?? Not a priority,but some people will probably want them, sometimes.
* lines (colour, thinkness) and/or curves joining data points. * lines representing a fitted line or curve - lower prority as users can always do this themselves.
* Will need greek for all sorts of text (labels, title legends), so use Unicode strings? Need sub and superscript too, and other symbols like sqrt? Maybe worry about this later?
data sources ============
x data points in 'container' (C array, Boost array, std::vector, std::list, std::deque, circular_buffer) (I'm using container to include C arrays that are not strictly STL containers).
* Default is to plot all in the container, but also: count of values, starting with 1st, index of 1st and last values. iterator to 1st and last.
* Similarly for x & y data (perhaps even x & y & z data).
* y values at equally spaced x with start and finish indexes and iterators, or count of values? Default for array, vector...?
* array x values, array y values, container x & y pairs, (container x, y, z as tuples) * container of 'points' as a struct double, double?
* Function like y = mx + c, y = sin(x) ... as source (but need to specify the limits of x (and/or y??)). (This will also be useful to show fitted lines or curves on top of the data points).
* need to provide svg class member functions with defaults for all, as well as control of *all* details.
* getter functions like my_graph.point_color() returning red?
Views on priorities, and things I have missed?
Paul
--- Paul A Bristow Prizet Farmhouse, Kendal, Cumbria UK LA8 8AB +44 1539561830 & SMS, Mobile +44 7714 330204 & SMS pbristow@hetp.u-net.com
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Jake Voytko Sent: 25 May 2007 03:24 To: boost@lists.boost.org Subject: Re: [boost] GSoC project "Visualization of STLContainers as SVG" -possible features?
Two other very minor thoughts for your 'shopping list'. (from inspecting a few graphs that could conceivably be produced in SVG in a recent New Scientist on Global Warming) 1 Make showing horizontal grid lines separate from vertical grid lines. Quite a few graphs use this, and it makes them much less cluttered. 2 Consider how to have two 'things' on the x and/or y axis with separate axis labelling on the far right/top. This is actually quite a common feature. Paul --- Paul A Bristow Prizet Farmhouse, Kendal, Cumbria UK LA8 8AB +44 1539561830 & SMS, Mobile +44 7714 330204 & SMS pbristow@hetp.u-net.com

1 Make showing horizontal grid lines separate from vertical grid lines. Quite a few graphs use this, and it makes them much less cluttered. Great idea! I might not have thought of this one until much after the
On 5/25/07, Paul A Bristow <pbristow@hetp.u-net.com> wrote: project ended!
2 Consider how to have two 'things' on the x and/or y axis with separate axis labelling on the far right/top. This is actually quite a common feature. Do you mean two different scales? For example, plotting [pirates vs time] and [pirates vs average global temperature], with keys on the top corner indicating which is what?
And the mere mention of keys makes me realized that I've overlooked them until now. I could have options to produce a key in the same image file or in a different image file, control control where on the graph it goes, and whether or not the graph auto-scales in order to fit the key on it nicely. That last one sounds like a pain, so it'll be far down the features list. I'll have to spend a good chunk of time today editing the wiki to put in all of the suggestions you've given me, and all of the changes your suggestions have inspired! Jake
participants (2)
-
Jake Voytko
-
Paul A Bristow