Changes between Version 5 and Version 6 of soc/2007/VisualizationOfContainers


Ignore:
Timestamp:
May 29, 2007, 2:40:31 AM (15 years ago)
Author:
jakevoytko
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • soc/2007/VisualizationOfContainers

    v5 v6  
    11= 0. Introduction =
    2 This project is focused on using STL containers in order to graph data on a two dimensional (and if time allows, three dimensional!) plot. The graph would be written in an `svg` image, compliant with the W3C standard. The goals of the project are as follows:
     2This project is focused on using STL containers in order to graph data on a one-dimensional and two-dimensional (and if time allows, 3D!) plot. The plot would be written in an `svg` image, compliant with the W3C standard. The goals of the project are as follows:
    33
    4  * To provide an easy syntax for building graphs
    5  * To let users produce a simple graph with minimal intervention by using sane defaults
     4 * To provide an easy syntax for graphing data
     5 * To let users produce a simple plot with minimal intervention by using sane defaults
    66 * To demonstrate how to incorporate SVG images into Boost documentation
    77 * To allow users to easily customize graphs to their heart's content
     
    1919// fill experiment_data here
    2020
    21 svg_graph my_graph("./image.svg");
     21svg_plot my_plot("./image.svg");
    2222
    23 my_graph<< image_size(500, 500) << x_scale(0, 10) << y_scale(0, 10)
     23my_plot<< image_size(500, 500) << x_scale(0, 10) << y_scale(0, 10)
    2424        << line_color(BLACK) << draw_axis();
    2525
    26 my_graph<< plot_range(experiment_data.begin(), experiment_data.end()) << write();
     26my_plot<< plot_range(experiment_data.begin(), experiment_data.end()) << write();
    2727}}}
    2828
     
    3434
    3535== 2.1 `svg_graph` class ==
    36 '''Currently supported operations of the form `my_graph << function()`:'''
     36'''Currently supported operations of the form `my_plot << function()`:'''
    3737 * `x_scale(double, double)` and `y_scale(double, double)`
    3838   * Allows the user to set the bottom, top, left, and right edge of the graph
     
    6666
    6767== 2.2 `svg` Class ==
    68 All of the design decisions for the `svg` class are motivated by the fact that the `svg` class is the parent for the `svg_graph` class. As such, I tend to treat it as a second-class citizen. My personal tendency is to make it purely a computation and drawing class, and leave all interface work to the `svg_graph` class
     68All of the design decisions for the `svg` class are motivated by the fact that the `svg` class is the parent for the `svg_plot` class. As such, I tend to treat it as a second-class citizen. My personal tendency is to make it purely a computation and drawing class, and leave all interface work to the `svg_plot` class
    6969
    70 When I designed the prototype, I made the svg class have a user interface much in the way that the svg_graph class does with the stream operator. However, as I look at the list of features that I'd like the user to be able to access, I will consider the ramifications of removing a user interface for the svg portion, and instead focus it on being the functional backbone of the svg_graph class. I will post to the Boost discussion board and see if people are more interested in eventually having a fully-functioning SVG suite, or more interested in having a fully-functioning graphing utility in the near future.
     70When I designed the prototype, I made the svg class have a user interface much in the way that the `svg_plot` class does with the stream operator. However, as I look at the list of features that I'd like the user to be able to access, I will consider the ramifications of removing a user interface for the svg portion, and instead focus it on being the functional backbone of the svg_graph class. I will post to the Boost discussion board and see if people are more interested in eventually having a fully-functioning SVG suite, or more interested in having a fully-functioning graphing utility in the near future.
    7171
    7272----
     
    7474
    7575== 3.1 Near Future ==
    76  * Set up codebase in SVN (by May 28)
    77  * Clean up demo code. Comment better, cement next draft of architecture (By June 1)
    78  * Explore size-saving of the output file (I currently don't take advantage of things like paths that the `svg` model has to offer) (By June 1)
     76 * Set up codebase in SVN '''''Completed'''''
     77 * Clean up demo code. Comment better, cement next draft of architecture (focus on single axis first)(By June 1)
    7978 * Set up code for unit testing using the Boost testing framework (By June 1)
    8079 * Fully support chaining of the overloaded input operator (By June 8)
    81  * Allow any STL-compliant container to be input (I have a hunch this will be more complicated than I'd like, so June 8th is tentative.)
    8280
    8381== 3.2 Medium Future ==
     82 * Expand to two-dimensional graphs
     83 * Explore size-saving of the output file (I currently don't take advantage of things like paths that the `svg` model has to offer)
    8484 * Allow pairs of data to be input
    8585 * Explore hover features in the SVG format as a potential way to label data
     86 * Allow any STL-compliant container to be input (I have a hunch this will be more complicated than I'd like, so June 8th is tentative.)
    8687 * Consider STL containers that don't directly fit in the straightforward container model (like maps)
    8788
     
    8990 * Support 3-D graphs
    9091
    91 == 3.4 Minor Features (No ETA) ==
     92== 3.4 Minor Features (No ETA as of May 28) ==
    9293 * Full Color Support
    9394 * Add handling for `-NAN` and other double error codes
    9495
    95 = 4. Suggestions (No ETA) =
    96 ''By Matias Capaletto:'' Be able to choose a log scale for either the X or the Y axis
     96= 4. Suggestions (No ETA as of May 28) =
     97''By Matias Capaletto:''
     98 * Be able to choose a log scale for either the X or the Y axis
     99
     100''By Paul Bristow''
     101 * Customize background color of plot
     102 * Customize the background border color
     103 * Customize the "axis area" background color
     104 * Title
     105   * Customize font
     106   * Customize font color
     107 * Axis
     108   * Customize line colors
     109   * Customize line thickness
     110   * Define labels for axis
     111   * Major ticks width, length, color
     112   * Minor ticks width, length, color
     113   * Reasonable defaults for ticks
     114   * Axis marker labels
     115   * Consider the axis for data where the origin is not in the view window
     116   * Consider auto-scaling
     117   * Grid lines
     118 * Data representation
     119   * Allow different data representation points
     120   * Allow appropriate customization of data points
     121   * Consider labels for data points (combined with exploration of hover-text features of SVG mentioned above)
     122   * Consider how to concisely represent the scale of data points
     123   * Multiple data series
     124 * Legend
     125   * Border
     126   * color
     127   * position
     128   * border thickness
     129   * background colors
     130 * Unicode strings