Changes between Version 5 and Version 6 of soc/2007/VisualizationOfContainers
- Timestamp:
- May 29, 2007, 2:40:31 AM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
soc/2007/VisualizationOfContainers
v5 v6 1 1 = 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 graphwould be written in an `svg` image, compliant with the W3C standard. The goals of the project are as follows:2 This 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: 3 3 4 * To provide an easy syntax for building graphs5 * To let users produce a simple graphwith minimal intervention by using sane defaults4 * To provide an easy syntax for graphing data 5 * To let users produce a simple plot with minimal intervention by using sane defaults 6 6 * To demonstrate how to incorporate SVG images into Boost documentation 7 7 * To allow users to easily customize graphs to their heart's content … … 19 19 // fill experiment_data here 20 20 21 svg_ graph my_graph("./image.svg");21 svg_plot my_plot("./image.svg"); 22 22 23 my_ graph<< image_size(500, 500) << x_scale(0, 10) << y_scale(0, 10)23 my_plot<< image_size(500, 500) << x_scale(0, 10) << y_scale(0, 10) 24 24 << line_color(BLACK) << draw_axis(); 25 25 26 my_ graph<< plot_range(experiment_data.begin(), experiment_data.end()) << write();26 my_plot<< plot_range(experiment_data.begin(), experiment_data.end()) << write(); 27 27 }}} 28 28 … … 34 34 35 35 == 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()`:''' 37 37 * `x_scale(double, double)` and `y_scale(double, double)` 38 38 * Allows the user to set the bottom, top, left, and right edge of the graph … … 66 66 67 67 == 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` class68 All 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 69 69 70 When I designed the prototype, I made the svg class have a user interface much in the way that the svg_graphclass 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.70 When 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. 71 71 72 72 ---- … … 74 74 75 75 == 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) 79 78 * Set up code for unit testing using the Boost testing framework (By June 1) 80 79 * 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.)82 80 83 81 == 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) 84 84 * Allow pairs of data to be input 85 85 * 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.) 86 87 * Consider STL containers that don't directly fit in the straightforward container model (like maps) 87 88 … … 89 90 * Support 3-D graphs 90 91 91 == 3.4 Minor Features (No ETA ) ==92 == 3.4 Minor Features (No ETA as of May 28) == 92 93 * Full Color Support 93 94 * Add handling for `-NAN` and other double error codes 94 95 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