|
Boost-Commit : |
From: JakeVoytko_at_[hidden]
Date: 2007-07-30 08:03:08
Author: jakevoytko
Date: 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
New Revision: 7588
URL: http://svn.boost.org/trac/boost/changeset/7588
Log:
Working copy. Potentially will not compile.
Binary files modified:
sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/images/1d_complex.png
Text files modified:
sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp | 15
sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/index.html | 3
sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/1d_special.html | 4
sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/2d_special.html | 44
sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/full_2d_layout.html | 4
sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/plot_defaults.html | 4
sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/svg_1d_plot_interface.html | 16
sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/svg_2d_plot_interface.html | 16
sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/svg_interface.html | 2
sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/tutorial_code_1d_simple.html | 4
sandbox/SOC/2007/visualization/libs/svg_plot/doc/svg_plot.qbk | 35
sandbox/SOC/2007/visualization/libs/svg_plot/doc/svg_plot.xml | 2661 +++++++++++++++++++++++++++++----------
sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_full_layout.cpp | 4
sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_simple.cpp | 2
sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_x_external.cpp | 2
sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_x_grid.cpp | 2
sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_area_fill.cpp | 4
sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_full.cpp | 4
sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_simple.cpp | 2
sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_y_grid.cpp | 2
20 files changed, 2104 insertions(+), 726 deletions(-)
Modified: sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp
==============================================================================
--- sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp (original)
+++ sandbox/SOC/2007/visualization/boost/svg_plot/svg_2d_plot.hpp 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -69,11 +69,24 @@
public:
typedef std::pair<double, double> result_type;
+ double i;
+
+ double start(double _i)
+ {
+ i = _i;
+ }
+
template <class T, class U>
std::pair<double, double> operator()(const std::pair<T, U>& a) const
{
return std::pair<double, double>((double)(a.first), (double)(a.second));
}
+
+ template <class T>
+ std::pair<double, double> operator()(T val) const
+ {
+ return std::pair<double, double>(i, (double)val);
+ }
};
struct svg_2d_plot_series
@@ -898,7 +911,7 @@
{
plot_line_style line_style(line_color, line_on, bezier_on);
- if(area_fill_color != none)
+ if(area_fill_color != blank)
{
line_style.area_fill=area_fill_color;
}
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/images/1d_complex.png
==============================================================================
Binary files. No diff available.
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/index.html
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/index.html (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/index.html 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -79,6 +79,7 @@
<dt><span class="section"> Y Axis Grid Lines</span></dt>
<dt><span class="section"> External Y Axis Style</span></dt>
<dt><span class="section"> Fill the area between the plot and the axis</span></dt>
+<dt><span class="section"> Curve Interpolation</span></dt>
</dl></dd>
<dt><span class="section"> Defaults</span></dt>
<dd><dl>
@@ -230,7 +231,7 @@
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><small><p>Last revised: July 28, 2007 at 16:55:59 GMT</p></small></td>
+<td align="left"><small><p>Last revised: July 29, 2007 at 22:30:51 GMT</p></small></td>
<td align="right"><small></small></td>
</tr></table>
<hr>
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/1d_special.html
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/1d_special.html (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/1d_special.html 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -51,7 +51,7 @@
This will produce something like the following image:
</p>
<p>
- (Insert image)
+ <span class="inlinemediaobject"><img src="../images/1d_x_grid.png" alt="1d_x_grid"></span>
</p>
</div>
<div class="section" lang="en">
@@ -68,7 +68,7 @@
of the style that you can produce with this.
</p>
<p>
- (insert image here)
+ <span class="inlinemediaobject"><img src="../images/1d_x_external.png" alt="1d_x_external"></span>
</p>
<div class="important"><table border="0" summary="Important">
<tr>
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/2d_special.html
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/2d_special.html (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/2d_special.html 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -29,6 +29,7 @@
<dt><span class="section"> Y Axis Grid Lines</span></dt>
<dt><span class="section"> External Y Axis Style</span></dt>
<dt><span class="section"> Fill the area between the plot and the axis</span></dt>
+<dt><span class="section"> Curve Interpolation</span></dt>
</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
@@ -52,7 +53,7 @@
This will produce something like the following image:
</p>
<p>
- (Insert image)
+ <span class="inlinemediaobject"><img src="../images/2d_y_grid.png" alt="2d_y_grid"></span>
</p>
</div>
<div class="section" lang="en">
@@ -64,13 +65,6 @@
<pre class="programlisting">
<span class="identifier">my_plot</span><span class="special">.</span><span class="identifier">y_external_style_on</span><span class="special">(</span><span class="keyword">true</span><span class="special">);</span>
</pre>
-<p>
- The axis is still styled using the normal methods. The following is an example
- of the style that you can produce with this.
- </p>
-<p>
- (insert image here)
- </p>
<div class="important"><table border="0" summary="Important">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../images/important.png"></td>
@@ -98,8 +92,40 @@
This produces the following image:
</p>
<p>
- (Insert image here!)
+ <span class="inlinemediaobject"><img src="../images/2d_area_fill.png" alt="2d_area_fill"></span>
+ </p>
+</div>
+<div class="section" lang="en">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="svg_plot.2d_special.curve_interpolation"></a> Curve Interpolation</h3></div></div></div>
+<p>
+ If you would like an interpolated curve shown over your data, simply use
+ the following command:
+ </p>
+<pre class="programlisting">
+<span class="identifier">my_plot</span><span class="special">.</span><span class="identifier">plot</span><span class="special">(</span><span class="identifier">data</span><span class="special">,</span> <span class="string">"Series 1"</span><span class="special">,</span> <span class="identifier">_bezier_curve</span> <span class="special">=</span> <span class="string">"true"</span><span class="special">);</span>
+</pre>
+<p>
+ This produces something like the following images:
+ </p>
+<p>
+ <span class="inlinemediaobject"><img src="../images/2d_bezier.png" alt="2d_bezier"></span>
</p>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ The <code class="computeroutput"><span class="identifier">_bezier_curve</span></code> feature
+ is still very much in its infancy. If you play nice with it, it will play
+ nice with you, but it is still buggy. Do not use this feature with curves
+ that have a limit (<code class="computeroutput"><span class="special">-</span><span class="identifier">NaN</span></code>,
+ for example), or with data that has high irregularity in X-Axis spacing
+ (a clump of points between (0, 1) on the X axis, with the next one at 100
+ on the X axis, for example)
+ </p></td></tr>
+</table></div>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/full_2d_layout.html
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/full_2d_layout.html (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/full_2d_layout.html 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -109,7 +109,7 @@
<span class="identifier">my_plot</span><span class="special">.</span><span class="identifier">plot</span><span class="special">(</span><span class="identifier">data3</span><span class="special">,</span> <span class="string">"-1 + 2x"</span><span class="special">,</span> <span class="identifier">red</span><span class="special">,</span>
<span class="identifier">_point_style</span> <span class="special">=</span> <span class="identifier">square</span><span class="special">);</span>
- <span class="identifier">my_plot</span><span class="special">.</span><span class="identifier">write</span><span class="special">(</span><span class="string">"1d_complex.svg"</span><span class="special">);</span>
+ <span class="identifier">my_plot</span><span class="special">.</span><span class="identifier">write</span><span class="special">(</span><span class="string">"2d_full.svg"</span><span class="special">);</span>
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
@@ -118,7 +118,7 @@
This produces the following output:
</p>
<p>
- <span class="inlinemediaobject"><img src="../images/2d_complex.png" alt="2d_complex"></span>
+ <span class="inlinemediaobject"><img src="../images/2d_full.png" alt="2d_full"></span>
</p>
<p>
A little bit of color customization goes a long way!
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/plot_defaults.html
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/plot_defaults.html (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/plot_defaults.html 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -38,7 +38,7 @@
</p>
<div class="informaltable">
<h4>
-<a name="id337334"></a>
+<a name="id337516"></a>
<span class="table-title">Default Values</span>
</h4>
<table class="table">
@@ -223,7 +223,7 @@
</p>
<div class="informaltable">
<h4>
-<a name="id337820"></a>
+<a name="id338002"></a>
<span class="table-title">Default Values</span>
</h4>
<table class="table">
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/svg_1d_plot_interface.html
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/svg_1d_plot_interface.html (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/svg_1d_plot_interface.html 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -29,7 +29,7 @@
Method</a></span></dt></dl></div>
<div class="informaltable">
<h4>
-<a name="id339471"></a>
+<a name="id339652"></a>
<span class="table-title">Misc</span>
</h4>
<table class="table">
@@ -82,7 +82,7 @@
</div>
<div class="informaltable">
<h4>
-<a name="id339833"></a>
+<a name="id340015"></a>
<span class="table-title">Commands</span>
</h4>
<table class="table">
@@ -151,7 +151,7 @@
</div>
<div class="informaltable">
<h4>
-<a name="id340274"></a>
+<a name="id340455"></a>
<span class="table-title">Color Information</span>
</h4>
<table class="table">
@@ -231,7 +231,7 @@
</div>
<div class="informaltable">
<h4>
-<a name="id341018"></a>
+<a name="id341200"></a>
<span class="table-title">Axis Information</span>
</h4>
<table class="table">
@@ -306,7 +306,7 @@
</p>
<div class="informaltable">
<h4>
-<a name="id341537"></a>
+<a name="id341719"></a>
<span class="table-title">Required parameter</span>
</h4>
<table class="table">
@@ -338,7 +338,7 @@
</div>
<div class="informaltable">
<h4>
-<a name="id341615"></a>
+<a name="id341797"></a>
<span class="table-title">Deduced parameter</span>
</h4>
<table class="table">
@@ -365,7 +365,7 @@
</div>
<div class="informaltable">
<h4>
-<a name="id341678"></a>
+<a name="id341860"></a>
<span class="table-title">Optional Parameters</span>
</h4>
<table class="table">
@@ -438,7 +438,7 @@
Here are some examples of correct uses:
</p>
<a name="svg_plot.svg_1d_plot_interface.1d_plot_function.using_fill_and_stroke_colors"></a><h3>
-<a name="id342048"></a>
+<a name="id342229"></a>
Using fill and stroke colors
</h3>
<pre class="programlisting">
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/svg_2d_plot_interface.html
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/svg_2d_plot_interface.html (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/svg_2d_plot_interface.html 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -29,7 +29,7 @@
Method</a></span></dt></dl></div>
<div class="informaltable">
<h4>
-<a name="id342327"></a>
+<a name="id342508"></a>
<span class="table-title">Misc</span>
</h4>
<table class="table">
@@ -72,7 +72,7 @@
</div>
<div class="informaltable">
<h4>
-<a name="id342593"></a>
+<a name="id342775"></a>
<span class="table-title">Commands</span>
</h4>
<table class="table">
@@ -151,7 +151,7 @@
</div>
<div class="informaltable">
<h4>
-<a name="id343114"></a>
+<a name="id343296"></a>
<span class="table-title">Color Information</span>
</h4>
<table class="table">
@@ -251,7 +251,7 @@
</div>
<div class="informaltable">
<h4>
-<a name="id344086"></a>
+<a name="id344267"></a>
<span class="table-title">Axis Information</span>
</h4>
<table class="table">
@@ -387,7 +387,7 @@
</p>
<div class="informaltable">
<h4>
-<a name="id345141"></a>
+<a name="id345323"></a>
<span class="table-title">Required parameter</span>
</h4>
<table class="table">
@@ -419,7 +419,7 @@
</div>
<div class="informaltable">
<h4>
-<a name="id345219"></a>
+<a name="id345401"></a>
<span class="table-title">Deduced parameter</span>
</h4>
<table class="table">
@@ -446,7 +446,7 @@
</div>
<div class="informaltable">
<h4>
-<a name="id345282"></a>
+<a name="id345463"></a>
<span class="table-title">Optional Parameters</span>
</h4>
<table class="table">
@@ -546,7 +546,7 @@
Here are some examples of correct uses:
</p>
<a name="svg_plot.svg_2d_plot_interface.plot_function.using_fill_and_stroke_colors"></a><h3>
-<a name="id345861"></a>
+<a name="id346043"></a>
Using fill and stroke colors
</h3>
<pre class="programlisting">
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/svg_interface.html
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/svg_interface.html (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/svg_interface.html 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -27,7 +27,7 @@
<a name="svg_plot.svg_interface"></a> SVG Public Interface</h2></div></div></div>
<div class="informaltable">
<h4>
-<a name="id338379"></a>
+<a name="id338560"></a>
<span class="table-title">class svg</span>
</h4>
<table class="table">
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/tutorial_code_1d_simple.html
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/tutorial_code_1d_simple.html (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/html/svg_plot/tutorial_code_1d_simple.html 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -69,7 +69,7 @@
<div class="titlepage"><div><div><h3 class="title">
<a name="svg_plot.tutorial_code_1d_simple.1d_simple_image"></a> Image</h3></div></div></div>
<p>
- <span class="inlinemediaobject"><img src="../images/simple.png" alt="simple"></span>
+ <span class="inlinemediaobject"><img src="../images/1d_simple.png" alt="1d_simple"></span>
</p>
</div>
<div class="section" lang="en">
@@ -133,7 +133,7 @@
<li>
<code class="computeroutput"><span class="identifier">x_range</span><span class="special">(-</span><span class="number">1</span><span class="special">,</span> <span class="number">11</span><span class="special">)</span></code> means
that the axis displayed will be between -1 and 11, as you can see in the
- above images.
+ above image.
</li>
</ul></div>
<pre class="programlisting">
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/svg_plot.qbk
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/svg_plot.qbk (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/svg_plot.qbk 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -218,7 +218,7 @@
[endsect][/section:tutorial_1d_code_example]
[section:1d_simple_image Image]
-[$images/simple.png]
+[$images/1d_simple.png]
[endsect][/section:1d_simple_image]
[section:tutorial_syntax_explanation A note on syntax]
@@ -259,7 +259,7 @@
* the title, which will appear at the top of the graph, will say "Race Times".
* `legend_on(true)` means that the legend will show up.
-* `x_range(-1, 11)` means that the axis displayed will be between -1 and 11, as you can see in the above images.
+* `x_range(-1, 11)` means that the axis displayed will be between -1 and 11, as you can see in the above image.
my_plot.plot(my_data, "Race times");
@@ -388,7 +388,7 @@
This will produce something like the following image:
-(Insert image)
+[$images/1d_x_grid.png]
[endsect] [/section:x_axis_grid_lines]
@@ -401,7 +401,7 @@
The axis is still styled using the normal methods. The following is an
example of the style that you can produce with this.
-(insert image here)
+[$images/1d_x_external.png]
[important If the axis is turned off, `x_external_style_on(true)` will not
turn the axis back on. To do that, you must call `axis_on(true)`]
@@ -573,14 +573,14 @@
my_plot.plot(data3, "-1 + 2x", red,
_point_style = square);
- my_plot.write("1d_complex.svg");
+ my_plot.write("2d_full.svg");
return 0;
}
This produces the following output:
-[$images/2d_complex.png]
+[$images/2d_full.png]
A little bit of color customization goes a long way!
@@ -603,7 +603,7 @@
This will produce something like the following image:
-(Insert image)
+[$images/2d_y_grid.png]
[endsect][/section:y_grid_lines Y Axis Grid Lines]
[section:external_y_axis External Y Axis Style]
@@ -612,11 +612,6 @@
my_plot.y_external_style_on(true);
-The axis is still styled using the normal methods. The following is an
-example of the style that you can produce with this.
-
-(insert image here)
-
[important If the axis is turned off, `y_external_style_on(true)` will not
turn the axis back on. To do that, you must call `axis_on(true)`]
@@ -633,9 +628,23 @@
This produces the following image:
-(Insert image here!)
+[$images/2d_area_fill.png]
[endsect] [/section:external_y_axis]
+
+[section:curve_interpolation Curve Interpolation]
+
+If you would like an interpolated curve shown over your data, simply use the following command:
+
+ my_plot.plot(data, "Series 1", _bezier_curve = "true");
+
+This produces something like the following images:
+
+[$images/2d_bezier.png]
+
+[warning The `_bezier_curve` feature is still very much in its infancy. If you play nice with it, it will play nice with you, but it is still buggy. Do not use this feature with curves that have a limit (`-NaN`, for example), or with data that has high irregularity in X-Axis spacing (a clump of points between (0, 1) on the X axis, with the next one at 100 on the X axis, for example)]
+
+[endsect] [/curve_interpolation]
[endsect] [/2d_special Tutorial: 2D Special Features]
[section:plot_defaults Defaults]
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/doc/svg_plot.xml
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/doc/svg_plot.xml (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/doc/svg_plot.xml 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<article id="svg_plot" name="SVG_Plot" dirname="svg_plot" last-revision="$Date: 2007/07/14 20:09:55 $"
+<article id="svg_plot" name="SVG_Plot" dirname="svg_plot" last-revision="$Date: 2007/07/29 22:30:51 $"
xmlns:xi="http://www.w3.org/2001/XInclude">
<articleinfo>
<author>
@@ -20,425 +20,920 @@
</articlepurpose>
</articleinfo>
<title>SVG_Plot</title>
- <section id="svg_plot.preface">
- <title> Preface</title>
- <para>
- Normally, the first task when dealing with numerical data is to plot it. Humans
- have a fantastic capacity for visual understanding, and merely looking at data
- oganized in one, two, or three dimensions allows us to see relations not otherwise
- visible in a list of numbers. Computers, however, deal with information numerically,
- and C++ and the STL do not offer a way to bridge that gap. This library allows
- the user to easily plot data stored in STL containers with (hopefully!) minimal
- intervention.
- </para>
+ <section id="svg_plot.howtouse">
+ <title> How To Use This Documentation</title>
+ <itemizedlist>
+ <listitem>
+ Tutorial pages are intended for those who do not know how to use the program.
+ <itemizedlist>
+ <listitem>
+ The pages that begin with the tag "Tutorial: Simple" are for
+ absolute beginners.
+ </listitem>
+ <listitem>
+ "Tutorial: Full" should give the intermediate user a good reference,
+ as well as show how the program can be used
+ </listitem>
+ <listitem>
+ "Tutorial: Special" shows other features/options that the headers
+ provide to the user.
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ The pages labelled "<emphasis role="underline">_</emphasis>_ Public
+ Interface" give reference information for their respective subjects.
+ You can find all public methods (and data members, when structs are concerned)
+ in these sections.
+ </listitem>
+ <listitem>
+ If you have a feature request, or if it appears that my implementation is
+ in error, please check the <ulink url="svg_plot/todo.html">To Do</ulink>
+ page first, as well as the area's respective rationale section, if it exists.
+ If I you do not find your idea/complaint, please reach me either through
+ the Boost dev list, or email me at jakevoytko (at) gmail (dot) com
+ </listitem>
+ </itemizedlist>
+ <section id="svg_plot.howtouse.admonishments">
+ <title> Admonishments</title>
+ <note>
+ <para>
+ These blocks typically go into more detail about an explanation given above.
+ </para>
+ </note>
+ <tip>
+ <para>
+ These blocks contain information that you may find helpful while coding.
+ </para>
+ </tip>
+ <important>
+ <para>
+ These contain information that is imperative to understanding a concept.
+ Failure to follow these blocks will result in confusion. Read all of these
+ you find.
+ </para>
+ </important>
+ <para>
+ And the first admonishment I will use is as follows:
+ </para>
+ <important>
+ <para>
+ This is not currently a Boost library. It is a GSoC project whose mentor
+ organization is Boost.
+ </para>
+ </important>
+ </section>
+ <section id="svg_plot.howtouse.preface">
+ <title> Preface</title>
+ <para>
+ The first task when dealing with numerical data is to plot it. Humans have
+ a fantastic capacity for visual understanding, and merely looking at data
+ organized in one, two, or three dimensions allows us to see relations not
+ otherwise visible in a list of numbers. Computers, however, deal with information
+ numerically, and C++ and the STL do not currently offer a way to bridge the
+ gap. This library allows the user to easily plot data stored in STL containers
+ with (hopefully!) minimal intervention.
+ </para>
+ <para>
+ 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 will currently be written in an SVG image, compliant with the <ulink
+ url="http://www.w3.org/TR/SVG11/W3C">standard</ulink>. The goals of the project
+ are as follows:
+ </para>
+ <itemizedlist>
+ <listitem>
+ To let users produce a simple plot with minimal intervention by using sane
+ defaults
+ </listitem>
+ <listitem>
+ To allow users to easily customize plots to their heart's content
+ </listitem>
+ <listitem>
+ To allow the user to talk to the plot classes using coordinate units rather
+ than pixels or other arbitrary measures
+ </listitem>
+ <listitem>
+ To create the backbone of a <code><phrase role="identifier">svg</phrase></code>
+ class that can be extended to fully support the standard
+ </listitem>
+ </itemizedlist>
+ <note>
+ <para>
+ I have only a student's grasp of C++, so if you have a suggestion to help
+ me with design or implementation, email me at jakevoytko (at) gmail (dot)
+ com
+ </para>
+ </note>
+ </section>
</section>
- <section id="svg_plot.intro">
- <title> Introduction</title>
+ <section id="svg_plot.todo">
+ <title> To Do List</title>
<para>
- 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:
+ This project is still in development, so here is a list of things that I would
+ still like to do by the end of the project. I recommend you check here first
+ before you email me with requests.
</para>
<itemizedlist>
<listitem>
- To provide an easy syntax for graphing data
+ Allow an <emphasis role="bold">external stylesheet</emphasis> to be loaded
+ to style the graph. External stylesheets will allow a standard and easy way
+ to style the document so that users don't have to come up with their own
+ home-grown solutions.
+ </listitem>
+ <listitem>
+ Allow function <emphasis role="bold">pointers</emphasis> to specify functions
+ as input. A use case where the user wants to just see what <literal>sin(x)</literal>
+ looks like is easily imaginable.
+ </listitem>
+ <listitem>
+ <emphasis role="bold">Radian coordinate system</emphasis>.
</listitem>
<listitem>
- To let users produce a simple plot with minimal intervention by using sane
- defaults
+ Implementation of <emphasis role="bold">SVG's DOM</emphasis>. This will make
+ the SVG class useful.
</listitem>
<listitem>
- To demonstrate how to incorporate SVG images into Boost documentation
+ Allow <emphasis role="bold">other image formats</emphasis>. This is certainly
+ an after-GSoC project, as there are many inherent difficulties with this
+ part. The solution that I am currently playing with is allowing the user
+ to pass a functor that traverses the document tree. Generalizing images to
+ an <code><phrase role="identifier">image</phrase></code> class is fraught
+ with difficulties, as SVG is a tree-based format, which it does not share
+ with many other formats. When I come up with what I feel is a minimal-intervention
+ method of doing this, I will begin a discussion on the Boost dev list.
</listitem>
<listitem>
- To allow users to easily customize graphs to their heart's content
+ <emphasis role="bold">Avoid redrawing the entire plot each time</emphasis>.
+ This is the easiest way to write the program initially, but it would be more
+ efficient if the program could keep track of what has been changed and what
+ hasn't, so that it may be more efficient if lots of images are being produced.
</listitem>
<listitem>
- To allow the user to talk with the svg_graph class using coordinate units
- instead of pixels or other arbitrary measures
+ <emphasis role="bold">Logarithmic Axis</emphasis>
</listitem>
<listitem>
- To create the backbone of a svg class that will be extended to fully support
- storing the standard
+ <emphasis role="bold">Clipping</emphasis> of the plot window, so that graph
+ lines do not get drawn outside of the plot.
+ </listitem>
+ <listitem>
+ <emphasis role="bold">Histogram</emphasis>
+ </listitem>
+ <listitem>
+ <emphasis role="bold">Box-and-whisker</emphasis>
</listitem>
</itemizedlist>
- <para>
- I have only a student's grasp of C++, so if you have a suggestion to help me
- with design or implementation, either leave them here or email me at jakevoytko
- (at) gmail (dot) com
- </para>
</section>
<section id="svg_plot.color">
<title> Colors</title>
- <section id="svg_plot.color.color_intro">
- <title> Introduction</title>
- <para>
- svg_plot supports any color definable by the RGB interface, as well as a
- number of constants that are named by the SVG standard.
+ <para>
+ The project supports any RGB color, as well as a number of constants that are
+ <ulink url="http://www.w3.org/TR/SVG/types.html#ColorKeywords">named by the
+ SVG standard</ulink>.
+ </para>
+ <section id="svg_plot.color.color_interface">
+ <title> <code><phrase role="identifier">svg_color_constant</phrase></code>
+ Interface</title>
+ <para>
+ <code><phrase role="identifier">svg_color_constant</phrase></code> is simply
+ an enumerated list. The colors are defined <ulink url="http://www.w3.org/TR/SVG/types.html#ColorKeywords">here</ulink>.
+ The list contains all of your expected colors, such as black and red. The
+ list contains one extra color element, <code><phrase role="identifier">blank</phrase></code>,
+ used when you need to pass a color, but would not like it to show up. This
+ comes in handy for defining defaults for functions, for example.
</para>
+ </section>
+ <section id="svg_plot.color.svg_color_constant_example">
+ <title> Example of using <code><phrase role="identifier">svg_color_constant</phrase></code></title>
+
+<programlisting>
+<phrase role="keyword">using</phrase> <phrase role="keyword">namespace</phrase> <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">svg</phrase><phrase role="special">;</phrase>
+
+<phrase role="identifier">svg_2d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
+
+<phrase role="identifier">svg_color_constant</phrase> <phrase role="identifier">my_const</phrase> <phrase role="special">=</phrase> <phrase role="identifier">red</phrase><phrase role="special">;</phrase>
+
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">background_border_color</phrase><phrase role="special">(</phrase><phrase role="identifier">my_const</phrase><phrase role="special">);</phrase>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">background_color</phrase><phrase role="special">(</phrase><phrase role="identifier">lightgray</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <note>
+ <para>
+ <code><phrase role="identifier">svg_color</phrase></code> has a constructor
+ for <code><phrase role="identifier">svg_color_constant</phrase></code>,
+ so you can use a <code><phrase role="identifier">svg_color_constant</phrase></code>
+ in place of a <code><phrase role="identifier">svg_color</phrase></code>
+ and it will be implicitly converted. However, there is not currently an
+ <code><phrase role="identifier">svg_color</phrase><phrase role="special">::</phrase><phrase
+ role="keyword">operator</phrase><phrase role="special">=(</phrase><phrase
+ role="identifier">svg_color_constant</phrase><phrase role="special">)</phrase></code>
+ overload, so
+<programlisting>
+<phrase role="identifier">svg_color</phrase> <phrase role="identifier">my_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">red</phrase><phrase role="special">;</phrase>
+</programlisting>
+ does not work.
+ </para>
+ </note>
+ </section>
+ <section id="svg_plot.color.rgb_interface">
+ <title> <code><phrase role="identifier">svg_color</phrase></code> interface</title>
<para>
- <ulink url="http://www.w3.org/TR/SVG/types.html#ColorKeywords">Here</ulink>
- is a link to the SVG color constants that my program supports
+ You can define a <code><phrase role="identifier">svg_color</phrase></code>
+ using two different constructors
</para>
+
+<programlisting>
+<phrase role="comment">// The parameters are red, green, and blue respectively.
+</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="keyword">int</phrase><phrase role="special">,</phrase> <phrase role="keyword">int</phrase><phrase role="special">,</phrase> <phrase role="keyword">int</phrase><phrase role="special">);</phrase>
+
+<phrase role="comment">// Use a pre-existing color constant.
+</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color_constant</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <important>
+ <para>
+ Any integer value is accepted by the SVG standard, but negative values
+ are rounded to 0, and positive values > 255 are rounded down to 255.
+ </para>
+ </important>
+ </section>
+ <section id="svg_plot.color.svg_color_example">
+ <title> Example of using <code><phrase role="identifier">svg_color</phrase></code></title>
+
+<programlisting>
+<phrase role="keyword">using</phrase> <phrase role="keyword">namespace</phrase> <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">svg</phrase><phrase role="special">;</phrase>
+
+<phrase role="identifier">svg_color</phrase> <phrase role="identifier">my_white</phrase><phrase role="special">(</phrase><phrase role="number">255</phrase><phrase role="special">,</phrase> <phrase role="number">255</phrase><phrase role="special">,</phrase> <phrase role="number">255</phrase><phrase role="special">);</phrase>
+<phrase role="identifier">svg_color</phrase> <phrase role="identifier">const_white</phrase><phrase role="special">(</phrase><phrase role="identifier">white</phrase><phrase role="special">);</phrase>
+
+<phrase role="identifier">BOOST_ASSERT</phrase><phrase role="special">(</phrase><phrase role="identifier">my_white</phrase> <phrase role="special">==</phrase> <phrase role="identifier">const_white</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <note>
+ <para>
+ <code><phrase role="identifier">svg_color</phrase></code>'s constructor
+ takes in three integer values. The SVG 1.1 standard allows any integer
+ to represent an RGB value, with values less than 0 and greater than 255
+ being rounded to their respective min and max.
+ </para>
+ </note>
</section>
<section id="svg_plot.color.color_internals">
<title> Internals and Rationale</title>
<para>
- All color information is stored in RGB format in a svg_struct. The rationale
- for storing information in RGB format is because it is precise and is always
- representable the exact same way. Storing as a floating point percentage
- introduces the possibility of rounding error, which I would like to avoid
- at all costs, so that the same image file displays the same way on any system
- that correctly implements the SVG format.
+ Constants are defined in an enum, <code><phrase role="identifier">svg_color_constant</phrase></code>,
+ in alphabetical order. This facilitates quick lookup of their RGB values
+ from an array. Anywhere that a <code><phrase role="identifier">svg_color</phrase></code>
+ can be used, a <code><phrase role="identifier">svg_color_constant</phrase></code>
+ can be used, as the conversion is implicit.
</para>
<para>
- It is important to note that any integer value is accepted by the SVG standard,
- but negative values are rounded to 0, and positive values > 255 are rounded
- down to 255.
+ All color information is stored in RGB format in a <code><phrase role="identifier">svg_color</phrase></code>
+ struct. The rationale for storing information in RGB format is because it
+ is precise, and is always representable the exact same way. Storing a floating
+ point percentage introduces the possibility of rounding error, which I would
+ like to avoid at all costs.
</para>
+ </section>
+ </section>
+ <section id="svg_plot.tutorial_code_1d_simple">
+ <title> Tutorial: 1D Simple Program</title>
+ <section id="svg_plot.tutorial_code_1d_simple.tutorial_code_1d_example">
+ <title> Code Example</title>
+<programlisting>
+<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">boost</phrase><phrase role="special">/</phrase><phrase role="identifier">svg_plot</phrase><phrase role="special">/</phrase><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">hpp</phrase><phrase role="special">></phrase>
+<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">vector</phrase><phrase role="special">></phrase>
+
+<phrase role="keyword">using</phrase> <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">vector</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">using</phrase> <phrase role="keyword">namespace</phrase> <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">svg</phrase><phrase role="special">;</phrase>
+
+<phrase role="keyword">int</phrase> <phrase role="identifier">main</phrase><phrase role="special">()</phrase>
+<phrase role="special">{</phrase>
+ <phrase role="identifier">vector</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">dan_times</phrase><phrase role="special">;</phrase>
+ <phrase role="identifier">vector</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">elaine_times</phrase><phrase role="special">;</phrase>
+
+ <phrase role="identifier">dan_times</phrase><phrase role="special">.</phrase><phrase role="identifier">push_back</phrase><phrase role="special">(</phrase><phrase role="number">3.1</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">dan_times</phrase><phrase role="special">.</phrase><phrase role="identifier">push_back</phrase><phrase role="special">(</phrase><phrase role="number">4.2</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">elaine_times</phrase><phrase role="special">.</phrase><phrase role="identifier">push_back</phrase><phrase role="special">(</phrase><phrase role="number">2.1</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">elaine_times</phrase><phrase role="special">.</phrase><phrase role="identifier">push_back</phrase><phrase role="special">(</phrase><phrase role="number">7.8</phrase><phrase role="special">);</phrase>
+
+ <phrase role="identifier">svg_1d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
+
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">title</phrase><phrase role="special">(</phrase><phrase role="string">"Race Times"</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">legend_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_range</phrase><phrase role="special">(-</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase role="number">11</phrase><phrase role="special">);</phrase>
+
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">dan_times</phrase><phrase role="special">,</phrase> <phrase role="string">"Dan"</phrase><phrase role="special">,</phrase> <phrase role="identifier">blue</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">elaine_times</phrase><phrase role="special">,</phrase> <phrase role="string">"Elaine"</phrase><phrase role="special">,</phrase> <phrase role="identifier">orange</phrase><phrase role="special">);</phrase>
+
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">write</phrase><phrase role="special">(</phrase><phrase role="string">"simple.svg"</phrase><phrase role="special">);</phrase>
+ <phrase role="keyword">return</phrase> <phrase role="number">0</phrase><phrase role="special">;</phrase>
+<phrase role="special">}</phrase>
+</programlisting>
+ </section>
+ <section id="svg_plot.tutorial_code_1d_simple.1d_simple_image">
+ <title> Image</title>
<para>
- Constants are defined in an enum, svg_color_constant, in alphabetical order.
- This facilitates quick lookup of their RGB values quickly in an array.
+ <inlinemediaobject><imageobject><imagedata fileref="images/1d_simple.png"></imagedata></imageobject>
+ <textobject>
+ <phrase>1d_simple</phrase>
+ </textobject>
+ </inlinemediaobject>
</para>
</section>
- <section id="svg_plot.color.color_usage">
- <title> Usage</title>
+ <section id="svg_plot.tutorial_code_1d_simple.tutorial_syntax_explanation">
+ <title> A note on syntax</title>
<para>
- To use an example, set_line_color(), here are the two different ways we could
- set the line color, one using RGB values, and the other using the constant.
+ The syntax "<code><phrase role="identifier">my_plot</phrase><phrase
+ role="special">.</phrase><phrase role="identifier">title</phrase><phrase
+ role="special">(</phrase><phrase role="string">"Hello"</phrase><phrase
+ role="special">).</phrase><phrase role="identifier">legend_on</phrase><phrase
+ role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)...</phrase></code>"
+ may appear unfamiliar. However, it works on the same principle that the assignment
+ operator, addition operator, and output operator in the following code works:
</para>
- <para>
-
+
<programlisting>
-<phrase role="comment">// Using a new RGB value
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_line_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">139</phrase><phrase role="special">,</phrase> <phrase role="number">69</phrase><phrase role="special">,</phrase> <phrase role="number">19</phrase><phrase role="special">));</phrase>
+<phrase role="identifier">a</phrase> <phrase role="special">=</phrase> <phrase role="identifier">b</phrase> <phrase role="special">=</phrase> <phrase role="identifier">c</phrase> <phrase role="special">=</phrase> <phrase role="identifier">d</phrase> <phrase role="special">=</phrase> <phrase role="number">3</phrase><phrase role="special">;</phrase>
-<phrase role="comment">// Using an existing RGB value
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_line_color</phrase><phrase role="special">(</phrase><phrase role="identifier">my_color</phrase><phrase role="special">);</phrase>
-
-<phrase role="comment">// Using a color constant
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_line_color</phrase><phrase role="special">(</phrase><phrase role="identifier">saddlebrown</phrase><phrase role="special">);</phrase>
-
-<phrase role="comment">// Defining an RGB value from color constant. This is necessary in the plot() function
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_line_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="identifier">saddle_brown</phrase><phrase role="special">));</phrase>
+<phrase role="comment">//prints 12
+</phrase><phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">cout</phrase> <phrase role="special"><<</phrase> <phrase role="identifier">a</phrase> <phrase role="special">+</phrase> <phrase role="identifier">b</phrase> <phrase role="special">+</phrase> <phrase role="identifier">c</phrase> <phrase role="special">+</phrase> <phrase role="identifier">d</phrase> <phrase role="special"><<</phrase> <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">endl</phrase><phrase role="special">;</phrase>
+</programlisting>
+ <para>
+ Within all of the plot classes, "chaining" works the same way.
+ The equivalent code for the example is as follows:
+ </para>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">title</phrase><phrase role="special">(</phrase><phrase role="string">"Race Times"</phrase><phrase role="special">);</phrase>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">legend_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">);</phrase>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">x_range</phrase><phrase role="special">(-</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase role="number">11</phrase><phrase role="special">);</phrase>
</programlisting>
+ <para>
+ In the long run, I think you will find that my choice helps organize the
+ code a little better!
</para>
</section>
- </section>
- <section id="svg_plot.tutorial">
- <title> Tutorial</title>
- <section id="svg_plot.tutorial.tutorial_basic">
- <title> Basic Example</title>
+ <section id="svg_plot.tutorial_code_1d_simple.tutorial_simple_exam">
+ <title> Basic Example Breakdown</title>
<para>
- The minimal requirements for creating any image are as follows.
+ Let's examine what this does.
+ </para>
+
+<programlisting>
+<phrase role="identifier">svg_1d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
+</programlisting>
+ <para>
+ This initializes a new 1D plot. This also sets many of the default values.
+ </para>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">title</phrase><phrase role="special">(</phrase><phrase role="string">"Race Times"</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">legend_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_range</phrase><phrase role="special">(-</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase role="number">11</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <para>
+ All of the setter methods are fairly self-explanatory. To walk through it
+ once,
</para>
<itemizedlist>
<listitem>
- You need a one or two dimensional svg_plot
+ the title, which will appear at the top of the graph, will say "Race
+ Times".
</listitem>
<listitem>
- You need to call the write() command
+ <code><phrase role="identifier">legend_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">true</phrase><phrase role="special">)</phrase></code> means
+ that the legend will show up.
+ </listitem>
+ <listitem>
+ <code><phrase role="identifier">x_range</phrase><phrase role="special">(-</phrase><phrase
+ role="number">1</phrase><phrase role="special">,</phrase> <phrase
+ role="number">11</phrase><phrase role="special">)</phrase></code> means
+ that the axis displayed will be between -1 and 11, as you can see in the
+ above image.
</listitem>
</itemizedlist>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Race times"</phrase><phrase role="special">);</phrase>
+</programlisting>
<para>
- That's it! However, just doing this won't give you anything useful. The following
- can be considered a minimal example:
+ This draws <code><phrase role="identifier">my_data</phrase></code> to <code><phrase
+ role="identifier">my_plot</phrase></code>. As many containers as you want
+ can be drawn to <code><phrase role="identifier">my_plot</phrase></code>.
+ The name of the series is "Race times", and that text will show
+ up in the legend. These are the two required parameters for this function
+ call. There are optional parameters, as seen in the section <ulink url="svg_plot/svg_1d_plot_interface.html"></ulink>
</para>
- <section id="svg_plot.tutorial.tutorial_basic.tutorial_code_simple">
- <title> Simple program</title>
- <para>
-
+ <para>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">write</phrase><phrase role="special">(</phrase><phrase role="string">"simple.svg"</phrase><phrase role="special">);</phrase>
+</programlisting>
+ </para>
+ <para>
+ This writes our plot to the file "simple.svg".
+ </para>
+ </section>
+ </section>
+ <section id="svg_plot.full_1d_layout">
+ <title> Tutorial: 1D Full Layout Example</title>
<programlisting>
-<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">boost</phrase><phrase role="special">/</phrase><phrase role="identifier">svg_plot</phrase><phrase role="special">/</phrase><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">hpp</phrase><phrase role="special">></phrase>
-<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">vector</phrase><phrase role="special">></phrase>
+<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">boost</phrase><phrase role="special">/</phrase><phrase role="identifier">svg_plot</phrase><phrase role="special">/</phrase><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">hpp</phrase><phrase role="special">></phrase>
+<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">vector</phrase><phrase role="special">></phrase>
+<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">deque</phrase><phrase role="special">></phrase>
+<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">cmath</phrase><phrase role="special">></phrase>
+<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">boost</phrase><phrase role="special">/</phrase><phrase role="identifier">array</phrase><phrase role="special">.</phrase><phrase role="identifier">hpp</phrase><phrase role="special">></phrase>
+
+<phrase role="keyword">using</phrase> <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">vector</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">using</phrase> <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">deque</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">using</phrase> <phrase role="keyword">namespace</phrase> <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">svg</phrase><phrase role="special">;</phrase>
-<phrase role="keyword">using</phrase> <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">vector</phrase><phrase role="special">;</phrase>
-<phrase role="keyword">using</phrase> <phrase role="keyword">namespace</phrase> <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">svg_plot</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">double</phrase> <phrase role="identifier">f</phrase><phrase role="special">(</phrase><phrase role="keyword">double</phrase> <phrase role="identifier">x</phrase><phrase role="special">)</phrase>
+<phrase role="special">{</phrase>
+ <phrase role="keyword">return</phrase> <phrase role="identifier">sqrt</phrase><phrase role="special">(</phrase><phrase role="identifier">x</phrase><phrase role="special">);</phrase>
+<phrase role="special">}</phrase>
-<phrase role="keyword">int</phrase> <phrase role="identifier">main</phrase><phrase role="special">()</phrase>
+<phrase role="keyword">double</phrase> <phrase role="identifier">g</phrase><phrase role="special">(</phrase><phrase role="keyword">double</phrase> <phrase role="identifier">x</phrase><phrase role="special">)</phrase>
<phrase role="special">{</phrase>
- <phrase role="comment">// Snip
-</phrase>
- <phrase role="identifier">vector</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">my_data</phrase><phrase role="special">;</phrase>
+ <phrase role="keyword">return</phrase> <phrase role="special">-</phrase><phrase role="number">2</phrase> <phrase role="special">+</phrase> <phrase role="identifier">x</phrase><phrase role="special">*</phrase><phrase role="identifier">x</phrase><phrase role="special">;</phrase>
+<phrase role="special">}</phrase>
- <phrase role="comment">// initialize my_data here
-</phrase>
- <phrase role="identifier">svg_1d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">double</phrase> <phrase role="identifier">h</phrase><phrase role="special">(</phrase><phrase role="keyword">double</phrase> <phrase role="identifier">x</phrase><phrase role="special">)</phrase>
+<phrase role="special">{</phrase>
+ <phrase role="keyword">return</phrase> <phrase role="special">-</phrase><phrase role="number">1</phrase> <phrase role="special">+</phrase> <phrase role="number">2</phrase><phrase role="special">*</phrase><phrase role="identifier">x</phrase><phrase role="special">;</phrase>
+<phrase role="special">}</phrase>
+
+<phrase role="keyword">int</phrase> <phrase role="identifier">main</phrase><phrase role="special">()</phrase>
+<phrase role="special">{</phrase>
+ <phrase role="identifier">vector</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">data1</phrase><phrase role="special">;</phrase>
+ <phrase role="identifier">deque</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">data2</phrase><phrase role="special">;</phrase>
+ <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">array</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">,</phrase> <phrase role="number">10</phrase><phrase role="special">></phrase> <phrase role="identifier">data3</phrase><phrase role="special">;</phrase>
+
+ <phrase role="keyword">int</phrase> <phrase role="identifier">j</phrase><phrase role="special">=</phrase><phrase role="number">0</phrase><phrase role="special">;</phrase>
+ <phrase role="keyword">for</phrase><phrase role="special">(</phrase><phrase role="keyword">double</phrase> <phrase role="identifier">i</phrase><phrase role="special">=</phrase><phrase role="number">0</phrase><phrase role="special">;</phrase> <phrase role="identifier">i</phrase><phrase role="special"><</phrase><phrase role="number">9.5</phrase><phrase role="special">;</phrase> <phrase role="identifier">i</phrase><phrase role="special">+=</phrase><phrase role="number">1.</phrase><phrase role="special">)</phrase>
+ <phrase role="special">{</phrase>
+ <phrase role="identifier">data1</phrase><phrase role="special">.</phrase><phrase role="identifier">push_back</phrase><phrase role="special">(</phrase><phrase role="identifier">f</phrase><phrase role="special">(</phrase><phrase role="identifier">i</phrase><phrase role="special">));</phrase>
+ <phrase role="identifier">data2</phrase><phrase role="special">.</phrase><phrase role="identifier">push_front</phrase><phrase role="special">(</phrase><phrase role="identifier">g</phrase><phrase role="special">(</phrase><phrase role="identifier">i</phrase><phrase role="special">));</phrase>
+ <phrase role="identifier">data3</phrase><phrase role="special">[</phrase><phrase role="identifier">j</phrase><phrase role="special">++]</phrase> <phrase role="special">=</phrase> <phrase role="identifier">h</phrase><phrase role="special">(</phrase><phrase role="identifier">i</phrase><phrase role="special">);</phrase>
+ <phrase role="special">}</phrase>
- <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_title</phrase><phrase role="special">(</phrase><phrase role="string">"My Graph"</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_legend_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_range</phrase><phrase role="special">(-</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase role="number">11</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">svg_1d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
+
+ <phrase role="comment">// Size/scale settings.
+</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">image_size</phrase><phrase role="special">(</phrase><phrase role="number">500</phrase><phrase role="special">,</phrase> <phrase role="number">350</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_range</phrase><phrase role="special">(-</phrase><phrase role="number">3</phrase><phrase role="special">,</phrase> <phrase role="number">10</phrase><phrase role="special">);</phrase>
+
+ <phrase role="comment">// Text settings.
+</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">title</phrase><phrase role="special">(</phrase><phrase role="string">"Oh My!"</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">title_font_size</phrase><phrase role="special">(</phrase><phrase role="number">29</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_label</phrase><phrase role="special">(</phrase><phrase role="string">"Time in Months"</phrase><phrase role="special">);</phrase>
+
+ <phrase role="comment">// Commands.
+</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">legend_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">plot_window_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_label_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_major_labels_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">);</phrase>
+
+ <phrase role="comment">// color settings
+</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">background_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">67</phrase><phrase role="special">,</phrase> <phrase role="number">111</phrase><phrase role="special">,</phrase> <phrase role="number">69</phrase><phrase role="special">))</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">legend_background_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">207</phrase><phrase role="special">,</phrase> <phrase role="number">202</phrase><phrase role="special">,</phrase><phrase role="number">167</phrase><phrase role="special">))</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">legend_border_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">102</phrase><phrase role="special">,</phrase> <phrase role="number">102</phrase><phrase role="special">,</phrase> <phrase role="number">84</phrase><phrase role="special">))</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">plot_background_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">136</phrase><phrase role="special">,</phrase> <phrase role="number">188</phrase><phrase role="special">,</phrase> <phrase role="number">126</phrase><phrase role="special">))</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">title_color</phrase><phrase role="special">(</phrase><phrase role="identifier">white</phrase><phrase role="special">);</phrase>
+
+ <phrase role="comment">//axis settings
+</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">x_major_tick</phrase><phrase role="special">(</phrase><phrase role="number">2</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_major_tick_length</phrase><phrase role="special">(</phrase><phrase role="number">14</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_major_tick_width</phrase><phrase role="special">(</phrase><phrase role="number">1</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_minor_tick_length</phrase><phrase role="special">(</phrase><phrase role="number">7</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_minor_tick_width</phrase><phrase role="special">(</phrase><phrase role="number">1</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_num_minor_ticks</phrase><phrase role="special">(</phrase><phrase role="number">3</phrase><phrase role="special">);</phrase>
+
+ <phrase role="comment">//legend settings
+</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">legend_title_font_size</phrase><phrase role="special">(</phrase><phrase role="number">15</phrase><phrase role="special">);</phrase>
- <phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Race times"</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">data1</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase> <phrase role="identifier">blue</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">data2</phrase><phrase role="special">,</phrase> <phrase role="string">"Tigers"</phrase><phrase role="special">,</phrase> <phrase role="identifier">orange</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">data3</phrase><phrase role="special">,</phrase> <phrase role="string">"Bears"</phrase><phrase role="special">,</phrase> <phrase role="identifier">red</phrase><phrase role="special">);</phrase>
- <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">write</phrase><phrase role="special">(</phrase><phrase role="string">"my_file.svg"</phrase><phrase role="special">);</phrase>
- <phrase role="keyword">return</phrase> <phrase role="number">0</phrase><phrase role="special">;</phrase>
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">write</phrase><phrase role="special">(</phrase><phrase role="string">"1d_complex.svg"</phrase><phrase role="special">);</phrase>
+
+ <phrase role="keyword">return</phrase> <phrase role="number">0</phrase><phrase role="special">;</phrase>
<phrase role="special">}</phrase>
</programlisting>
- </para>
- <para>
- <inlinemediaobject><imageobject><imagedata fileref="my_file.svg"></imagedata></imageobject>
- <textobject>
- <phrase>my_file</phrase>
- </textobject>
- </inlinemediaobject>
- </para>
- </section>
- <section id="svg_plot.tutorial.tutorial_basic.tutorial_simple_exam">
- <title> Basic Example Breakdown</title>
- <para>
- Let's examine what this does.
- </para>
- <para>
-
-<programlisting>
-<phrase role="identifier">svg_1d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
-</programlisting>
- initializes a new 1D plot. This also sets many of the values that the class
- keeps track of with reasonable defaults.
- </para>
- <para>
-
-<programlisting>
-<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_title</phrase><phrase role="special">(</phrase><phrase role="string">"My Graph"</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_legend_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_range</phrase><phrase role="special">(-</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase role="number">11</phrase><phrase role="special">);</phrase>
-</programlisting>
- </para>
- <para>
- All of the set methods are fairly self explanatory. The title, which will
- appear at the top of the graph, will say "My Graph". <code><phrase
- role="identifier">set_legend_on</phrase><phrase role="special">(</phrase><phrase
- role="keyword">true</phrase><phrase role="special">)</phrase></code> means
- that the legend will show up. <code><phrase role="identifier">set_x_range</phrase><phrase
- role="special">(-</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase
- role="number">11</phrase><phrase role="special">)</phrase></code> means
- that the range of values that will be printed is between -1 and 11, as
- you can see in the above images.
- </para>
- <para>
- This syntax may be unfamiliar. However, it works on the same principle
- that the following code works:
-<programlisting>
-<phrase role="identifier">a</phrase> <phrase role="special">=</phrase> <phrase role="identifier">b</phrase> <phrase role="special">=</phrase> <phrase role="identifier">c</phrase> <phrase role="special">=</phrase> <phrase role="identifier">d</phrase> <phrase role="special">=</phrase> <phrase role="number">3</phrase><phrase role="special">;</phrase>
-</programlisting>
- </para>
- <para>
- You have also seen it used to print to the console:
-<programlisting>
-<phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">cout</phrase> <phrase role="special"><<</phrase> <phrase role="string">"Hello"</phrase> <phrase role="special"><<</phrase> <phrase role="identifier">name</phrase> <phrase role="special"><<</phrase> <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">endl</phrase><phrase role="special">;</phrase>
-</programlisting>
- </para>
- <para>
- Within all of the plot classes, chaining works the same way. The equivalent
- code for the above is as follows:
- </para>
- <para>
-
-<programlisting>
-<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_title</phrase><phrase role="special">(</phrase><phrase role="string">"My Graph"</phrase><phrase role="special">);</phrase>
-<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_legend_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">);</phrase>
-<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_x_range</phrase><phrase role="special">(-</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase role="number">11</phrase><phrase role="special">);</phrase>
-</programlisting>
- </para>
- <para>
- In the long run, I think you will find that my choice helps organize the
- code a little better!
- </para>
- <para>
-
+ <para>
+ This produces the following output:
+ </para>
+ <para>
+ <inlinemediaobject><imageobject><imagedata fileref="images/1d_complex.png"></imagedata></imageobject>
+ <textobject>
+ <phrase>1d_complex</phrase>
+ </textobject>
+ </inlinemediaobject>
+ </para>
+ <para>
+ A little bit of color customization goes a long way!
+ </para>
+ </section>
+ <section id="svg_plot.1d_special">
+ <title> Tutorial: 1D Special Features</title>
+ <section id="svg_plot.1d_special.x_axis_grid">
+ <title> X Axis Grid Lines</title>
+ <para>
+ If you would like grid lines that go across the graph, you can make the following
+ call to <code><phrase role="identifier">svg_1d_plot</phrase></code>:
+ </para>
+
<programlisting>
-<phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Race times"</phrase><phrase role="special">);</phrase>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">x_major_grid_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_minor_grid_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">);</phrase>
</programlisting>
- </para>
- <para>
- This draws <code><phrase role="identifier">my_data</phrase></code> to
- <code><phrase role="identifier">my_plot</phrase></code>. As many containers
- as you want can be drawn to my_plot. The name of the series is "Race
- times", and that text will show up in the legend. These are the three
- required parameters for this function call. There are optional parameters,
- as seen in the section Getting More Out Of The <code><phrase role="identifier">plot</phrase><phrase
- role="special">()</phrase></code> Function, but most immediately beneficial
- would be the ability to specify a color for your data point:
+ <para>
+ To style it, you would use the following calls:
+ </para>
+
<programlisting>
-<phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Race Times"</phrase><phrase role="special">,</phrase> <phrase role="identifier">blue</phrase><phrase role="special">);</phrase>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">x_major_grid_color</phrase><phrase role="special">(</phrase><phrase role="identifier">lightgray</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_minor_grid_color</phrase><phrase role="special">(</phrase><phrase role="identifier">whitesmoke</phrase><phrase role="special">);</phrase>
</programlisting>
- </para>
- <para>
- is how you could accomplish this
- </para>
- <para>
-
+ <para>
+ This will produce something like the following image:
+ </para>
+ <para>
+ <inlinemediaobject><imageobject><imagedata fileref="images/1d_x_grid.png"></imagedata></imageobject>
+ <textobject>
+ <phrase>1d_x_grid</phrase>
+ </textobject>
+ </inlinemediaobject>
+ </para>
+ </section>
+ <section id="svg_plot.1d_special.x_axis_external_style">
+ <title> X Axis External Style</title>
+ <para>
+ For an alternate way to display a regular axis, you can use an external style:
+ </para>
+
<programlisting>
-<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">write</phrase><phrase role="special">(</phrase><phrase role="string">"my_file.svg"</phrase><phrase role="special">);</phrase>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">x_external_style_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">);</phrase>
</programlisting>
- </para>
- <para>
- This writes our plot to the file "my_file.svg".
- </para>
- </section>
- </section>
- <section id="svg_plot.tutorial.plot_window">
- <title> Using a Plot Window</title>
<para>
- If the legend or the title is obscuring data, or you would merely like a
- different choice for layout, you can opt to use a <literal>plot window</literal>.
- To add it to a simple example:
+ The axis is still styled using the normal methods. The following is an example
+ of the style that you can produce with this.
</para>
<para>
-
+ <inlinemediaobject><imageobject><imagedata fileref="images/1d_x_external.png"></imagedata></imageobject>
+ <textobject>
+ <phrase>1d_x_external</phrase>
+ </textobject>
+ </inlinemediaobject>
+ </para>
+ <important>
+ <para>
+ If the axis is turned off, <code><phrase role="identifier">x_external_style_on</phrase><phrase
+ role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase></code>
+ will not turn the axis back on. To do that, you must call <code><phrase
+ role="identifier">axis_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">true</phrase><phrase role="special">)</phrase></code>
+ </para>
+ </important>
+ </section>
+ </section>
+ <section id="svg_plot.tutorial_2d_code_simple">
+ <title> Tutorial: Simple 2D Program</title>
+ <section id="svg_plot.tutorial_2d_code_simple.2d_simple_code_example">
+ <title> Simple Code Example</title>
<programlisting>
-<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">boost</phrase><phrase role="special">/</phrase><phrase role="identifier">svg_plot</phrase><phrase role="special">/</phrase><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">hpp</phrase><phrase role="special">></phrase>
-<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">vector</phrase><phrase role="special">></phrase>
+<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">boost</phrase><phrase role="special">/</phrase><phrase role="identifier">svg_plot</phrase><phrase role="special">/</phrase><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">hpp</phrase><phrase role="special">></phrase>
+<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">vector</phrase><phrase role="special">></phrase>
-<phrase role="keyword">using</phrase> <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">vector</phrase><phrase role="special">;</phrase>
-<phrase role="keyword">using</phrase> <phrase role="keyword">namespace</phrase> <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">svg_plot</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">using</phrase> <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">multimap</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">using</phrase> <phrase role="keyword">namespace</phrase> <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">svg</phrase><phrase role="special">;</phrase>
-<phrase role="comment">// Snip
-</phrase>
-<phrase role="identifier">vector</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">my_data</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">int</phrase> <phrase role="identifier">main</phrase><phrase role="special">()</phrase>
+<phrase role="special">{</phrase>
+ <phrase role="identifier">multimap</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">,</phrase> <phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">map1</phrase><phrase role="special">;</phrase>
+ <phrase role="identifier">multimap</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">,</phrase> <phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">map2</phrase><phrase role="special">;</phrase>
-<phrase role="comment">// initialize my_data here
-</phrase>
-<phrase role="identifier">svg_1d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
+ <phrase role="comment">// This is random data used purely for example purposes.
+</phrase> <phrase role="identifier">map1</phrase><phrase role="special">[</phrase><phrase role="number">1.</phrase><phrase role="special">]</phrase> <phrase role="special">=</phrase> <phrase role="number">3.2</phrase><phrase role="special">;</phrase>
+ <phrase role="identifier">map1</phrase><phrase role="special">[</phrase><phrase role="number">1.</phrase><phrase role="special">]</phrase> <phrase role="special">=</phrase> <phrase role="number">5.4</phrase><phrase role="special">;</phrase>
+ <phrase role="identifier">map1</phrase><phrase role="special">[</phrase><phrase role="number">7.3</phrase><phrase role="special">]</phrase> <phrase role="special">=</phrase> <phrase role="number">9.1</phrase><phrase role="special">;</phrase>
-<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_title</phrase><phrase role="special">(</phrase><phrase role="string">"My Graph"</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_legend_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_plot_window_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_range</phrase><phrase role="special">(-</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase role="number">11</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">map2</phrase><phrase role="special">[</phrase><phrase role="number">3.1</phrase><phrase role="special">]</phrase> <phrase role="special">=</phrase> <phrase role="number">6.1</phrase><phrase role="special">;</phrase>
+ <phrase role="identifier">map2</phrase><phrase role="special">[</phrase><phrase role="number">5.4</phrase><phrase role="special">]</phrase> <phrase role="special">=</phrase> <phrase role="number">7.</phrase><phrase role="special">;</phrase>
-<phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Race times"</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">svg_1d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
-<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">write</phrase><phrase role="special">(</phrase><phrase role="string">"my_file.svg"</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">title</phrase><phrase role="special">(</phrase><phrase role="string">"Race Times"</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">legend_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_range</phrase><phrase role="special">(-</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase role="number">11</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">background_border_color</phrase><phrase role="special">(</phrase><phrase role="identifier">black</phrase><phrase role="special">);</phrase>
+
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">map1</phrase><phrase role="special">,</phrase> <phrase role="string">"Series 1"</phrase><phrase role="special">,</phrase> <phrase role="identifier">blue</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">map2</phrase><phrase role="special">,</phrase> <phrase role="string">"Series 2"</phrase><phrase role="special">,</phrase> <phrase role="identifier">orange</phrase><phrase role="special">);</phrase>
+
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">write</phrase><phrase role="special">(</phrase><phrase role="string">"simple_2d.svg"</phrase><phrase role="special">);</phrase>
+ <phrase role="keyword">return</phrase> <phrase role="number">0</phrase><phrase role="special">;</phrase>
+<phrase role="special">}</phrase>
</programlisting>
- </para>
+ </section>
+ <section id="svg_plot.tutorial_2d_code_simple.2d_simple_image">
+ <title> Simple Image</title>
<para>
- This produces the following image: (insert image)
+ <inlinemediaobject><imageobject><imagedata fileref="images/2d_simple.png"></imagedata></imageobject>
+ <textobject>
+ <phrase>2d_simple</phrase>
+ </textobject>
+ </inlinemediaobject>
</para>
</section>
- <section id="svg_plot.tutorial.full_layout">
- <title> Full Layout Example</title>
+ <section id="svg_plot.tutorial_2d_code_simple.tutorial_simple_exam">
+ <title> Basic Example Breakdown</title>
<para>
- Boost.SVG_Plot is designed to avoid having to do much customization. However,
- it is by no means a "one size fits all" solution. As such, there
- is much that can be changed in the way of layout and design. An example follows:
+ Let's examine what this does.
</para>
- <para>
-
+
<programlisting>
-<phrase role="identifier">svg_1d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
-
-<phrase role="comment">// misc data
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_image_size</phrase><phrase role="special">(</phrase><phrase role="number">500</phrase><phrase role="special">,</phrase> <phrase role="number">350</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_title</phrase><phrase role="special">(</phrase><phrase role="string">"Race Results"</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_title_font_size</phrase><phrase role="special">(</phrase><phrase role="number">20</phrase><phrase role="special">);</phrase>
-
-<phrase role="comment">// display commands
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_x_label_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_major_labels_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_major_grid_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_minor_grid_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_axis_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_legend_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_plot_window_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_title_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">);</phrase>
-
-<phrase role="comment">// axis information
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_x_axis_width</phrase><phrase role="special">(</phrase><phrase role="number">2</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_label</phrase><phrase role="special">(</phrase><phrase role="string">"Time in minutes"</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_major_tick</phrase><phrase role="special">(</phrase><phrase role="number">5</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_num_minor_ticks</phrase><phrase role="special">(</phrase><phrase role="number">1</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_scale</phrase><phrase role="special">(-</phrase><phrase role="number">5</phrase><phrase role="special">,</phrase> <phrase role="number">130</phrase><phrase role="special">);</phrase>
-
-<phrase role="comment">// plot the information
-</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">ron_result</phrase><phrase role="special">,</phrase> <phrase role="string">"Ron"</phrase><phrase role="special">,</phrase> <phrase role="identifier">orange</phrase><phrase role="special">);</phrase>
-<phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">sally_result</phrase><phrase role="special">,</phrase> <phrase role="string">"Sally"</phrase><phrase role="special">,</phrase> <phrase role="identifier">red</phrase><phrase role="special">);</phrase>
-<phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">tim_result</phrase><phrase role="special">,</phrase> <phrase role="string">"Tim"</phrase><phrase role="special">,</phrase> <phrase role="identifier">blue</phrase><phrase role="special">);</phrase>
-
-<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">write</phrase><phrase role="special">(</phrase><phrase role="string">"race_results.svg"</phrase><phrase role="special">);</phrase>
+<phrase role="identifier">svg_2d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
</programlisting>
- </para>
<para>
- This produces the following image: (insert image)
+ This initializes a new 2D plot. This also sets many of the default values.
</para>
- </section>
- <section id="svg_plot.tutorial.color">
- <title> Color Customization</title>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">title</phrase><phrase role="special">(</phrase><phrase role="string">"Race Times"</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">legend_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_range</phrase><phrase role="special">(-</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase role="number">11</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">background_border_color</phrase><phrase role="special">(</phrase><phrase role="identifier">black</phrase><phrase role="special">);</phrase>
+</programlisting>
<para>
- The <literal>svg_plot</literal> classes support two major ways to define
- colors. One is the use of colors in the RGB format. To specify a color in
- the RGB format, you can use the following: <code><phrase role="identifier">svg_color</phrase><phrase
- role="special">(</phrase><phrase role="number">123</phrase><phrase role="special">,</phrase> <phrase
- role="number">73</phrase><phrase role="special">,</phrase> <phrase role="number">255</phrase><phrase
- role="special">)</phrase></code>, to pick a random example.
+ All of the setter methods are fairly self-explanatory. To walk through it
+ once,
</para>
+ <itemizedlist>
+ <listitem>
+ the title, which will appear at the top of the graph, will say "Race
+ Times".
+ </listitem>
+ <listitem>
+ <code><phrase role="identifier">legend_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">true</phrase><phrase role="special">)</phrase></code> means
+ that the legend will show up.
+ </listitem>
+ <listitem>
+ <code><phrase role="identifier">x_range</phrase><phrase role="special">(-</phrase><phrase
+ role="number">1</phrase><phrase role="special">,</phrase> <phrase
+ role="number">11</phrase><phrase role="special">)</phrase></code> means
+ that the axis displayed will be between -1 and 11, as you can see in the
+ above images.
+ </listitem>
+ <listitem>
+ <code><phrase role="identifier">background_border_color</phrase><phrase
+ role="special">(</phrase><phrase role="identifier">black</phrase><phrase
+ role="special">)</phrase></code> sets the border around the image to <code><phrase
+ role="identifier">black</phrase></code>. Ordinarily it is left to be the
+ color of the background.
+ </listitem>
+ </itemizedlist>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">map1</phrase><phrase role="special">,</phrase> <phrase role="string">"Series 1"</phrase><phrase role="special">,</phrase> <phrase role="identifier">blue</phrase><phrase role="special">);</phrase>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">map2</phrase><phrase role="special">,</phrase> <phrase role="string">"Series 2"</phrase><phrase role="special">,</phrase> <phrase role="identifier">orange</phrase><phrase role="special">);</phrase>
+</programlisting>
<para>
- The other way to define a color is to use the SVG standard's custom color
- definitions, as defined <ulink url="http://www.w3.org/TR/SVG/types.html#ColorKeywords">here</ulink>
+ This draws <code><phrase role="identifier">map1</phrase></code> and <code><phrase
+ role="identifier">map2</phrase></code> to <code><phrase role="identifier">my_plot</phrase></code>.
+ As many containers as you want can be drawn to <code><phrase role="identifier">my_plot</phrase></code>.
+ After a certain point, however, I recommend just creating another plot! The
+ name of the series is <code><phrase role="string">"Race times"</phrase></code>,
+ and that text will show up in the legend. These are the two required parameters
+ for this function call. There are optional parameters, as seen in the section
+ <ulink url="plot_function">Getting More Out of the <code><phrase role="identifier">plot</phrase><phrase
+ role="special">()</phrase></code> Function</ulink>
</para>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">write</phrase><phrase role="special">(</phrase><phrase role="string">"simple_2d.svg"</phrase><phrase role="special">);</phrase>
+</programlisting>
<para>
- Here is an example using color customization:
+ This writes our plot to the file "simple_2d.svg".
</para>
- <para>
-
+ </section>
+ </section>
+ <section id="svg_plot.full_2d_layout">
+ <title> Tutorial: Full Layout Example</title>
<programlisting>
-<phrase role="identifier">vector</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">data1</phrase><phrase role="special">;</phrase>
-<phrase role="identifier">deque</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">data2</phrase><phrase role="special">;</phrase>
-<phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">array</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">,</phrase> <phrase role="number">10</phrase><phrase role="special">></phrase> <phrase role="identifier">data3</phrase><phrase role="special">;</phrase>
+<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">boost</phrase><phrase role="special">/</phrase><phrase role="identifier">svg_plot</phrase><phrase role="special">/</phrase><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">hpp</phrase><phrase role="special">></phrase>
+<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">map</phrase><phrase role="special">></phrase>
+<phrase role="preprocessor">#include</phrase> <phrase role="special"><</phrase><phrase role="identifier">cmath</phrase><phrase role="special">></phrase>
-<phrase role="identifier">svg_1d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">using</phrase> <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">multimap</phrase><phrase role="special">;</phrase>
+<phrase role="keyword">using</phrase> <phrase role="keyword">namespace</phrase> <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">svg</phrase><phrase role="special">;</phrase>
-<phrase role="comment">// size/scale settings
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_image_size</phrase><phrase role="special">(</phrase><phrase role="number">500</phrase><phrase role="special">,</phrase> <phrase role="number">350</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_scale</phrase><phrase role="special">(-</phrase><phrase role="number">3</phrase><phrase role="special">,</phrase> <phrase role="number">10</phrase><phrase role="special">);</phrase>
-
-<phrase role="comment">// Text settings
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_title</phrase><phrase role="special">(</phrase><phrase role="string">"Oh My!"</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_title_font_size</phrase><phrase role="special">(</phrase><phrase role="number">29</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_label_text</phrase><phrase role="special">(</phrase><phrase role="string">"Time in Months"</phrase><phrase role="special">);</phrase>
-
-<phrase role="comment">// command settings
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_axis</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_legend</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_plot_window</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_label</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_major_labels</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">);</phrase>
+<phrase role="keyword">double</phrase> <phrase role="identifier">f</phrase><phrase role="special">(</phrase><phrase role="keyword">double</phrase> <phrase role="identifier">x</phrase><phrase role="special">)</phrase>
+<phrase role="special">{</phrase>
+ <phrase role="keyword">return</phrase> <phrase role="identifier">sqrt</phrase><phrase role="special">(</phrase><phrase role="identifier">x</phrase><phrase role="special">);</phrase>
+<phrase role="special">}</phrase>
-<phrase role="comment">// color settings
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_background_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">67</phrase><phrase role="special">,</phrase> <phrase role="number">111</phrase><phrase role="special">,</phrase> <phrase role="number">69</phrase><phrase role="special">))</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_legend_background_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">207</phrase><phrase role="special">,</phrase> <phrase role="number">202</phrase><phrase role="special">,</phrase><phrase role="number">167</phrase><phrase role="special">))</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_plot_background_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">136</phrase><phrase role="special">,</phrase> <phrase role="number">188</phrase><phrase role="special">,</phrase> <phrase role="number">126</phrase><phrase role="special">))</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_title_color</phrase><phrase role="special">(</phrase><phrase role="identifier">white</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_axis_color</phrase><phrase role="special">(</phrase><phrase role="identifier">black</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_major_tick_color</phrase><phrase role="special">(</phrase><phrase role="identifier">black</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_legend_border_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">102</phrase><phrase role="special">,</phrase> <phrase role="number">102</phrase><phrase role="special">,</phrase> <phrase role="number">84</phrase><phrase role="special">))</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_minor_tick_color</phrase><phrase role="special">(</phrase><phrase role="identifier">black</phrase><phrase role="special">);</phrase>
+<phrase role="keyword">double</phrase> <phrase role="identifier">g</phrase><phrase role="special">(</phrase><phrase role="keyword">double</phrase> <phrase role="identifier">x</phrase><phrase role="special">)</phrase>
+<phrase role="special">{</phrase>
+ <phrase role="keyword">return</phrase> <phrase role="special">-</phrase><phrase role="number">2</phrase> <phrase role="special">+</phrase> <phrase role="identifier">x</phrase><phrase role="special">*</phrase><phrase role="identifier">x</phrase><phrase role="special">;</phrase>
+<phrase role="special">}</phrase>
-<phrase role="comment">//axis settings
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_x_major_tick</phrase><phrase role="special">(</phrase><phrase role="number">2</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_num_minor_ticks</phrase><phrase role="special">(</phrase><phrase role="number">3</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_major_tick_length</phrase><phrase role="special">(</phrase><phrase role="number">14</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_minor_tick_length</phrase><phrase role="special">(</phrase><phrase role="number">7</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_major_tick_width</phrase><phrase role="special">(</phrase><phrase role="number">1</phrase><phrase role="special">)</phrase>
- <phrase role="special">.</phrase><phrase role="identifier">set_x_minor_tick_width</phrase><phrase role="special">(</phrase><phrase role="number">1</phrase><phrase role="special">);</phrase>
+<phrase role="keyword">double</phrase> <phrase role="identifier">h</phrase><phrase role="special">(</phrase><phrase role="keyword">double</phrase> <phrase role="identifier">x</phrase><phrase role="special">)</phrase>
+<phrase role="special">{</phrase>
+ <phrase role="keyword">return</phrase> <phrase role="special">-</phrase><phrase role="number">1</phrase> <phrase role="special">+</phrase> <phrase role="number">2</phrase><phrase role="special">*</phrase><phrase role="identifier">x</phrase><phrase role="special">;</phrase>
+<phrase role="special">}</phrase>
-<phrase role="comment">//legend settings
-</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">set_legend_title_font_size</phrase><phrase role="special">(</phrase><phrase role="number">15</phrase><phrase role="special">);</phrase>
+<phrase role="keyword">int</phrase> <phrase role="identifier">main</phrase><phrase role="special">()</phrase>
+<phrase role="special">{</phrase>
+ <phrase role="identifier">multimap</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">,</phrase> <phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">data1</phrase><phrase role="special">,</phrase> <phrase role="identifier">data2</phrase><phrase role="special">,</phrase> <phrase role="identifier">data3</phrase><phrase role="special">;</phrase>
+
+ <phrase role="keyword">for</phrase><phrase role="special">(</phrase><phrase role="keyword">double</phrase> <phrase role="identifier">i</phrase><phrase role="special">=</phrase><phrase role="number">0</phrase><phrase role="special">;</phrase> <phrase role="identifier">i</phrase><phrase role="special"><=</phrase><phrase role="number">10.</phrase><phrase role="special">;</phrase> <phrase role="identifier">i</phrase><phrase role="special">+=</phrase><phrase role="number">1.</phrase><phrase role="special">)</phrase>
+ <phrase role="special">{</phrase>
+ <phrase role="identifier">data1</phrase><phrase role="special">[</phrase><phrase role="identifier">i</phrase><phrase role="special">]</phrase> <phrase role="special">=</phrase> <phrase role="identifier">f</phrase><phrase role="special">(</phrase><phrase role="identifier">i</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">data2</phrase><phrase role="special">[</phrase><phrase role="identifier">i</phrase><phrase role="special">]</phrase> <phrase role="special">=</phrase> <phrase role="identifier">g</phrase><phrase role="special">(</phrase><phrase role="identifier">i</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">data3</phrase><phrase role="special">[</phrase><phrase role="identifier">i</phrase><phrase role="special">]</phrase> <phrase role="special">=</phrase> <phrase role="identifier">h</phrase><phrase role="special">(</phrase><phrase role="identifier">i</phrase><phrase role="special">);</phrase>
+ <phrase role="special">}</phrase>
-<phrase role="identifier">plot_range</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">data2</phrase><phrase role="special">.</phrase><phrase role="identifier">begin</phrase><phrase role="special">(),</phrase> <phrase role="identifier">data2</phrase><phrase role="special">.</phrase><phrase role="identifier">end</phrase><phrase role="special">(),</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase> <phrase role="identifier">blue</phrase><phrase role="special">);</phrase>
-<phrase role="identifier">plot_range</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">data1</phrase><phrase role="special">.</phrase><phrase role="identifier">begin</phrase><phrase role="special">(),</phrase> <phrase role="identifier">data1</phrase><phrase role="special">.</phrase><phrase role="identifier">end</phrase><phrase role="special">(),</phrase> <phrase role="string">"Tigers"</phrase><phrase role="special">,</phrase> <phrase role="identifier">purple</phrase><phrase role="special">);</phrase>
-<phrase role="identifier">plot_range</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">data3</phrase><phrase role="special">.</phrase><phrase role="identifier">begin</phrase><phrase role="special">(),</phrase> <phrase role="identifier">data3</phrase><phrase role="special">.</phrase><phrase role="identifier">end</phrase><phrase role="special">(),</phrase> <phrase role="string">"Bears"</phrase><phrase role="special">,</phrase> <phrase role="identifier">red</phrase><phrase role="special">);</phrase>
+ <phrase role="identifier">svg_2d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
-<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">write</phrase><phrase role="special">(</phrase><phrase role="string">"D:/1d_complex.svg"</phrase><phrase role="special">);</phrase>
+ <phrase role="comment">// Size/scale settings.
+</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">image_size</phrase><phrase role="special">(</phrase><phrase role="number">700</phrase><phrase role="special">,</phrase> <phrase role="number">500</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_range</phrase><phrase role="special">(-</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase role="number">10</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">y_range</phrase><phrase role="special">(-</phrase><phrase role="number">5</phrase><phrase role="special">,</phrase> <phrase role="number">100</phrase><phrase role="special">)</phrase>
+
+ <phrase role="comment">// Text settings.
+</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">title</phrase><phrase role="special">(</phrase><phrase role="string">"Plot of Mathematical Functions"</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">title_font_size</phrase><phrase role="special">(</phrase><phrase role="number">29</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_label</phrase><phrase role="special">(</phrase><phrase role="string">"Time in Months"</phrase><phrase role="special">);</phrase>
+
+ <phrase role="comment">// Commands.
+</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">legend_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">plot_window_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_label_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_major_labels_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">);</phrase>
+
+ <phrase role="comment">// Color settings.
+</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">background_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">67</phrase><phrase role="special">,</phrase> <phrase role="number">111</phrase><phrase role="special">,</phrase> <phrase role="number">69</phrase><phrase role="special">))</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">legend_background_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">207</phrase><phrase role="special">,</phrase> <phrase role="number">202</phrase><phrase role="special">,</phrase><phrase role="number">167</phrase><phrase role="special">))</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">legend_border_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">102</phrase><phrase role="special">,</phrase> <phrase role="number">102</phrase><phrase role="special">,</phrase> <phrase role="number">84</phrase><phrase role="special">))</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">plot_background_color</phrase><phrase role="special">(</phrase><phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="number">136</phrase><phrase role="special">,</phrase> <phrase role="number">188</phrase><phrase role="special">,</phrase> <phrase role="number">126</phrase><phrase role="special">))</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">title_color</phrase><phrase role="special">(</phrase><phrase role="identifier">white</phrase><phrase role="special">);</phrase>
+
+ <phrase role="comment">//X axis settings.
+</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">x_major_tick</phrase><phrase role="special">(</phrase><phrase role="number">2</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_major_tick_length</phrase><phrase role="special">(</phrase><phrase role="number">14</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_major_tick_width</phrase><phrase role="special">(</phrase><phrase role="number">1</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_minor_tick_length</phrase><phrase role="special">(</phrase><phrase role="number">7</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_minor_tick_width</phrase><phrase role="special">(</phrase><phrase role="number">1</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">x_num_minor_ticks</phrase><phrase role="special">(</phrase><phrase role="number">3</phrase><phrase role="special">)</phrase>
+
+ <phrase role="comment">//Y axis settings.
+</phrase> <phrase role="special">.</phrase><phrase role="identifier">y_major_tick</phrase><phrase role="special">(</phrase><phrase role="number">10</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">y_num_minor_ticks</phrase><phrase role="special">(</phrase><phrase role="number">2</phrase><phrase role="special">);</phrase>
+
+ <phrase role="comment">//legend settings
+</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">legend_title_font_size</phrase><phrase role="special">(</phrase><phrase role="number">15</phrase><phrase role="special">);</phrase>
+
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">data1</phrase><phrase role="special">,</phrase> <phrase role="string">"Sqrt(x)"</phrase><phrase role="special">,</phrase> <phrase role="identifier">blue</phrase><phrase role="special">,</phrase>
+ <phrase role="identifier">_point_style</phrase> <phrase role="special">=</phrase> <phrase role="identifier">none</phrase><phrase role="special">,</phrase>
+ <phrase role="identifier">_show_line</phrase> <phrase role="special">=</phrase> <phrase role="keyword">true</phrase><phrase role="special">);</phrase>
+
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">data2</phrase><phrase role="special">,</phrase> <phrase role="string">"-2 + x^2"</phrase><phrase role="special">,</phrase> <phrase role="identifier">orange</phrase><phrase role="special">,</phrase>
+ <phrase role="identifier">_show_line</phrase> <phrase role="special">=</phrase> <phrase role="keyword">true</phrase><phrase role="special">);</phrase>
+
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">data3</phrase><phrase role="special">,</phrase> <phrase role="string">"-1 + 2x"</phrase><phrase role="special">,</phrase> <phrase role="identifier">red</phrase><phrase role="special">,</phrase>
+ <phrase role="identifier">_point_style</phrase> <phrase role="special">=</phrase> <phrase role="identifier">square</phrase><phrase role="special">);</phrase>
+
+ <phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">write</phrase><phrase role="special">(</phrase><phrase role="string">"2d_full.svg"</phrase><phrase role="special">);</phrase>
+
+ <phrase role="keyword">return</phrase> <phrase role="number">0</phrase><phrase role="special">;</phrase>
+<phrase role="special">}</phrase>
+</programlisting>
+ <para>
+ This produces the following output:
+ </para>
+ <para>
+ <inlinemediaobject><imageobject><imagedata fileref="images/2d_full.png"></imagedata></imageobject>
+ <textobject>
+ <phrase>2d_full</phrase>
+ </textobject>
+ </inlinemediaobject>
+ </para>
+ <para>
+ A little bit of color customization goes a long way!
+ </para>
+ </section>
+ <section id="svg_plot.2d_special">
+ <title> Tutorial: 2D Special Features</title>
+ <section id="svg_plot.2d_special.y_grid_lines">
+ <title> Y Axis Grid Lines</title>
+ <para>
+ If you would like grid lines that go across the graph, you can make the following
+ call to <code><phrase role="identifier">svg_1d_plot</phrase></code>:
+ </para>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">y_major_grid_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">y_minor_grid_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <para>
+ To style it, you would use the following calls:
+ </para>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">y_major_grid_color</phrase><phrase role="special">(</phrase><phrase role="identifier">lightgray</phrase><phrase role="special">)</phrase>
+ <phrase role="special">.</phrase><phrase role="identifier">y_minor_grid_color</phrase><phrase role="special">(</phrase><phrase role="identifier">whitesmoke</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <para>
+ This will produce something like the following image:
+ </para>
+ <para>
+ <inlinemediaobject><imageobject><imagedata fileref="images/2d_y_grid.png"></imagedata></imageobject>
+ <textobject>
+ <phrase>2d_y_grid</phrase>
+ </textobject>
+ </inlinemediaobject>
+ </para>
+ </section>
+ <section id="svg_plot.2d_special.external_y_axis">
+ <title> External Y Axis Style</title>
+ <para>
+ For an alternate way to display a regular axis, you can use an external style:
+ </para>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">y_external_style_on</phrase><phrase role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <important>
+ <para>
+ If the axis is turned off, <code><phrase role="identifier">y_external_style_on</phrase><phrase
+ role="special">(</phrase><phrase role="keyword">true</phrase><phrase role="special">)</phrase></code>
+ will not turn the axis back on. To do that, you must call <code><phrase
+ role="identifier">axis_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">true</phrase><phrase role="special">)</phrase></code>
+ </para>
+ </important>
+ </section>
+ <section id="svg_plot.2d_special.fill_axis_plot">
+ <title> Fill the area between the plot and the axis</title>
+ <para>
+ When there is a call to the plot() method, define <code><phrase role="identifier">_area_fill_color</phrase></code>
+ </para>
+
+<programlisting>
+<phrase role="identifier">multimap</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">,</phrase> <phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">my_data</phrase><phrase role="special">;</phrase>
+<phrase role="identifier">svg_2d_plot</phrase> <phrase role="identifier">my_plot</phrase><phrase role="special">;</phrase>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Data"</phrase><phrase role="special">,</phrase> <phrase role="identifier">_area_fill_color</phrase><phrase role="special">(</phrase><phrase role="identifier">red</phrase><phrase role="special">));</phrase>
+</programlisting>
+ <para>
+ This produces the following image:
+ </para>
+ <para>
+ <inlinemediaobject><imageobject><imagedata fileref="images/2d_area_fill.png"></imagedata></imageobject>
+ <textobject>
+ <phrase>2d_area_fill</phrase>
+ </textobject>
+ </inlinemediaobject>
+ </para>
+ </section>
+ <section id="svg_plot.2d_special.curve_interpolation">
+ <title> Curve Interpolation</title>
+ <para>
+ If you would like an interpolated curve shown over your data, simply use
+ the following command:
+ </para>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">data</phrase><phrase role="special">,</phrase> <phrase role="string">"Series 1"</phrase><phrase role="special">,</phrase> <phrase role="identifier">_bezier_curve</phrase> <phrase role="special">=</phrase> <phrase role="string">"true"</phrase><phrase role="special">);</phrase>
</programlisting>
+ <para>
+ This produces something like the following images:
</para>
<para>
- This produces the following output: (Insert image)
+ <inlinemediaobject><imageobject><imagedata fileref="images/2d_bezier.png"></imagedata></imageobject>
+ <textobject>
+ <phrase>2d_bezier</phrase>
+ </textobject>
+ </inlinemediaobject>
</para>
+ <warning>
+ <para>
+ The <code><phrase role="identifier">_bezier_curve</phrase></code> feature
+ is still very much in its infancy. If you play nice with it, it will play
+ nice with you, but it is still buggy. Do not use this feature with curves
+ that have a limit (<code><phrase role="special">-</phrase><phrase role="identifier">NaN</phrase></code>,
+ for example), or with data that has high irregularity in X-Axis spacing
+ (a clump of points between (0, 1) on the X axis, with the next one at 100
+ on the X axis, for example)
+ </para>
+ </warning>
</section>
- <section id="svg_plot.tutorial.defaults">
+ </section>
+ <section id="svg_plot.plot_defaults">
+ <title> Defaults</title>
+ <section id="svg_plot.plot_defaults.1d_defaults">
<title> <code><phrase role="identifier">svg_1d_plot</phrase></code> Defaults</title>
<para>
You may have noticed that there are certain defaults that are true at the
@@ -446,7 +941,7 @@
</para>
<informaltable frame="all">
<bridgehead renderas="sect4">
- <phrase role="table-title">Default Values]</phrase>
+ <phrase role="table-title">Default Values</phrase>
</bridgehead>
<tgroup cols="3">
<thead>
@@ -456,44 +951,30 @@
</thead>
<tbody>
<row>
- <entry>Image size</entry><entry><code><phrase role="number">500</phrase> <phrase
- role="identifier">by</phrase> <phrase role="number">350</phrase></code></entry><entry>Details
- discernable. The image is easily viewable by those using 800x600 monitors</entry>
- </row>
- <row>
- <entry>X Axis Label</entry><entry><code><phrase role="string">"X
- Axis"</phrase><phrase role="special">,</phrase> <phrase role="identifier">Off</phrase></code></entry><entry>"X
- Axis" is the label because something should display were the user
- to turn on the X axis label without setting text, and this is the most
- informative</entry>
+ <entry>All colors not defined in this table</entry><entry>black</entry><entry>K.I.S.S.
+ Coloring will be highly dependent on user needs</entry>
</row>
<row>
- <entry>X Range</entry><entry><code><phrase role="special">(-</phrase><phrase
- role="number">10</phrase><phrase role="special">,</phrase> <phrase
- role="number">10</phrase><phrase role="special">)</phrase></code></entry><entry>Traditional
- plot viewport</entry>
+ <entry>Axis</entry><entry>On, internal style</entry><entry>Most graphs
+ include an axis of some kind. The internal axis style is used because
+ this seems to be the default behavior in many textbooks I have owned.</entry>
</row>
<row>
- <entry>Axis</entry><entry>On</entry><entry>Most graphs include an axis
- of some kindl</entry>
+ <entry>Distance between major X ticks</entry><entry><code><phrase role="number">3</phrase> <phrase
+ role="identifier">units</phrase></code></entry><entry>Reasonably fits
+ into a plot window</entry>
</row>
<row>
- <entry>Legend</entry><entry><code><phrase role="identifier">Off</phrase></code></entry><entry>The
- goal of the defaults is to provide the cleanest possible plot as a
- default. Not including the legend meets this goal. If there is a public
- outcry, I can change this.</entry>
+ <entry>Font size of the legend title</entry><entry>12</entry><entry>Reasonable
+ when paired with the image size</entry>
</row>
<row>
- <entry>Title</entry><entry>On, "Plot of data"</entry><entry>The
- title is on because this is one of the most basic elements of a graph.
- The title is set to a default because when <code><phrase role="identifier">title_on</phrase> <phrase
- role="special">==</phrase> <phrase role="keyword">true</phrase></code>,
- something should display</entry>
+ <entry>Font size of the X Label</entry><entry>12</entry><entry>Reasonable
+ when paired with the image size</entry>
</row>
<row>
- <entry>Plot Window</entry><entry><code><phrase role="identifier">Off</phrase></code></entry><entry>Initially
- off because it is the simplest case. I will change this if there is
- an outcry</entry>
+ <entry>Font size of the title</entry><entry>30</entry><entry>Makes
+ the title stand out</entry>
</row>
<row>
<entry>Grid lines</entry><entry><code><phrase role="identifier">All</phrase> <phrase
@@ -501,13 +982,23 @@
a user's personal choice, so I default with the simpler model</entry>
</row>
<row>
- <entry>Distance between major X ticks</entry><entry><code><phrase role="number">3</phrase> <phrase
- role="identifier">units</phrase></code></entry><entry>Reasonably fits
- into a plot window</entry>
+ <entry>Image background</entry><entry>white</entry><entry>K.I.S.S.
+ Coloring will be highly dependent on user needs.</entry>
</row>
<row>
- <entry>Number of minor X ticks between each major X tick</entry><entry>2</entry><entry>This
- allows the minor ticks to appear on the integers</entry>
+ <entry>Image size</entry><entry><code><phrase role="number">500</phrase> <phrase
+ role="identifier">by</phrase> <phrase role="number">350</phrase></code></entry><entry>Details
+ discernable. The image is easily viewable by those using 800x600 monitors</entry>
+ </row>
+ <row>
+ <entry>Legend</entry><entry><code><phrase role="identifier">Off</phrase></code></entry><entry>The
+ goal of the defaults is to provide the cleanest possible plot as a
+ default. Excluding the legend meets this goal. If there is a public
+ outcry, I can change this.</entry>
+ </row>
+ <row>
+ <entry>Legend background</entry><entry>white</entry><entry>K.I.S.S.
+ Coloring will be highly dependent on user needs</entry>
</row>
<row>
<entry>Major tick length</entry><entry>20 pixels</entry><entry>Tasteful
@@ -528,147 +1019,207 @@
the minor tick less obvious than the major ticks</entry>
</row>
<row>
- <entry>Font size of the legend title</entry><entry>12</entry><entry>Reasonable
- when paired with the image size</entry>
+ <entry>Number of minor X ticks between each major X tick</entry><entry>2</entry><entry>This
+ allows the minor ticks to appear on the integers</entry>
</row>
<row>
- <entry>Font size of the X Label</entry><entry>12</entry><entry>Reasonable
- when paired with the image size</entry>
+ <entry>Plot Window</entry><entry><code><phrase role="identifier">Off</phrase></code></entry><entry>Initially
+ off because it is the simplest case. I will change this if there is
+ an outcry</entry>
</row>
<row>
- <entry>Font size of the title</entry><entry>30</entry><entry>Makes
- the title stand out</entry>
+ <entry>Plot window background</entry><entry>white</entry><entry>K.I.S.S.
+ Coloring will be highly dependent on user needs</entry>
</row>
<row>
- <entry>Image background</entry><entry>white</entry><entry>K.I.S.S.
- Coloring will be highly dependent on user needs.</entry>
+ <entry>Title</entry><entry>On, <code><phrase role="string">"Plot
+ of data"</phrase></code></entry><entry>The title is on because
+ this is one of the most basic elements of a graph. The title is set
+ to a default because when <code><phrase role="identifier">title_on</phrase> <phrase
+ role="special">==</phrase> <phrase role="keyword">true</phrase></code>,
+ something should display</entry>
+ </row>
+ <row>
+ <entry>Title size</entry><entry><code><phrase role="number">30</phrase></code></entry><entry>This
+ is clearly visible in a variety of image sizes</entry>
+ </row>
+ <row>
+ <entry>X Axis Label</entry><entry><code><phrase role="string">"X
+ Axis"</phrase></code>, Off</entry><entry>"X Axis" is
+ the label because something should display were the user to turn on
+ the X axis label without setting text, and this is the most informative</entry>
</row>
<row>
- <entry>Plot window background</entry><entry>white</entry><entry>As
- above</entry>
+ <entry>X Axis Label Size</entry><entry><code><phrase role="number">12</phrase></code></entry><entry>This
+ is a reasonable size at the default image size</entry>
</row>
<row>
- <entry>Legend background</entry><entry>white</entry><entry>As above</entry>
+ <entry>X Grid (Major and Minor)</entry><entry>Off</entry><entry>Turned
+ off in the interest of providing simple, clean plots</entry>
</row>
<row>
- <entry>All other colors</entry><entry>black</entry><entry>As above</entry>
+ <entry>X Range</entry><entry><code><phrase role="special">(-</phrase><phrase
+ role="number">10</phrase><phrase role="special">,</phrase> <phrase
+ role="number">10</phrase><phrase role="special">)</phrase></code></entry><entry>Traditional
+ plot viewport</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
- <section id="svg_plot.tutorial.plot_function">
- <title> Getting More Out Of The <code><phrase role="identifier">plot</phrase><phrase
- role="special">()</phrase></code> Function</title>
+ <section id="svg_plot.plot_defaults.2d_defaults">
+ <title> <code><phrase role="identifier">svg_2d_plot</phrase></code> Defaults</title>
<para>
- The <code><phrase role="identifier">plot</phrase><phrase role="special">()</phrase></code>
- function is defined using Boost.Parameter. As such, it supports a few extra
- named parameters, as well as a deduced parameter.
+ You may have noticed that there are certain defaults that are true at the
+ beginning of the plotting. Here is a table of the defaults:
</para>
<informaltable frame="all">
<bridgehead renderas="sect4">
- <phrase role="table-title">Deduced parameter</phrase>
+ <phrase role="table-title">Default Values</phrase>
</bridgehead>
<tgroup cols="3">
<thead>
<row>
- <entry>ID</entry><entry>Description</entry><entry>Default</entry>
+ <entry>object</entry><entry>Default value</entry><entry>Rationale</entry>
</row>
</thead>
<tbody>
<row>
- <entry>_fill_color</entry><entry>This is the color that shows up inside
- of the circle that is being drawn</entry><entry>white</entry>
+ <entry>All colors not defined in this table</entry><entry>black</entry><entry>K.I.S.S.
+ Coloring will be highly dependent on user needs</entry>
</row>
- </tbody>
- </tgroup>
- </informaltable>
- <informaltable frame="all">
- <bridgehead renderas="sect4">
- <phrase role="table-title">Named Parameters</phrase>
- </bridgehead>
- <tgroup cols="3">
- <thead>
<row>
- <entry>ID</entry><entry>Description</entry><entry>Default</entry>
+ <entry>Axis</entry><entry>On, internal style</entry><entry>Most graphs
+ include an axis of some kind. The internal axis style is used because
+ this seems to be the default behavior in many textbooks I have owned.</entry>
</row>
- </thead>
- <tbody>
<row>
- <entry>_stroke_color</entry><entry>The outline of the circle that is
- being drawn</entry><entry>black</entry>
+ <entry>Distance between major X ticks</entry><entry><code><phrase role="number">3</phrase> <phrase
+ role="identifier">units</phrase></code></entry><entry>Reasonably fits
+ into a plot window</entry>
</row>
<row>
- <entry>_x_functor</entry><entry>A pointer to a class that contains
- a conversion function. You will not have to worry about this, unless
- you are trying to accomplish stuff like plotting a vector of humans.
- For example:
-<programlisting>
-<phrase role="keyword">class</phrase> <phrase role="identifier">my_functor</phrase>
-<phrase role="special">{</phrase>
- <phrase role="identifier">typdef</phrase> <phrase role="keyword">double</phrase> <phrase role="identifier">result_type</phrase><phrase role="special">;</phrase>
-
- <phrase role="keyword">double</phrase> <phrase role="identifier">convert</phrase><phrase role="special">(</phrase><phrase role="keyword">const</phrase> <phrase role="identifier">human</phrase><phrase role="special">&</phrase> <phrase role="identifier">_hum</phrase><phrase role="special">)</phrase>
- <phrase role="special">{</phrase>
- <phrase role="keyword">return</phrase> <phrase role="identifier">_hum</phrase><phrase role="special">.</phrase><phrase role="identifier">get_age</phrase><phrase role="special">();</phrase>
- <phrase role="special">}</phrase>
-<phrase role="special">}</phrase>
-
-<phrase role="comment">// snip
-</phrase>
-<phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase> <phrase role="identifier">_x_functor</phrase> <phrase role="special">=</phrase> <phrase role="identifier">my_functor</phrase><phrase role="special">());</phrase>
-</programlisting>
- </entry><entry><code><phrase role="identifier">null</phrase></code></entry>
+ <entry>Font size of the legend title</entry><entry>12</entry><entry>Reasonable
+ when paired with the image size</entry>
+ </row>
+ <row>
+ <entry>Font size of the X Label</entry><entry>12</entry><entry>Reasonable
+ when paired with the image size</entry>
+ </row>
+ <row>
+ <entry>Font size of the title</entry><entry>30</entry><entry>Makes
+ the title stand out</entry>
+ </row>
+ <row>
+ <entry>Grid lines</entry><entry><code><phrase role="identifier">All</phrase> <phrase
+ role="identifier">off</phrase></code></entry><entry>Grid lines are
+ a user's personal choice, so I default with the simpler model</entry>
+ </row>
+ <row>
+ <entry>Image background</entry><entry>white</entry><entry>K.I.S.S.
+ Coloring will be highly dependent on user needs.</entry>
+ </row>
+ <row>
+ <entry>Image size</entry><entry><code><phrase role="number">500</phrase> <phrase
+ role="identifier">by</phrase> <phrase role="number">350</phrase></code></entry><entry>Details
+ discernable. The image is easily viewable by those using 800x600 monitors</entry>
+ </row>
+ <row>
+ <entry>Legend</entry><entry><code><phrase role="identifier">Off</phrase></code></entry><entry>The
+ goal of the defaults is to provide the cleanest possible plot as a
+ default. Excluding the legend meets this goal. If there is a public
+ outcry, I can change this.</entry>
+ </row>
+ <row>
+ <entry>Legend background</entry><entry>white</entry><entry>K.I.S.S.
+ Coloring will be highly dependent on user needs</entry>
+ </row>
+ <row>
+ <entry>Major tick length</entry><entry>20 pixels</entry><entry>Tasteful
+ default when paired with the window size. This also makes the major
+ ticks easily distinguishable from the minor ticks</entry>
+ </row>
+ <row>
+ <entry>Major tick width</entry><entry>2 pixels</entry><entry>Major
+ ticks are more obvious than minor ticks</entry>
+ </row>
+ <row>
+ <entry>Minor tick length</entry><entry>10 pixels</entry><entry>Tasteful
+ default when compared with the size of the grid. This makes the minor
+ ticks less obvious than the major ticks</entry>
+ </row>
+ <row>
+ <entry>Minor tick width</entry><entry>1 pixel</entry><entry>This makes
+ the minor tick less obvious than the major ticks</entry>
+ </row>
+ <row>
+ <entry>Number of minor X ticks between each major X tick</entry><entry>2</entry><entry>This
+ allows the minor ticks to appear on the integers</entry>
+ </row>
+ <row>
+ <entry>Plot Window</entry><entry><code><phrase role="identifier">Off</phrase></code></entry><entry>Initially
+ off because it is the simplest case. I will change this if there is
+ an outcry</entry>
+ </row>
+ <row>
+ <entry>Plot window background</entry><entry>white</entry><entry>K.I.S.S.
+ Coloring will be highly dependent on user needs</entry>
+ </row>
+ <row>
+ <entry>Title</entry><entry>On, <code><phrase role="string">"Plot
+ of data"</phrase></code></entry><entry>The title is on because
+ this is one of the most basic elements of a graph. The title is set
+ to a default because when <code><phrase role="identifier">title_on</phrase> <phrase
+ role="special">==</phrase> <phrase role="keyword">true</phrase></code>,
+ something should display</entry>
+ </row>
+ <row>
+ <entry>Title size</entry><entry><code><phrase role="number">30</phrase></code></entry><entry>This
+ is clearly visible in a variety of image sizes</entry>
+ </row>
+ <row>
+ <entry>X Axis Label</entry><entry><code><phrase role="string">"X
+ Axis"</phrase></code>, Off</entry><entry>"X Axis" is
+ the label because something should display were the user to turn on
+ the X axis label without setting text, and this is the most informative</entry>
+ </row>
+ <row>
+ <entry>X Axis Label Size</entry><entry><code><phrase role="number">12</phrase></code></entry><entry>This
+ is a reasonable size at the default image size</entry>
+ </row>
+ <row>
+ <entry>X Grid (Major and Minor)</entry><entry>Off</entry><entry>Turned
+ off in the interest of providing simple, clean plots</entry>
+ </row>
+ <row>
+ <entry>X Range</entry><entry><code><phrase role="special">(-</phrase><phrase
+ role="number">10</phrase><phrase role="special">,</phrase> <phrase
+ role="number">10</phrase><phrase role="special">)</phrase></code></entry><entry>Traditional
+ plot viewport</entry>
+ </row>
+ <row>
+ <entry>Y Axis Label</entry><entry><code><phrase role="string">"Y
+ Axis"</phrase></code>, Off</entry><entry>"Y Axis" is
+ the label because something should display were the user to turn on
+ the X axis label without setting text, and this is the most informative</entry>
+ </row>
+ <row>
+ <entry>Y Axis Label Size</entry><entry><code><phrase role="number">12</phrase></code></entry><entry>This
+ is a reasonable size at the default image size</entry>
+ </row>
+ <row>
+ <entry>Y Grid (Major and Minor)</entry><entry>Off</entry><entry>Turned
+ off in the interest of providing simple, clean plots</entry>
+ </row>
+ <row>
+ <entry>Y Range</entry><entry><code><phrase role="special">(-</phrase><phrase
+ role="number">10</phrase><phrase role="special">,</phrase> <phrase
+ role="number">10</phrase><phrase role="special">)</phrase></code></entry><entry>Traditional
+ plot viewport</entry>
</row>
</tbody>
</tgroup>
</informaltable>
- <para>
- Here are some examples of correct uses:
- </para>
- <anchor id="svg_plot.tutorial.plot_function.using_fill_and_stroke_colors" />
- <bridgehead renderas="sect3">
- Using fill and stroke colors
- </bridgehead>
- <para>
-
-<programlisting>
-<phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase> <phrase role="identifier">_fill_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="identifier">red</phrase><phrase role="special">),</phrase> <phrase role="identifier">_stroke_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="identifier">black</phrase><phrase role="special">));</phrase>
-</programlisting>
- </para>
- <para>
- This has the same effect as the following:
- </para>
- <para>
-
-<programlisting>
-<phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase> <phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="identifier">red</phrase><phrase role="special">),</phrase> <phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="identifier">black</phrase><phrase role="special">));</phrase>
-</programlisting>
- </para>
- <para>
- and also the same effect as:
-<programlisting>
-<phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase> <phrase role="identifier">_stroke_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="identifier">black</phrase><phrase role="special">),</phrase> <phrase role="identifier">_fill_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="identifier">red</phrase><phrase role="special">));</phrase>
-</programlisting>
- </para>
- <para>
- Since _fill_color is a deduced parameter, when two svg_colors are used in
- the same function call, they are always inferred in the following order:
- (fill, stroke).
- </para>
- <anchor id="svg_plot.tutorial.plot_function.using_all_parameters" />
- <bridgehead renderas="sect3">
- Using all parameters
- </bridgehead>
- <para>
-
-<programlisting>
-<phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase>
- <phrase role="identifier">_fill_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="identifier">red</phrase><phrase role="special">),</phrase>
- <phrase role="identifier">_stroke_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">svg_color</phrase><phrase role="special">(</phrase><phrase role="identifier">black</phrase><phrase role="special">),</phrase>
- <phrase role="identifier">_x_functor</phrase> <phrase role="special">=</phrase> <phrase role="identifier">my_functor</phrase><phrase role="special">());</phrase>
-</programlisting>
- </para>
</section>
</section>
<section id="svg_plot.svg_interface">
@@ -689,6 +1240,53 @@
default image size is (400, 400)</entry>
</row>
<row>
+ <entry><code><phrase role="identifier">g_element</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">add_g_element</phrase><phrase role="special">()</phrase></code></entry><entry>Adds
+ a g_element at the root of the document tree. Acts as a <code><phrase
+ role="identifier">push_back</phrase><phrase role="special">()</phrase></code></entry><entry>Returns
+ the <code><phrase role="identifier">g_element</phrase></code> that is
+ pushed back. This allows you to do something like the following: <code><phrase
+ role="identifier">image</phrase><phrase role="special">.</phrase><phrase
+ role="identifier">add_g_element</phrase><phrase role="special">().</phrase><phrase
+ role="identifier">line</phrase><phrase role="special">(/**/).</phrase><phrase
+ role="identifier">line</phrase><phrase role="special">(/**/).</phrase><phrase
+ role="identifier">rect</phrase><phrase role="special">(/**/);</phrase> </code>
+ Which adds two lines and a rectangle to the g_element that was just created.</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">circle</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">double</phrase> <phrase role="identifier">x</phrase><phrase
+ role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
+ role="identifier">y</phrase><phrase role="special">,</phrase> <phrase
+ role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase> <phrase
+ role="identifier">radius</phrase> <phrase role="special">=</phrase> <phrase
+ role="number">5</phrase><phrase role="special">)</phrase></code></entry><entry>Adds
+ a point at (x,y) in the root level of the document</entry><entry>If the
+ user is calling the circle method, odds are they would prefer a real
+ circle instead of a degenerate circle (a point). 5 is as good a default
+ as any other, and the user does not likely want a point if they are making
+ this call.</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">g_element</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">get_g_element</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Gets
+ the g_element at the index specified</entry><entry>Gives a runtime error
+ if you specify an index that does not contain a <code><phrase role="identifier">g_element</phrase></code>.
+ I am considering providing an iterator interface to access these elements.</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase> <phrase
+ role="identifier">get_x_size</phrase><phrase role="special">()</phrase></code></entry><entry>Returns
+ the width of the image</entry><entry></entry>
+ </row>
+ <row>
+ <entry><code><phrase role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase> <phrase
+ role="identifier">get_y_size</phrase><phrase role="special">()</phrase></code></entry><entry>Returns
+ the height of the image</entry><entry></entry>
+ </row>
+ <row>
<entry><code><phrase role="identifier">svg</phrase><phrase role="special">&</phrase> <phrase
role="identifier">image_size</phrase><phrase role="special">(</phrase><phrase
role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
@@ -698,13 +1296,51 @@
</row>
<row>
<entry><code><phrase role="identifier">svg</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">get_x_size</phrase><phrase role="special">()</phrase></code></entry><entry>Returns
- the width of the image</entry><entry></entry>
+ role="identifier">line</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">double</phrase> <phrase role="identifier">x1</phrase><phrase
+ role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
+ role="identifier">y1</phrase><phrase role="special">,</phrase> <phrase
+ role="keyword">double</phrase> <phrase role="identifier">x2</phrase><phrase
+ role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
+ role="identifier">y2</phrase><phrase role="special">)</phrase></code></entry><entry>Adds
+ a line from (x1,y1) to (x2,y2) in the root level of the document</entry><entry></entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">path_element</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">path</phrase><phrase role="special">()</phrase></code></entry><entry>Pushes
+ a <code><phrase role="identifier">path_element</phrase></code> to the
+ back of the tree and returns a reference to it. This allows you to do
+ the following:
+<programlisting>
+<phrase role="identifier">path_element</phrase><phrase role="special">&</phrase> <phrase role="identifier">my_path</phrase> <phrase role="special">=</phrase> <phrase role="identifier">image</phrase><phrase role="special">.</phrase><phrase role="identifier">path</phrase><phrase role="special">();</phrase>
+
+<phrase role="identifier">my_path</phrase><phrase role="special">.</phrase><phrase role="identifier">M</phrase><phrase role="special">(</phrase><phrase role="number">3</phrase><phrase role="special">,</phrase> <phrase role="number">3</phrase><phrase role="special">).</phrase><phrase role="identifier">l</phrase><phrase role="special">(</phrase><phrase role="number">150</phrase><phrase role="special">,</phrase> <phrase role="number">150</phrase><phrase role="special">);</phrase>
+</programlisting>
+ I'm open to suggestions for how to improve this process. </entry>
</row>
<row>
<entry><code><phrase role="identifier">svg</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">get_y_size</phrase><phrase role="special">()</phrase></code></entry><entry>Returns
- the height of the image</entry><entry></entry>
+ role="identifier">rect</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">double</phrase> <phrase role="identifier">x1</phrase><phrase
+ role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
+ role="identifier">y1</phrase><phrase role="special">,</phrase> <phrase
+ role="keyword">double</phrase> <phrase role="identifier">width</phrase><phrase
+ role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
+ role="identifier">height</phrase><phrase role="special">)</phrase></code></entry><entry>Adds
+ a rectangle at point (x1, y1) that has width <code><phrase role="identifier">width</phrase></code>
+ and height <code><phrase role="identifier">height</phrase></code></entry><entry></entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">text</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">double</phrase> <phrase role="identifier">x</phrase><phrase
+ role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
+ role="identifier">y</phrase><phrase role="special">,</phrase> <phrase
+ role="identifier">std</phrase><phrase role="special">::</phrase><phrase
+ role="identifier">string</phrase> <phrase role="identifier">text</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Adds text <code><phrase
+ role="identifier">text</phrase></code> at (x,y) in the root level of
+ the document</entry><entry></entry>
</row>
<row>
<entry><code><phrase role="identifier">svg</phrase><phrase role="special">&</phrase> <phrase
@@ -727,96 +1363,480 @@
role="identifier">ostream</phrase><phrase role="special">&)</phrase></code></entry><entry>Writes
the document to the stream represented by the argument</entry><entry></entry>
</row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </section>
+ <section id="svg_plot.svg_1d_plot_interface">
+ <title> <code><phrase role="identifier">svg_1d_plot</phrase></code> Public Interface</title>
+ <informaltable frame="all">
+ <bridgehead renderas="sect4">
+ <phrase role="table-title">Misc</phrase>
+ </bridgehead>
+ <tgroup cols="2">
+ <thead>
<row>
- <entry><code><phrase role="identifier">svg</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">circle</phrase><phrase role="special">(</phrase><phrase
- role="keyword">double</phrase> <phrase role="identifier">x</phrase><phrase
- role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
- role="identifier">y</phrase><phrase role="special">,</phrase> <phrase
- role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase> <phrase
- role="identifier">radius</phrase> <phrase role="special">=</phrase> <phrase
- role="number">5</phrase><phrase role="special">)</phrase></code></entry><entry>Adds
- a point at (x,y) in the root level of the document</entry><entry>If the
- user is calling the circle method, odds are they would prefer a real
- circle instead of a degenerate circle (a point). 5 is as good a defaul
- as any other.</entry>
+ <entry>Signature</entry><entry>Description</entry>
</row>
+ </thead>
+ <tbody>
<row>
- <entry><code><phrase role="identifier">svg</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">line</phrase><phrase role="special">(</phrase><phrase
- role="keyword">double</phrase> <phrase role="identifier">x1</phrase><phrase
- role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
- role="identifier">y1</phrase><phrase role="special">,</phrase> <phrase
- role="keyword">double</phrase> <phrase role="identifier">x2</phrase><phrase
- role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
- role="identifier">y2</phrase><phrase role="special">)</phrase></code></entry><entry>Adds
- a line from (x1,y1) to (x2,y2) in the root level of the document</entry><entry></entry>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">()</phrase></code></entry><entry>See
+ the defaults section for further details</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">text</phrase><phrase role="special">(</phrase><phrase
- role="keyword">double</phrase> <phrase role="identifier">x</phrase><phrase
- role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
- role="identifier">y</phrase><phrase role="special">,</phrase> <phrase
- role="identifier">std</phrase><phrase role="special">::</phrase><phrase
- role="identifier">string</phrase> <phrase role="identifier">text</phrase><phrase
- role="special">)</phrase></code></entry><entry>Adds text <code><phrase
- role="identifier">text</phrase></code> at (x,y) in the root level of
- the document</entry><entry></entry>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">image_size</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
+ role="special">,</phrase> <phrase role="keyword">unsigned</phrase> <phrase
+ role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the size of the image produced, in pixels</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">rect</phrase><phrase role="special">(</phrase><phrase
- role="keyword">double</phrase> <phrase role="identifier">x1</phrase><phrase
- role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
- role="identifier">y1</phrase><phrase role="special">,</phrase> <phrase
- role="keyword">double</phrase> <phrase role="identifier">width</phrase><phrase
- role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
- role="identifier">height</phrase><phrase role="special">)</phrase></code></entry><entry>Adds
- a rectangle at point (x1, y1) that has width <code><phrase role="identifier">width</phrase></code>
- and height <code><phrase role="identifier">height</phrase></code></entry><entry></entry>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">legend_title_font_size</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the font size for
+ the legend title</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">clip_path</phrase><phrase role="special">(</phrase><phrase
- role="keyword">const</phrase> <phrase role="identifier">rect_element</phrase><phrase
- role="special">&,</phrase> <phrase role="identifier">g_element</phrase><phrase
- role="special">&,</phrase> <phrase role="keyword">const</phrase> <phrase
- role="identifier">std</phrase><phrase role="special">::</phrase><phrase
- role="identifier">string</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">id</phrase><phrase role="special">)</phrase></code></entry><entry>Prevents
- the g_element in the argument from drawing outside of the rectangle in
- the argument. The string is provided to identify the clip.</entry><entry>Currently
- unsupported</entry>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">title</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">std</phrase><phrase
+ role="special">::</phrase><phrase role="identifier">string</phrase><phrase
+ role="special">&)</phrase></code></entry><entry>Sets the string to
+ be used for the title</entry>
</row>
<row>
- <entry><code><phrase role="identifier">g_element</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">add_g_element</phrase><phrase role="special">()</phrase></code></entry><entry>Adds
- a g_element at the root of the document tree. Acts as a <code><phrase
- role="identifier">push_back</phrase><phrase role="special">()</phrase></code></entry><entry>Returns
- the <code><phrase role="identifier">g_element</phrase></code> that is
- pushed back. This allows you to do something like the following: <code><phrase
- role="identifier">image</phrase><phrase role="special">.</phrase><phrase
- role="identifier">add_g_element</phrase><phrase role="special">().</phrase><phrase
- role="identifier">line</phrase><phrase role="special">(/**/).</phrase><phrase
- role="identifier">line</phrase><phrase role="special">(/**/).</phrase><phrase
- role="identifier">rect</phrase><phrase role="special">(/**/);</phrase> </code>
- Which adds two lines and a rectangle to the g_element that was just created.</entry>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">title_font_size</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the font size for
+ the title</entry>
</row>
<row>
- <entry><code><phrase role="identifier">g_element</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">get_g_element</phrase><phrase role="special">(</phrase><phrase
- role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Gets
- the g_element at the index specified</entry><entry>Gives a runtime error
- if you specify an index that does not contain a <code><phrase role="identifier">g_element</phrase></code>.
- This will be addressed</entry>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">write</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">std</phrase><phrase
+ role="special">::</phrase><phrase role="identifier">string</phrase><phrase
+ role="special">&)</phrase></code></entry><entry>Writes the plot to
+ the file passed as a parameter</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">write</phrase><phrase role="special">(</phrase><phrase
+ role="identifier">ostream</phrase><phrase role="special">&)</phrase></code></entry><entry>Writes
+ the plot to a stream passed as a parameter</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <informaltable frame="all">
+ <bridgehead renderas="sect4">
+ <phrase role="table-title">Commands</phrase>
+ </bridgehead>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Signature</entry><entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">axis_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ whether the axis is on or off</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">legend_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ whether the legend is on or off</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">plot_window_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ whether the plot will be displayed in its own window, or will be "full
+ screen" in the image</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">title_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Determines
+ whether or not the image title is displayed</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_axis_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Determines
+ whether or not the X axis is displayed</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_label_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ whether or not the x axis label will show</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_labels_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>sets
+ whether or not the major ticks will be labelled on the x axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_grid_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Determines
+ whether or not the major grid on the X axis will be displayed</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_minor_grid_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Determines
+ whether or not the minor grid on the X axis will be displayed</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_axis_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Determines
+ whether or not the Y axis is displayed</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <informaltable frame="all">
+ <bridgehead renderas="sect4">
+ <phrase role="table-title">Color Information</phrase>
+ </bridgehead>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Signature</entry><entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">background_border_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Set the background border
+ color for the legend as <code><phrase role="identifier">col</phrase></code>,
+ an RGB color</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">background_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Set the background color
+ for the whole image</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">legend_background_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Set the background color
+ for the legend as <code><phrase role="identifier">col</phrase></code>,
+ an RGB color</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">legend_border_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Set the border color for
+ the legend as <code><phrase role="identifier">col</phrase></code>, an
+ RGB color</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">plot_background_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Set the color of the plot
+ area. Note: this only goes into effect if plot_area(true) has been called</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">title_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Set the title color</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_axis_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the color of the
+ lines that form the axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_label_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the color of the
+ labels that go along the X axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_grid_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the color of the
+ grid that runs perpindicular to the X axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_tick_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the color of the
+ major ticks of the x-axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_minor_grid_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the color of the
+ minor grid of the x-axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_minor_tick_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the color of the
+ minor ticks of the x-axis</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <informaltable frame="all">
+ <bridgehead renderas="sect4">
+ <phrase role="table-title">Axis Information</phrase>
+ </bridgehead>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Signature</entry><entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_axis_width</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the stroke width
+ of the x-axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_label</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">std</phrase><phrase
+ role="special">::</phrase><phrase role="identifier">string</phrase><phrase
+ role="special">&)</phrase></code></entry><entry>Sets the label of
+ the x-axis. This does not guarantee that it will be shown. You must run
+ <code><phrase role="identifier">x_label_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">true</phrase><phrase role="special">)</phrase></code>
+ for that guarantee</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_tick</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">double</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the distance (in Cartesian units) between ticks on the x-axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_tick_length</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the length (in pixels) of the x-axis major ticks</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_tick_width</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the width (in pixels)
+ of the major ticks on the x-axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_tick_length</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the length (in pixels) of the x-axis minor tick lengths</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_minor_tick_width</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the width (in pixels)
+ of the minor ticks on the x-axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_num_minor_ticks</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the number of minor ticks between each major tick</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_1d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_range</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">double</phrase> <phrase role="identifier">x1</phrase><phrase
+ role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
+ role="identifier">x2</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the scale of the x axis from x1 to x2. Throws an exception if x2<=x1
+ </entry>
</row>
</tbody>
</tgroup>
</informaltable>
+ <section id="svg_plot.svg_1d_plot_interface.1d_plot_function">
+ <title> The <code><phrase role="identifier">plot</phrase><phrase role="special">()</phrase></code>
+ Method</title>
+ <para>
+ The <code><phrase role="identifier">plot</phrase><phrase role="special">()</phrase></code>
+ method is defined using Boost.Parameter. As such, it supports a few extra
+ named parameters, as well as a deduced parameter.
+ </para>
+ <informaltable frame="all">
+ <bridgehead renderas="sect4">
+ <phrase role="table-title">Required parameter</phrase>
+ </bridgehead>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>ID</entry><entry>Type (* is a wildcard)</entry><entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>_container</entry><entry>*</entry><entry>Any object that can
+ return an iterator with begin() and end()</entry>
+ </row>
+ <row>
+ <entry>_title</entry><entry><code><phrase role="identifier">std</phrase><phrase
+ role="special">::</phrase><phrase role="identifier">string</phrase></code></entry><entry>The
+ name of this series</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <informaltable frame="all">
+ <bridgehead renderas="sect4">
+ <phrase role="table-title">Deduced parameter</phrase>
+ </bridgehead>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>ID</entry><entry>Type</entry><entry>Description</entry><entry>Default</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>_fill_color</entry><entry><code><phrase role="identifier">svg_color</phrase></code></entry><entry>This
+ is the color that shows up inside of the circle that is being drawn</entry><entry>white</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <informaltable frame="all">
+ <bridgehead renderas="sect4">
+ <phrase role="table-title">Optional Parameters</phrase>
+ </bridgehead>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>ID</entry><entry>Type</entry><entry>Description</entry><entry>Default</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>_stroke_color</entry><entry><code><phrase role="identifier">svg_color</phrase></code></entry><entry>The
+ outline of the circle that is being drawn</entry><entry>black</entry>
+ </row>
+ <row>
+ <entry>_point_style</entry><entry><code><phrase role="identifier">point_shape</phrase></code></entry><entry>This
+ is the shape of the point. Options currently are between <literal>none</literal>,
+ <literal>circle</literal>, and <literal>square</literal>.</entry><entry>circle</entry>
+ </row>
+ <row>
+ <entry>_size</entry><entry><code><phrase role="keyword">unsigned</phrase> <phrase
+ role="keyword">int</phrase></code></entry><entry>This is the height/width
+ of the circle and square.</entry><entry>10</entry>
+ </row>
+ <row>
+ <entry>_functor</entry><entry>*</entry><entry>A class or that contains
+ a conversion function. You will not have to worry about this, unless
+ you are trying to accomplish stuff like plotting a vector of humans.
+ For example:
+<programlisting>
+<phrase role="keyword">class</phrase> <phrase role="identifier">my_functor</phrase>
+<phrase role="special">{</phrase>
+ <phrase role="identifier">typdef</phrase> <phrase role="keyword">double</phrase> <phrase role="identifier">result_type</phrase><phrase role="special">;</phrase>
+
+ <phrase role="keyword">double</phrase> <phrase role="keyword">operator</phrase><phrase role="special">()(</phrase><phrase role="keyword">const</phrase> <phrase role="identifier">human</phrase><phrase role="special">&</phrase> <phrase role="identifier">_hum</phrase><phrase role="special">)</phrase>
+ <phrase role="special">{</phrase>
+ <phrase role="keyword">return</phrase> <phrase role="special">(</phrase><phrase role="keyword">double</phrase><phrase role="special">)(</phrase><phrase role="identifier">_hum</phrase><phrase role="special">.</phrase><phrase role="identifier">age</phrase><phrase role="special">());</phrase>
+ <phrase role="special">}</phrase>
+<phrase role="special">}</phrase>
+
+<phrase role="comment">// snip
+</phrase>
+<phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase> <phrase role="identifier">_functor</phrase> <phrase role="special">=</phrase> <phrase role="identifier">my_functor</phrase><phrase role="special">());</phrase>
+</programlisting>
+ </entry><entry> <code><phrase role="identifier">boost_default_convert</phrase></code>
+ is sufficient in all cases where the data stored in the container can
+ be directly casted to a double</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ Here are some examples of correct uses:
+ </para>
+ <anchor id="svg_plot.svg_1d_plot_interface.1d_plot_function.using_fill_and_stroke_colors"
+ />
+ <bridgehead renderas="sect3">
+ Using fill and stroke colors
+ </bridgehead>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase>
+<phrase role="identifier">_fill_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">red</phrase><phrase role="special">,</phrase>
+<phrase role="identifier">_stroke_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">black</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <para>
+ This has the same effect as the following:
+ </para>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase> <phrase role="identifier">red</phrase><phrase role="special">,</phrase> <phrase role="identifier">black</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <para>
+ and also the same effect as:
+ </para>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase>
+<phrase role="identifier">_stroke_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">black</phrase><phrase role="special">,</phrase>
+<phrase role="identifier">_fill_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">red</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <para>
+ Since _fill_color is a deduced parameter, when two svg_colors are used in
+ the same function call, they are always inferred in the following order:
+ (fill, stroke).
+ </para>
+ </section>
</section>
- <section id="svg_plot.svg_graph_interface">
- <title> svg_graph Public Interface</title>
+ <section id="svg_plot.svg_2d_plot_interface">
+ <title> <code><phrase role="identifier">svg_2d_plot</phrase></code> Public Interface</title>
<informaltable frame="all">
<bridgehead renderas="sect4">
<phrase role="table-title">Misc</phrase>
@@ -829,63 +1849,35 @@
</thead>
<tbody>
<row>
- <entry>
-<programlisting>
-<phrase role="keyword">void</phrase> <phrase role="identifier">plot_range</phrase><phrase role="special">(</phrase><phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">vector</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">>::</phrase><phrase role="identifier">const_iterator</phrase> <phrase role="identifier">begin</phrase><phrase role="special">,</phrase>
- <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">vector</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">>::</phrase><phrase role="identifier">const_iterator</phrase> <phrase role="identifier">end</phrase><phrase role="special">,</phrase>
- <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">string</phrase> <phrase role="identifier">text</phrase><phrase role="special">)</phrase>
-</programlisting>
- </entry><entry>Plots a vector<double> from begin() to end(). It
- adds the text <code><phrase role="identifier">text</phrase></code> to
- the legend. If you are looking for the generic version, you can find
- it below.</entry>
- </row>
- <row>
- <entry>
-<programlisting>
-<phrase role="keyword">void</phrase> <phrase role="identifier">plot_range</phrase><phrase role="special">(</phrase><phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">vector</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">>::</phrase><phrase role="identifier">const_iterator</phrase> <phrase role="identifier">begin</phrase><phrase role="special">,</phrase>
- <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">vector</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">>::</phrase><phrase role="identifier">const_iterator</phrase> <phrase role="identifier">end</phrase><phrase role="special">,</phrase>
- <phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">string</phrase> <phrase role="identifier">text</phrase><phrase role="special">,</phrase>
- <phrase role="identifier">svg_color_constant</phrase> <phrase role="identifier">col</phrase><phrase role="special">)</phrase>
-</programlisting>
- </entry><entry>Plots a vector<double> from begin() to end(). It
- adds the text <code><phrase role="identifier">text</phrase></code> to
- the legend. The point color for this series is going to be <code><phrase
- role="identifier">col</phrase></code>. If you are looking for the generic
- version, you can find it below.</entry>
- </row>
- <row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">(</phrase><phrase
- role="keyword">const</phrase> <phrase role="identifier">std</phrase><phrase
- role="special">::</phrase><phrase role="identifier">string</phrase><phrase
- role="special">&)</phrase></code></entry><entry>Constructor. The
- string represents a filename</entry>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">()</phrase></code></entry><entry>See
+ the defaults section for further details</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_image_size</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">image_size</phrase><phrase role="special">(</phrase><phrase
role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
role="special">,</phrase> <phrase role="keyword">unsigned</phrase> <phrase
role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
the size of the image produced, in pixels</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_title</phrase><phrase role="special">(</phrase><phrase
- role="identifier">std</phrase><phrase role="special">::</phrase><phrase
- role="identifier">string</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
- the string to be used for the title</entry>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">title</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">std</phrase><phrase
+ role="special">::</phrase><phrase role="identifier">string</phrase><phrase
+ role="special">&)</phrase></code></entry><entry>Sets the string to
+ be used for the title</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_title_font_size</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">title_font_size</phrase><phrase role="special">(</phrase><phrase
role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
role="special">)</phrase></code></entry><entry>Sets the font size for
the title</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_legend_title_font_size</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">legend_title_font_size</phrase><phrase role="special">(</phrase><phrase
role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
role="special">)</phrase></code></entry><entry>Sets the font size for
the legend title</entry>
@@ -905,36 +1897,78 @@
</thead>
<tbody>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_axis</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">axis_on</phrase><phrase role="special">(</phrase><phrase
role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
whether the axis is on or off</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_legend</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">legend_on</phrase><phrase role="special">(</phrase><phrase
role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
whether the legend is on or off</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_plot_window</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">plot_window_on</phrase><phrase role="special">(</phrase><phrase
role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
whether the plot will be displayed in its own window, or will be "full
screen" in the image</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_label</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">title_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Determines
+ whether or not the image title is displayed</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_label_on</phrase><phrase role="special">(</phrase><phrase
role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
- whether or not the x axis label will show</entry>
+ whether or not the X axis label will show</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_grid_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Determines
+ whether or not the major grid on the X axis will be displayed</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_major_labels</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_labels_on</phrase><phrase role="special">(</phrase><phrase
role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>sets
whether or not the major ticks will be labelled on the x axis</entry>
</row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_minor_grid_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Determines
+ whether or not the minor grid on the X axis will be displayed</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_label_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ whether or not the Y axis label will show</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_major_grid_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Determines
+ whether or not the major grid on the Y axis will be displayed</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_major_labels_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>sets
+ whether or not the major ticks will be labelled on the Y axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_minor_grid_on</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">bool</phrase><phrase role="special">)</phrase></code></entry><entry>Determines
+ whether or not the minor grid on the Y axis will be displayed</entry>
+ </row>
</tbody>
</tgroup>
</informaltable>
@@ -950,111 +1984,134 @@
</thead>
<tbody>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_title_color</phrase><phrase role="special">(</phrase><phrase
- role="identifier">svg_color_constant</phrase> <phrase role="identifier">col</phrase><phrase
- role="special">)</phrase></code></entry><entry>Set the title color</entry>
- </row>
- <row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_title_color</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">title_color</phrase><phrase role="special">(</phrase><phrase
role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
role="special">&</phrase><phrase role="identifier">col</phrase><phrase
role="special">)</phrase></code></entry><entry>Set the title color</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_background_color</phrase><phrase role="special">(</phrase><phrase
- role="identifier">svg_color_constant</phrase> <phrase role="identifier">col</phrase><phrase
- role="special">)</phrase></code></entry><entry>Set the background color
- for the whole image</entry>
- </row>
- <row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_background_color</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">background_color</phrase><phrase role="special">(</phrase><phrase
role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
role="special">&</phrase><phrase role="identifier">col</phrase><phrase
role="special">)</phrase></code></entry><entry>Set the background color
for the whole image</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_legend_background_color</phrase><phrase role="special">(</phrase><phrase
- role="identifier">svg_color_constant</phrase> <phrase role="identifier">col</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">legend_background_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
role="special">)</phrase></code></entry><entry>Set the background color
for the legend as <code><phrase role="identifier">col</phrase></code>,
- a SVG Color Constant</entry>
+ an RGB color</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_legend_background_color</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">legend_border_color</phrase><phrase role="special">(</phrase><phrase
role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
role="special">&</phrase><phrase role="identifier">col</phrase><phrase
- role="special">)</phrase></code></entry><entry>Set the background color
- for the legend as <code><phrase role="identifier">col</phrase></code>,
- an RGB color</entry>
+ role="special">)</phrase></code></entry><entry>Set the border color for
+ the legend as <code><phrase role="identifier">col</phrase></code>, an
+ RGB color</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_plot_background_color</phrase><phrase role="special">(</phrase><phrase
- role="identifier">svg_color_constant</phrase> <phrase role="identifier">col</phrase><phrase
- role="special">)</phrase></code></entry><entry>Set the color of the plot
- area. Note: this only goes into effect if set_plot_area(true) has been
- called</entry>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">background_border_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Set the background border
+ color for the legend as <code><phrase role="identifier">col</phrase></code>,
+ an RGB color</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_plot_background_color</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">plot_background_color</phrase><phrase role="special">(</phrase><phrase
role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
role="special">&</phrase><phrase role="identifier">col</phrase><phrase
role="special">)</phrase></code></entry><entry>Set the color of the plot
- area. Note: this only goes into effect if set_plot_area(true) has been
- called</entry>
+ area. Note: this only goes into effect if plot_area(true) has been called</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_axis_color</phrase><phrase role="special">(</phrase><phrase
- role="identifier">svg_color_constant</phrase> <phrase role="identifier">col</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_axis_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
role="special">)</phrase></code></entry><entry>Sets the color of the
lines that form the axis</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_axis_color</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_label_color</phrase><phrase role="special">(</phrase><phrase
role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
role="special">&</phrase><phrase role="identifier">col</phrase><phrase
role="special">)</phrase></code></entry><entry>Sets the color of the
- lines that form the axis</entry>
+ labels that go along the X axis</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_major_tick_color</phrase><phrase role="special">(</phrase><phrase
- role="identifier">svg_color_constant</phrase> <phrase role="identifier">col</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_tick_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
role="special">)</phrase></code></entry><entry>Sets the color of the
major ticks of the x-axis</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_major_tick_color</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_grid_color</phrase><phrase role="special">(</phrase><phrase
role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
role="special">&</phrase><phrase role="identifier">col</phrase><phrase
role="special">)</phrase></code></entry><entry>Sets the color of the
- major ticks of the x-axis</entry>
+ grid that runs perpindicular to the X axis</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_minor_tick_color</phrase><phrase role="special">(</phrase><phrase
- role="identifier">svg_color_constant</phrase> <phrase role="identifier">col</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_minor_tick_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
role="special">)</phrase></code></entry><entry>Sets the color of the
minor ticks of the x-axis</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_minor_tick_color</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_axis_color</phrase><phrase role="special">(</phrase><phrase
role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
role="special">&</phrase><phrase role="identifier">col</phrase><phrase
role="special">)</phrase></code></entry><entry>Sets the color of the
- minor ticks of the x-axis</entry>
+ lines that form the Y axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_label_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the color of the
+ labels that go along the X axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_major_tick_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the color of the
+ major ticks of the Y-axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_major_grid_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the color of the
+ grid that runs perpindicular to the Y axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_minor_tick_color</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">svg_color</phrase> <phrase
+ role="special">&</phrase><phrase role="identifier">col</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the color of the
+ minor ticks of the Y-axis</entry>
</row>
</tbody>
</tgroup>
@@ -1071,72 +2128,344 @@
</thead>
<tbody>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_scale</phrase><phrase role="special">(</phrase><phrase
- role="keyword">double</phrase> <phrase role="identifier">x1</phrase><phrase
- role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
- role="identifier">x2</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
- the scale of the x axis from x1 to x2. Throws an exception if x2<=x1
- </entry>
- </row>
- <row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_axis_width</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_axis_width</phrase><phrase role="special">(</phrase><phrase
role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
role="special">)</phrase></code></entry><entry>Sets the stroke width
of the x-axis</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_major_tick</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_label</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">std</phrase><phrase
+ role="special">::</phrase><phrase role="identifier">string</phrase><phrase
+ role="special">&)</phrase></code></entry><entry>Sets the label of
+ the x-axis. This does not guarantee that it will be shown. You must run
+ <code><phrase role="identifier">x_label</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">true</phrase><phrase role="special">)</phrase></code>
+ for that guarantee</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_tick</phrase><phrase role="special">(</phrase><phrase
role="keyword">double</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
the distance (in Cartesian units) between ticks on the x-axis</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_major_tick_length</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_tick_length</phrase><phrase role="special">(</phrase><phrase
role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
the length (in pixels) of the x-axis major ticks</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_minor_tick</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_tick_width</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the width (in pixels)
+ of the major ticks on the x-axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_minor_tick</phrase><phrase role="special">(</phrase><phrase
role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
role="special">)</phrase></code></entry><entry>Sets the length (in pixels)
of the x-axis minor ticks</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_num_minor_ticks</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_major_tick_length</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the length (in pixels) of the x-axis minor tick lengths</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_minor_tick_width</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the width (in pixels)
+ of the minor ticks on the x-axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_num_minor_ticks</phrase><phrase role="special">(</phrase><phrase
role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
the number of minor ticks between each major tick</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_label_text</phrase><phrase role="special">(</phrase><phrase
- role="identifier">std</phrase><phrase role="special">::</phrase><phrase
- role="identifier">string</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
- the label of the x-axis. This does not guarantee that it will be shown.
- You must run <code><phrase role="identifier">set_x_label</phrase><phrase
- role="special">(</phrase><phrase role="keyword">true</phrase><phrase
- role="special">)</phrase></code> for that guarantee</entry>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">x_range</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">double</phrase> <phrase role="identifier">x1</phrase><phrase
+ role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
+ role="identifier">x2</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the scale of the x axis from x1 to x2. Throws an exception if x2<=x1
+ </entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_axis_width</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the stroke width
+ of the x-axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_label</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">const</phrase> <phrase role="identifier">std</phrase><phrase
+ role="special">::</phrase><phrase role="identifier">string</phrase><phrase
+ role="special">&)</phrase></code></entry><entry>Sets the label of
+ the x-axis. This does not guarantee that it will be shown. You must run
+ <code><phrase role="identifier">x_label</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">true</phrase><phrase role="special">)</phrase></code>
+ for that guarantee</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_major_tick</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">double</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the distance (in Cartesian units) between ticks on the Y axis</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_major_tick_width</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_major_tick_length</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the length (in pixels) of the Y axis major ticks</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_major_tick_width</phrase><phrase role="special">(</phrase><phrase
role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
role="special">)</phrase></code></entry><entry>Sets the width (in pixels)
- of the major ticks on the x-axis</entry>
+ of the major ticks on the Y axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_minor_tick</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
+ role="special">)</phrase></code></entry><entry>Sets the length (in pixels)
+ of the Y axis minor ticks</entry>
</row>
<row>
- <entry><code><phrase role="identifier">svg_plot</phrase><phrase role="special">&</phrase> <phrase
- role="identifier">set_x_minor_tick_width</phrase><phrase role="special">(</phrase><phrase
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_major_tick_length</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the length (in pixels) of the Y axis minor tick lengths</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_minor_tick_width</phrase><phrase role="special">(</phrase><phrase
role="keyword">unsigned</phrase> <phrase role="keyword">int</phrase><phrase
role="special">)</phrase></code></entry><entry>Sets the width (in pixels)
- of the minor ticks on the x-axis</entry>
+ of the minor ticks on the Y axis</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_num_minor_ticks</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">int</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the number of minor ticks between each major tick</entry>
+ </row>
+ <row>
+ <entry><code><phrase role="identifier">svg_2d_plot</phrase><phrase role="special">&</phrase> <phrase
+ role="identifier">y_scale</phrase><phrase role="special">(</phrase><phrase
+ role="keyword">double</phrase> <phrase role="identifier">y1</phrase><phrase
+ role="special">,</phrase> <phrase role="keyword">double</phrase> <phrase
+ role="identifier">y2</phrase><phrase role="special">)</phrase></code></entry><entry>Sets
+ the scale of the Y axis from y1 to y2. Throws an exception if y2<=y1
+ </entry>
</row>
</tbody>
</tgroup>
</informaltable>
+ <para>
+ (Note: Getters omitted for now)
+ </para>
+ <section id="svg_plot.svg_2d_plot_interface.plot_function">
+ <title> The <code><phrase role="identifier">plot</phrase><phrase role="special">()</phrase></code>
+ Method</title>
+ <para>
+ The <code><phrase role="identifier">plot</phrase><phrase role="special">()</phrase></code>
+ method is defined using Boost.Parameter. As such, it supports a few extra
+ named parameters, as well as a deduced parameter.
+ </para>
+ <informaltable frame="all">
+ <bridgehead renderas="sect4">
+ <phrase role="table-title">Required parameter</phrase>
+ </bridgehead>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>ID</entry><entry>Type (* is a wildcard)</entry><entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>_container</entry><entry>*</entry><entry>Any object that can
+ return an iterator with begin() and end()</entry>
+ </row>
+ <row>
+ <entry>_title</entry><entry><code><phrase role="identifier">std</phrase><phrase
+ role="special">::</phrase><phrase role="identifier">string</phrase></code></entry><entry>The
+ name of this series</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <informaltable frame="all">
+ <bridgehead renderas="sect4">
+ <phrase role="table-title">Deduced parameter</phrase>
+ </bridgehead>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>ID</entry><entry>Type</entry><entry>Description</entry><entry>Default</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>_fill_color</entry><entry><code><phrase role="identifier">svg_color</phrase></code></entry><entry>This
+ is the color that shows up inside of the circle that is being drawn</entry><entry>white</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <informaltable frame="all">
+ <bridgehead renderas="sect4">
+ <phrase role="table-title">Optional Parameters</phrase>
+ </bridgehead>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>ID</entry><entry>Type</entry><entry>Description</entry><entry>Default</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>_line_on</entry><entry><code><phrase role="keyword">bool</phrase></code></entry><entry>
+ This determines whether or not there are lines drawn between data points.</entry><entry>false</entry>
+ </row>
+ <row>
+ <entry>_line_color</entry><entry><code><phrase role="keyword">bool</phrase></code></entry><entry>
+ This determines the color of the lines between data points </entry><entry>black
+ </entry>
+ </row>
+ <row>
+ <entry>_area_fill_color</entry><entry><code><phrase role="identifier">svg_color</phrase></code></entry><entry>Defining
+ this enables the "Fill Area Under Axis" feature. the color
+ you define will be the fill color between a line and the area under
+ the axis. This only takes effect if <code><phrase role="identifier">_line_on</phrase> <phrase
+ role="special">=</phrase> <phrase role="keyword">true</phrase></code>
+ is called.</entry>
+ </row>
+ <row>
+ <entry>_stroke_color</entry><entry><code><phrase role="identifier">svg_color</phrase></code></entry><entry>The
+ outline of the circle that is being drawn</entry><entry>black</entry>
+ </row>
+ <row>
+ <entry>_point_style</entry><entry><code><phrase role="identifier">point_shape</phrase></code></entry><entry>This
+ is the shape of the point. Options currently are between <literal>none</literal>,
+ <literal>circle</literal>, and <literal>square</literal>.</entry><entry>circle</entry>
+ </row>
+ <row>
+ <entry>_size</entry><entry><code><phrase role="keyword">unsigned</phrase> <phrase
+ role="keyword">int</phrase></code></entry><entry>This is the height/width
+ of the circle and square.</entry><entry>10</entry>
+ </row>
+ <row>
+ <entry>_functor</entry><entry>*</entry><entry>A class or that contains
+ a conversion function. You will not have to worry about this, unless
+ you are trying to accomplish stuff like plotting a vector of humans.
+ For example:
+<programlisting>
+<phrase role="keyword">class</phrase> <phrase role="identifier">my_functor</phrase>
+<phrase role="special">{</phrase>
+ <phrase role="identifier">typdef</phrase> <phrase role="identifier">pair</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">,</phrase> <phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="identifier">result_type</phrase><phrase role="special">;</phrase>
+ <phrase role="keyword">static</phrase> <phrase role="keyword">double</phrase> <phrase role="identifier">i</phrase> <phrase role="special">=</phrase> <phrase role="number">0</phrase><phrase role="special">;</phrase>
+
+ <phrase role="identifier">pair</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">,</phrase> <phrase role="keyword">double</phrase><phrase role="special">></phrase> <phrase role="keyword">operator</phrase><phrase role="special">()(</phrase><phrase role="keyword">const</phrase> <phrase role="identifier">human</phrase><phrase role="special">&</phrase> <phrase role="identifier">_hum</phrase><phrase role="special">)</phrase>
+ <phrase role="special">{</phrase>
+ <phrase role="identifier">i</phrase><phrase role="special">+=</phrase><phrase role="number">1.</phrase><phrase role="special">;</phrase>
+ <phrase role="keyword">return</phrase> <phrase role="identifier">pair</phrase><phrase role="special"><</phrase><phrase role="keyword">double</phrase><phrase role="special">,</phrase> <phrase role="keyword">double</phrase><phrase role="special">>(</phrase><phrase role="identifier">i</phrase><phrase role="special">,</phrase> <phrase role="identifier">_hum</phrase><phrase role="special">.</phrase><phrase role="identifier">age</phrase><phrase role="special">());</phrase>
+ <phrase role="special">}</phrase>
+<phrase role="special">}</phrase>
+
+<phrase role="comment">// snip
+</phrase>
+<phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_plot</phrase><phrase role="special">,</phrase> <phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase> <phrase role="identifier">_x_functor</phrase> <phrase role="special">=</phrase> <phrase role="identifier">my_functor</phrase><phrase role="special">());</phrase>
+</programlisting>
+ </entry><entry> <code><phrase role="identifier">boost_default_2d_convert</phrase></code>
+ (the default) is sufficient in all cases where the data stored in the
+ container can be directly casted to a double</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ Here are some examples of correct uses:
+ </para>
+ <anchor id="svg_plot.svg_2d_plot_interface.plot_function.using_fill_and_stroke_colors"
+ />
+ <bridgehead renderas="sect3">
+ Using fill and stroke colors
+ </bridgehead>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.(</phrase><phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase>
+<phrase role="identifier">_fill_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">red</phrase><phrase role="special">,</phrase>
+<phrase role="identifier">_stroke_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">black</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <para>
+ This has the same effect as the following:
+ </para>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase> <phrase role="identifier">red</phrase><phrase role="special">,</phrase> <phrase role="identifier">black</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <para>
+ and also the same effect as:
+ </para>
+
+<programlisting>
+<phrase role="identifier">my_plot</phrase><phrase role="special">.</phrase><phrase role="identifier">plot</phrase><phrase role="special">(</phrase><phrase role="identifier">my_data</phrase><phrase role="special">,</phrase> <phrase role="string">"Lions"</phrase><phrase role="special">,</phrase>
+<phrase role="identifier">_stroke_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">black</phrase><phrase role="special">,</phrase>
+<phrase role="identifier">_fill_color</phrase> <phrase role="special">=</phrase> <phrase role="identifier">red</phrase><phrase role="special">);</phrase>
+</programlisting>
+ <para>
+ Since _fill_color is a deduced parameter, when two svg_colors are used in
+ the same function call, they are always inferred in the following order:
+ (fill, stroke).
+ </para>
+ </section>
+ </section>
+ <section id="svg_plot.acknowledgements">
+ <title> Acknowledgements</title>
+ <para>
+ I would like to thank the following people:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <emphasis role="bold">Google</emphasis>: For offering Summer of Code, and
+ giving me the opportunity to do something I never would have done otherwise.
+ </listitem>
+ <listitem>
+ <emphasis role="bold">JoaquÃn Mª López Muñoz</emphasis>: My GSoC mentor.
+ His proofreading and advice helped shape the project into what it is today,
+ and prevented small problems from becoming major problems.
+ </listitem>
+ <listitem>
+ <emphasis role="bold">Paul Bristow</emphasis>: For showing an active interest,
+ offering literally dozens of minor and major features he'd like to see, and
+ for helping with Boost.Build.
+ </listitem>
+ <listitem>
+ <emphasis role="bold">Matias Capeletto</emphasis>: For showing an active
+ interest, and offering feature suggestions.
+ </listitem>
+ <listitem>
+ <emphasis role="bold">Sarah Braun</emphasis>: For helping me pick colors
+ for examples.
+ </listitem>
+ <listitem>
+ <emphasis role="bold">Boost Community</emphasis>: For all of the encouragement,
+ suggestions, disagreements, and patience.
+ </listitem>
+ </itemizedlist>
</section>
</article>
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_full_layout.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_full_layout.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_full_layout.cpp 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -67,7 +67,7 @@
.title_color(white);
//axis settings
- my_plot.x_major_tick(2)
+ my_plot.x_major_interval(2)
.x_major_tick_length(14)
.x_major_tick_width(1)
.x_minor_tick_length(7)
@@ -81,7 +81,7 @@
my_plot.plot(data2, "Tigers", orange);
my_plot.plot(data3, "Bears", red);
- my_plot.write("D:\\1d_complex.svg");
+ my_plot.write("./1d_complex.svg");
return 0;
}
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_simple.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_simple.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_simple.cpp 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -30,6 +30,6 @@
my_plot.plot(dan_times, "Dan", blue);
my_plot.plot(elaine_times, "Elaine", orange);
- my_plot.write("D:\\1d_simple.svg");
+ my_plot.write("./1d_simple.svg");
return 0;
}
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_x_external.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_x_external.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_x_external.cpp 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -45,6 +45,6 @@
my_plot.plot(elaine_times, "Elaine", orange);
// Write to file.
- my_plot.write("D:\\1d_x_external.svg");
+ my_plot.write("./1d_x_external.svg");
return 0;
}
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_x_grid.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_x_grid.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/1d_x_grid.cpp 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -43,6 +43,6 @@
my_plot.plot(elaine_times, "Elaine", orange);
// Write to file.
- my_plot.write("D:\\1d_x_grid.svg");
+ my_plot.write("./1d_x_grid.svg");
return 0;
}
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_area_fill.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_area_fill.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_area_fill.cpp 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -56,7 +56,7 @@
.y_major_grid_color(black);
//X axis settings.
- my_plot.x_major_tick(2)
+ my_plot.x_major_interval(2)
.x_major_tick_length(14)
.x_major_tick_width(1)
.x_minor_tick_length(7)
@@ -73,7 +73,7 @@
my_plot.plot(data1, "Sqrt(x)", _point_style = none,
_area_fill_color = red);
- my_plot.write("D:\\2d_area_fill.svg");
+ my_plot.write("./2d_area_fill.svg");
return 0;
}
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_full.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_full.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_full.cpp 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -63,7 +63,7 @@
.title_color(white);
//X axis settings.
- my_plot.x_major_tick(2)
+ my_plot.x_major_interval(2)
.x_major_tick_length(14)
.x_major_tick_width(1)
.x_minor_tick_length(7)
@@ -82,7 +82,7 @@
my_plot.plot(data3, "-1 + 2x", yellow,
_point_style = square, _size = 5);
- my_plot.write("D:\\2d_full.svg");
+ my_plot.write("./2d_full.svg");
return 0;
}
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_simple.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_simple.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_simple.cpp 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -33,6 +33,6 @@
my_plot.plot(map1, "Series 1", blue);
my_plot.plot(map2, "Series 2", orange);
- my_plot.write("D:\\simple_2d.svg");
+ my_plot.write("./simple_2d.svg");
return 0;
}
Modified: sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_y_grid.cpp
==============================================================================
--- sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_y_grid.cpp (original)
+++ sandbox/SOC/2007/visualization/libs/svg_plot/example/2d_y_grid.cpp 2007-07-30 08:03:04 EDT (Mon, 30 Jul 2007)
@@ -41,6 +41,6 @@
my_plot.plot(map1, "Series 1", blue);
my_plot.plot(map2, "Series 2", orange);
- my_plot.write("D:\\2d_y_grid.svg");
+ my_plot.write("./2d_y_grid.svg");
return 0;
}
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk