A Discrete-Event Network Simulator
API
gnuplot-aggregator.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011 Bucknell University
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author: L. Felipe Perrone (perrone@bucknell.edu)
18 *
19 * Modified by: Mitch Watrous (watrous@u.washington.edu)
20 *
21 */
22
23#ifndef GNUPLOT_AGGREGATOR_H
24#define GNUPLOT_AGGREGATOR_H
25
26#include "ns3/data-collection-object.h"
27#include "ns3/gnuplot.h"
28
29#include <map>
30#include <string>
31
32namespace ns3
33{
34
40{
41 public:
44 {
49 };
50
55 static TypeId GetTypeId();
56
68 GnuplotAggregator(const std::string& outputFileNameWithoutExtension);
69
70 ~GnuplotAggregator() override;
71
72 // Below are hooked to connectors exporting data
73 // They are not overloaded since it confuses the compiler when made
74 // into callbacks
75
85 void Write2d(std::string context, double x, double y);
86
98 void Write2dWithXErrorDelta(std::string context, double x, double y, double errorDelta);
99
111 void Write2dWithYErrorDelta(std::string context, double x, double y, double errorDelta);
112
125 void Write2dWithXYErrorDelta(std::string context,
126 double x,
127 double y,
128 double xErrorDelta,
129 double yErrorDelta);
130
131 // Methods to configure the plot
132
137 void SetTerminal(const std::string& terminal);
138
142 void SetTitle(const std::string& title);
143
148 void SetLegend(const std::string& xLegend, const std::string& yLegend);
149
153 void SetExtra(const std::string& extra);
154
158 void AppendExtra(const std::string& extra);
159
160 // Methods for datasets
161
174 void Add2dDataset(const std::string& dataset, const std::string& title);
175
182 static void Set2dDatasetDefaultExtra(const std::string& extra);
183
193 void Set2dDatasetExtra(const std::string& dataset, const std::string& extra);
194
206 void Write2dDatasetEmptyLine(const std::string& dataset);
207
214
224 void Set2dDatasetStyle(const std::string& dataset, enum Gnuplot2dDataset::Style style);
225
232
247 void Set2dDatasetErrorBars(const std::string& dataset,
248 enum Gnuplot2dDataset::ErrorBars errorBars);
249
255 void SetKeyLocation(enum KeyLocation keyLocation);
256
257 private:
260
263
265 std::string m_title;
266
268 std::string m_terminal;
269
271 std::string m_xLegend;
272
274 std::string m_yLegend;
275
278 std::string m_extra;
279
282
285
288
290 std::map<std::string, Gnuplot2dDataset> m_2dDatasetMap;
291
292}; // class GnuplotAggregator
293
294} // namespace ns3
295
296#endif // GNUPLOT_AGGREGATOR_H
Base class for data collection framework objects.
ErrorBars
Whether errorbars should be used for this dataset.
Definition: gnuplot.h:137
Style
The plotting style to use for this dataset.
Definition: gnuplot.h:122
This aggregator produces output used to make gnuplot plots.
void Write2dDatasetEmptyLine(const std::string &dataset)
Add an empty line in the data output sequence.
std::string m_title
The title.
GnuplotAggregator(const std::string &outputFileNameWithoutExtension)
void Write2dWithXErrorDelta(std::string context, double x, double y, double errorDelta)
Writes a 2D value to a 2D gnuplot dataset with error bars in the x direction.
static void Set2dDatasetDefaultExtra(const std::string &extra)
Change extra formatting style parameters for newly created objects.
Gnuplot m_gnuplot
Used to create gnuplot files.
void Write2d(std::string context, double x, double y)
Writes a 2D value to a 2D gnuplot dataset.
std::string m_graphicsFileName
The graphics file name with its extension.
bool m_xAndYLegendsSet
Set equal to true after setting the x and y legends.
void Set2dDatasetExtra(const std::string &dataset, const std::string &extra)
Add extra formatting parameters to this dataset.
std::string m_yLegend
The y legend.
void AppendExtra(const std::string &extra)
void Write2dWithYErrorDelta(std::string context, double x, double y, double errorDelta)
Writes a 2D value to a 2D gnuplot dataset with error bars in the y direction.
std::string m_outputFileNameWithoutExtension
The output file name without any extension.
static TypeId GetTypeId()
Get the type ID.
bool m_titleSet
Set equal to true after setting the title.
std::string m_terminal
The terminal.
std::string m_xLegend
The x legend.
void Set2dDatasetStyle(const std::string &dataset, enum Gnuplot2dDataset::Style style)
Set the style of plotting to use for this dataset.
void Set2dDatasetErrorBars(const std::string &dataset, enum Gnuplot2dDataset::ErrorBars errorBars)
Set the error bars to use for this dataset.
void Write2dWithXYErrorDelta(std::string context, double x, double y, double xErrorDelta, double yErrorDelta)
Writes a 2D value to a 2D gnuplot dataset with error bars in the x and y directions.
std::string m_extra
The extra gnuplot command that will be added to the gnuplot control statements.
KeyLocation
The location of the key in the plot.
void SetKeyLocation(enum KeyLocation keyLocation)
Set the location of the key in the plot.
static void Set2dDatasetDefaultErrorBars(enum Gnuplot2dDataset::ErrorBars errorBars)
Change default errorbars style for all newly created objects.
void SetTerminal(const std::string &terminal)
void Add2dDataset(const std::string &dataset, const std::string &title)
Adds a 2D dataset to the plot.
std::map< std::string, Gnuplot2dDataset > m_2dDatasetMap
Maps context strings to 2D datasets.
void SetLegend(const std::string &xLegend, const std::string &yLegend)
void SetTitle(const std::string &title)
static void Set2dDatasetDefaultStyle(enum Gnuplot2dDataset::Style style)
Change default style for all newly created objects.
void SetExtra(const std::string &extra)
a simple class to generate gnuplot-ready plotting commands from a set of datasets.
Definition: gnuplot.h:370
a unique identifier for an interface.
Definition: type-id.h:60
Every class exported by the ns3 library is enclosed in the ns3 namespace.