A Discrete-Event Network Simulator
API
gnuplot.h
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2007 INRIA, 2008 Timo Bingmann
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation;
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 * Original Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19 * Enhancements: Timo Bingmann <timo.bingmann@student.kit.edu>
20 */
21#ifndef GNUPLOT_H
22#define GNUPLOT_H
23
24#include <string>
25#include <vector>
26#include <utility>
27
28namespace ns3 {
29
39{
40public:
41
46 GnuplotDataset (const GnuplotDataset& original);
47
52
59
68 void SetTitle (const std::string& title);
69
74 static void SetDefaultExtra (const std::string& extra);
75
80 void SetExtra (const std::string& extra);
81
82protected:
83
86 friend class Gnuplot;
87
91 static std::string m_defaultExtra;
92
96 struct Data;
97
102 GnuplotDataset (struct Data* data);
103
107 struct Data* m_data;
108};
109
118{
119public:
123 enum Style {
132 };
133
141 XY
142 };
143
150 Gnuplot2dDataset (const std::string& title = "Untitled");
151
156 static void SetDefaultStyle (enum Style style);
157
161 void SetStyle (enum Style style);
162
167 static void SetDefaultErrorBars (enum ErrorBars errorBars);
168
177 void SetErrorBars (enum ErrorBars errorBars);
178
185 void Add (double x, double y);
186
194 void Add (double x, double y, double errorDelta);
195
204 void Add (double x, double y, double xErrorDelta, double yErrorDelta);
205
210 void AddEmptyLine ();
211
212private:
213
217 struct Point {
218 bool empty;
219 double x;
220 double y;
221 double dx;
222 double dy;
223 };
224
226 typedef std::vector<struct Point> PointSet;
227
228 static enum Style m_defaultStyle;
230
232 struct Data2d;
233};
234
244{
245public:
253 Gnuplot2dFunction (const std::string& title = "Untitled", const std::string& function = "");
254
258 void SetFunction (const std::string& function);
259
260private:
261
263 struct Function2d;
264};
265
273{
274public:
281 Gnuplot3dDataset (const std::string& title = "Untitled");
282
287 static void SetDefaultStyle (const std::string& style);
288
292 void SetStyle (const std::string& style);
293
301 void Add (double x, double y, double z);
302
307 void AddEmptyLine ();
308
309private:
310
314 struct Point {
315 bool empty;
316 double x;
317 double y;
318 double z;
319 };
320
322 typedef std::vector<struct Point> PointSet;
323
324 static std::string m_defaultStyle;
325
327 struct Data3d;
328};
329
340{
341public:
349 Gnuplot3dFunction (const std::string& title = "Untitled", const std::string& function = "");
350
354 void SetFunction (const std::string& function);
355
356private:
357
359 struct Function3d;
360};
361
372{
373public:
380 Gnuplot (const std::string& outputFilename="", const std::string& title = "");
381
387 void SetOutputFilename (const std::string& outputFilename);
388
395 static std::string DetectTerminal (const std::string& filename);
396
401 void SetTerminal (const std::string& terminal);
402
406 void SetTitle (const std::string& title);
407
412 void SetLegend (const std::string& xLegend, const std::string& yLegend);
413
417 void SetExtra (const std::string& extra);
418
422 void AppendExtra (const std::string& extra);
423
427 void AddDataset (const GnuplotDataset& dataset);
428
437 void GenerateOutput (std::ostream &os);
438
451 void GenerateOutput (std::ostream &osControl,
452 std::ostream &osData,
453 std::string dataFileName);
454
460 void SetDataFileDatasetIndex (unsigned int index);
461
462private:
464 typedef std::vector<GnuplotDataset> Datasets;
465
466 std::string m_outputFilename;
467 std::string m_terminal;
468
470
471 std::string m_title;
472 std::string m_xLegend;
473 std::string m_yLegend;
474 std::string m_extra;
475
477
479};
480
488{
489public:
495 GnuplotCollection (const std::string& outputFilename);
496
501 void SetTerminal (const std::string& terminal);
502
506 void AddPlot (const Gnuplot& plot);
507
513 Gnuplot& GetPlot (unsigned int id);
514
519 void GenerateOutput (std::ostream &os);
520
530 void GenerateOutput (std::ostream &osControl,
531 std::ostream &osData,
532 std::string dataFileName);
533
534private:
536 typedef std::vector<Gnuplot> Plots;
537
538 std::string m_outputFilename;
539 std::string m_terminal;
540
542};
543
544} // namespace ns3
545
546#endif /* GNUPLOT_H */
Class to represent a 2D points plot.
Definition: gnuplot.h:118
void AddEmptyLine()
Add an empty line in the data output sequence.
Definition: gnuplot.cc:404
std::vector< struct Point > PointSet
The set of points in the dataset.
Definition: gnuplot.h:226
void SetErrorBars(enum ErrorBars errorBars)
Definition: gnuplot.cc:355
ErrorBars
Whether errorbars should be used for this dataset.
Definition: gnuplot.h:137
static enum Style m_defaultStyle
default plot style
Definition: gnuplot.h:228
void SetStyle(enum Style style)
Definition: gnuplot.cc:344
static void SetDefaultStyle(enum Style style)
Change default style for all newly created objects.
Definition: gnuplot.cc:339
void Add(double x, double y)
Definition: gnuplot.cc:361
Style
The plotting style to use for this dataset.
Definition: gnuplot.h:123
static void SetDefaultErrorBars(enum ErrorBars errorBars)
Change default errorbars style for all newly created objects.
Definition: gnuplot.cc:350
static enum ErrorBars m_defaultErrorBars
default error bars type
Definition: gnuplot.h:229
Gnuplot2dDataset(const std::string &title="Untitled")
Definition: gnuplot.cc:333
Class to represent a 2D function expression plot.
Definition: gnuplot.h:244
void SetFunction(const std::string &function)
Definition: gnuplot.cc:487
Gnuplot2dFunction(const std::string &title="Untitled", const std::string &function="")
Definition: gnuplot.cc:481
Class to represent a 3D points plot.
Definition: gnuplot.h:273
void AddEmptyLine()
Add an empty line in the data output sequence.
Definition: gnuplot.cc:606
Gnuplot3dDataset(const std::string &title="Untitled")
Definition: gnuplot.cc:578
static std::string m_defaultStyle
default plot style
Definition: gnuplot.h:324
std::vector< struct Point > PointSet
The set of points in the dataset.
Definition: gnuplot.h:322
void Add(double x, double y, double z)
Definition: gnuplot.cc:595
static void SetDefaultStyle(const std::string &style)
Change default style for all newly created objects.
Definition: gnuplot.cc:584
void SetStyle(const std::string &style)
Definition: gnuplot.cc:589
Class to represent a 3D function expression plot.
Definition: gnuplot.h:340
Gnuplot3dFunction(const std::string &title="Untitled", const std::string &function="")
Definition: gnuplot.cc:683
void SetFunction(const std::string &function)
Definition: gnuplot.cc:689
a simple class to group together multiple gnuplots into one file, e.g.
Definition: gnuplot.h:488
std::string m_outputFilename
Output file name.
Definition: gnuplot.h:538
GnuplotCollection(const std::string &outputFilename)
Definition: gnuplot.cc:857
void AddPlot(const Gnuplot &plot)
Definition: gnuplot.cc:870
void SetTerminal(const std::string &terminal)
Definition: gnuplot.cc:864
Gnuplot & GetPlot(unsigned int id)
Return a pointer to one of the added plots.
Definition: gnuplot.cc:876
std::string m_terminal
Gnuplot "terminal" to use.
Definition: gnuplot.h:539
Plots m_plots
Plots in the collection.
Definition: gnuplot.h:541
void GenerateOutput(std::ostream &os)
Definition: gnuplot.cc:885
std::vector< Gnuplot > Plots
Type of the Gnuplot collection.
Definition: gnuplot.h:536
Abstract class to store a plot line to be used by ns3::Gnuplot.
Definition: gnuplot.h:39
GnuplotDataset(const GnuplotDataset &original)
Reference-counting copy constructor.
Definition: gnuplot.cc:115
static void SetDefaultExtra(const std::string &extra)
Change extra formatting style parameters for newly created objects.
Definition: gnuplot.cc:147
GnuplotDataset & operator=(const GnuplotDataset &original)
Reference-counting assignment operator.
Definition: gnuplot.cc:127
struct Data * m_data
Reference counted data object.
Definition: gnuplot.h:107
void SetExtra(const std::string &extra)
Add extra formatting parameters to this dataset.
Definition: gnuplot.cc:152
static std::string m_defaultExtra
Extra gnuplot parameters set on every newly created dataset.
Definition: gnuplot.h:91
void SetTitle(const std::string &title)
Change line title.
Definition: gnuplot.cc:141
~GnuplotDataset()
Reference-counting destructor.
Definition: gnuplot.cc:121
a simple class to generate gnuplot-ready plotting commands from a set of datasets.
Definition: gnuplot.h:372
std::string m_yLegend
Y axis legend.
Definition: gnuplot.h:473
void AddDataset(const GnuplotDataset &dataset)
Definition: gnuplot.cc:758
void SetLegend(const std::string &xLegend, const std::string &yLegend)
Definition: gnuplot.cc:738
void SetTerminal(const std::string &terminal)
Definition: gnuplot.cc:726
std::string m_terminal
Gnuplot "terminal" to use.
Definition: gnuplot.h:467
std::string m_extra
extra parameters for the plot
Definition: gnuplot.h:474
unsigned int m_dataFileDatasetIndex
Data set index to plot.
Definition: gnuplot.h:478
void AppendExtra(const std::string &extra)
Definition: gnuplot.cc:751
Datasets m_datasets
Data sets.
Definition: gnuplot.h:469
void GenerateOutput(std::ostream &os)
Writes gnuplot commands and data values to a single output stream.
Definition: gnuplot.cc:764
std::string m_title
Plot title.
Definition: gnuplot.h:471
std::vector< GnuplotDataset > Datasets
Type for Datasets to be used in plots.
Definition: gnuplot.h:464
void SetDataFileDatasetIndex(unsigned int index)
Sets the current data stream index in the data file.
Definition: gnuplot.cc:850
std::string m_xLegend
X axis legend.
Definition: gnuplot.h:472
std::string m_outputFilename
Output file name.
Definition: gnuplot.h:466
Gnuplot(const std::string &outputFilename="", const std::string &title="")
Definition: gnuplot.cc:696
void SetExtra(const std::string &extra)
Definition: gnuplot.cc:745
void SetTitle(const std::string &title)
Definition: gnuplot.cc:732
void SetOutputFilename(const std::string &outputFilename)
Definition: gnuplot.cc:705
bool m_generateOneOutputFile
true if only one plot will be generated
Definition: gnuplot.h:476
static std::string DetectTerminal(const std::string &filename)
Crude attempt to auto-detect the correct terminal setting by inspecting the filename's extension.
Definition: gnuplot.cc:710
Every class exported by the ns3 library is enclosed in the ns3 namespace.
list x
Random number samples.
uint8_t data[writeSize]
Structure storing the data to for a 2D plot.
Definition: gnuplot.cc:165
A point in a 2D plot.
Definition: gnuplot.h:217
double y
Y coordinate.
Definition: gnuplot.h:220
double dx
X error delta.
Definition: gnuplot.h:221
bool empty
the point is empty
Definition: gnuplot.h:218
double x
X coordinate.
Definition: gnuplot.h:219
double dy
Y error delta.
Definition: gnuplot.h:222
Structure storing the function to be used for a 2D plot.
Definition: gnuplot.cc:419
Structure storing the data for a 3D plot.
Definition: gnuplot.cc:500
A point in a 3D plot.
Definition: gnuplot.h:314
bool empty
the point is empty
Definition: gnuplot.h:315
double x
X coordinate.
Definition: gnuplot.h:316
double z
Z coordinate.
Definition: gnuplot.h:318
double y
Y coordinate.
Definition: gnuplot.h:317
Structure storing the function to be used for a 3D plot.
Definition: gnuplot.cc:621
Structure storing the data to plot.
Definition: gnuplot.cc:37