A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
gnuplot.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2007 INRIA, 2008 Timo Bingmann
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 * Original Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
18 * Enhancements: Timo Bingmann <timo.bingmann@student.kit.edu>
19 */
20#ifndef GNUPLOT_H
21#define GNUPLOT_H
22
23#include <string>
24#include <utility>
25#include <vector>
26
27namespace ns3
28{
29
39{
40 public:
45 GnuplotDataset(const GnuplotDataset& original);
46
51
57 GnuplotDataset& operator=(const GnuplotDataset& original);
58
67 void SetTitle(const std::string& title);
68
73 static void SetDefaultExtra(const std::string& extra);
74
79 void SetExtra(const std::string& extra);
80
81 protected:
84 friend class Gnuplot;
85
89 static std::string m_defaultExtra;
90
94 struct Data;
95
101
106};
107
116{
117 public:
121 enum Style
122 {
131 };
132
137 {
141 XY
142 };
143
150 Gnuplot2dDataset(const std::string& title = "Untitled");
151
156 static void SetDefaultStyle(Style style);
157
161 void SetStyle(Style style);
162
167 static void SetDefaultErrorBars(ErrorBars errorBars);
168
177 void SetErrorBars(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
212 private:
216 struct Point
217 {
218 bool empty;
219 double x;
220 double y;
221 double dx;
222 double dy;
223 };
224
226 typedef std::vector<Point> PointSet;
227
230
232 struct Data2d;
233};
234
244{
245 public:
253 Gnuplot2dFunction(const std::string& title = "Untitled", const std::string& function = "");
254
258 void SetFunction(const std::string& function);
259
260 private:
262 struct Function2d;
263};
264
272{
273 public:
280 Gnuplot3dDataset(const std::string& title = "Untitled");
281
286 static void SetDefaultStyle(const std::string& style);
287
291 void SetStyle(const std::string& style);
292
300 void Add(double x, double y, double z);
301
306 void AddEmptyLine();
307
308 private:
312 struct Point
313 {
314 bool empty;
315 double x;
316 double y;
317 double z;
318 };
319
321 typedef std::vector<Point> PointSet;
322
323 static std::string m_defaultStyle;
324
326 struct Data3d;
327};
328
339{
340 public:
348 Gnuplot3dFunction(const std::string& title = "Untitled", const std::string& function = "");
349
353 void SetFunction(const std::string& function);
354
355 private:
357 struct Function3d;
358};
359
370{
371 public:
378 Gnuplot(const std::string& outputFilename = "", const std::string& title = "");
379
385 void SetOutputFilename(const std::string& outputFilename);
386
393 static std::string DetectTerminal(const std::string& filename);
394
399 void SetTerminal(const std::string& terminal);
400
404 void SetTitle(const std::string& title);
405
410 void SetLegend(const std::string& xLegend, const std::string& yLegend);
411
415 void SetExtra(const std::string& extra);
416
420 void AppendExtra(const std::string& extra);
421
425 void AddDataset(const GnuplotDataset& dataset);
426
435 void GenerateOutput(std::ostream& os);
436
449 void GenerateOutput(std::ostream& osControl, std::ostream& osData, std::string dataFileName);
450
456 void SetDataFileDatasetIndex(unsigned int index);
457
458 private:
460 typedef std::vector<GnuplotDataset> Datasets;
461
462 std::string m_outputFilename;
463 std::string m_terminal;
464
466
467 std::string m_title;
468 std::string m_xLegend;
469 std::string m_yLegend;
470 std::string m_extra;
471
473
475};
476
484{
485 public:
491 GnuplotCollection(const std::string& outputFilename);
492
497 void SetTerminal(const std::string& terminal);
498
502 void AddPlot(const Gnuplot& plot);
503
509 Gnuplot& GetPlot(unsigned int id);
510
515 void GenerateOutput(std::ostream& os);
516
526 void GenerateOutput(std::ostream& osControl, std::ostream& osData, std::string dataFileName);
527
528 private:
530 typedef std::vector<Gnuplot> Plots;
531
532 std::string m_outputFilename;
533 std::string m_terminal;
534
536};
537
538} // namespace ns3
539
540#endif /* GNUPLOT_H */
Class to represent a 2D points plot.
Definition: gnuplot.h:116
void AddEmptyLine()
Add an empty line in the data output sequence.
Definition: gnuplot.cc:420
static Style m_defaultStyle
default plot style
Definition: gnuplot.h:228
static void SetDefaultStyle(Style style)
Change default style for all newly created objects.
Definition: gnuplot.cc:353
ErrorBars
Whether errorbars should be used for this dataset.
Definition: gnuplot.h:137
static void SetDefaultErrorBars(ErrorBars errorBars)
Change default errorbars style for all newly created objects.
Definition: gnuplot.cc:365
void SetErrorBars(ErrorBars errorBars)
Definition: gnuplot.cc:371
std::vector< Point > PointSet
The set of points in the dataset.
Definition: gnuplot.h:226
void SetStyle(Style style)
Definition: gnuplot.cc:359
void Add(double x, double y)
Definition: gnuplot.cc:377
Style
The plotting style to use for this dataset.
Definition: gnuplot.h:122
static ErrorBars m_defaultErrorBars
default error bars type
Definition: gnuplot.h:229
Class to represent a 2D function expression plot.
Definition: gnuplot.h:244
void SetFunction(const std::string &function)
Definition: gnuplot.cc:507
Class to represent a 3D points plot.
Definition: gnuplot.h:272
void AddEmptyLine()
Add an empty line in the data output sequence.
Definition: gnuplot.cc:633
std::vector< Point > PointSet
The set of points in the dataset.
Definition: gnuplot.h:321
static std::string m_defaultStyle
default plot style
Definition: gnuplot.h:323
void Add(double x, double y, double z)
Definition: gnuplot.cc:622
static void SetDefaultStyle(const std::string &style)
Change default style for all newly created objects.
Definition: gnuplot.cc:610
void SetStyle(const std::string &style)
Definition: gnuplot.cc:616
Class to represent a 3D function expression plot.
Definition: gnuplot.h:339
void SetFunction(const std::string &function)
Definition: gnuplot.cc:720
a simple class to group together multiple gnuplots into one file, e.g.
Definition: gnuplot.h:484
std::string m_outputFilename
Output file name.
Definition: gnuplot.h:532
void AddPlot(const Gnuplot &plot)
Definition: gnuplot.cc:919
void SetTerminal(const std::string &terminal)
Definition: gnuplot.cc:913
Gnuplot & GetPlot(unsigned int id)
Return a pointer to one of the added plots.
Definition: gnuplot.cc:925
std::string m_terminal
Gnuplot "terminal" to use.
Definition: gnuplot.h:533
Plots m_plots
Plots in the collection.
Definition: gnuplot.h:535
void GenerateOutput(std::ostream &os)
Definition: gnuplot.cc:938
std::vector< Gnuplot > Plots
Type of the Gnuplot collection.
Definition: gnuplot.h:530
Abstract class to store a plot line to be used by ns3::Gnuplot.
Definition: gnuplot.h:39
static void SetDefaultExtra(const std::string &extra)
Change extra formatting style parameters for newly created objects.
Definition: gnuplot.cc:154
GnuplotDataset & operator=(const GnuplotDataset &original)
Reference-counting assignment operator.
Definition: gnuplot.cc:132
void SetExtra(const std::string &extra)
Add extra formatting parameters to this dataset.
Definition: gnuplot.cc:160
Data * m_data
Reference counted data object.
Definition: gnuplot.h:105
static std::string m_defaultExtra
Extra gnuplot parameters set on every newly created dataset.
Definition: gnuplot.h:89
void SetTitle(const std::string &title)
Change line title.
Definition: gnuplot.cc:148
~GnuplotDataset()
Reference-counting destructor.
Definition: gnuplot.cc:123
a simple class to generate gnuplot-ready plotting commands from a set of datasets.
Definition: gnuplot.h:370
std::string m_yLegend
Y axis legend.
Definition: gnuplot.h:469
void AddDataset(const GnuplotDataset &dataset)
Definition: gnuplot.cc:796
void SetLegend(const std::string &xLegend, const std::string &yLegend)
Definition: gnuplot.cc:776
void SetTerminal(const std::string &terminal)
Definition: gnuplot.cc:764
std::string m_terminal
Gnuplot "terminal" to use.
Definition: gnuplot.h:463
std::string m_extra
extra parameters for the plot
Definition: gnuplot.h:470
unsigned int m_dataFileDatasetIndex
Data set index to plot.
Definition: gnuplot.h:474
void AppendExtra(const std::string &extra)
Definition: gnuplot.cc:789
Datasets m_datasets
Data sets.
Definition: gnuplot.h:465
void GenerateOutput(std::ostream &os)
Writes gnuplot commands and data values to a single output stream.
Definition: gnuplot.cc:802
std::string m_title
Plot title.
Definition: gnuplot.h:467
std::vector< GnuplotDataset > Datasets
Type for Datasets to be used in plots.
Definition: gnuplot.h:460
void SetDataFileDatasetIndex(unsigned int index)
Sets the current data stream index in the data file.
Definition: gnuplot.cc:899
std::string m_xLegend
X axis legend.
Definition: gnuplot.h:468
std::string m_outputFilename
Output file name.
Definition: gnuplot.h:462
void SetExtra(const std::string &extra)
Definition: gnuplot.cc:783
void SetTitle(const std::string &title)
Definition: gnuplot.cc:770
void SetOutputFilename(const std::string &outputFilename)
Definition: gnuplot.cc:737
bool m_generateOneOutputFile
true if only one plot will be generated
Definition: gnuplot.h:472
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:743
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint8_t data[writeSize]
Structure storing the data to for a 2D plot.
Definition: gnuplot.cc:173
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:435
Structure storing the data for a 3D plot.
Definition: gnuplot.cc:520
A point in a 3D plot.
Definition: gnuplot.h:313
bool empty
the point is empty
Definition: gnuplot.h:314
double x
X coordinate.
Definition: gnuplot.h:315
double z
Z coordinate.
Definition: gnuplot.h:317
double y
Y coordinate.
Definition: gnuplot.h:316
Structure storing the function to be used for a 3D plot.
Definition: gnuplot.cc:648
Structure storing the data to plot.
Definition: gnuplot.cc:39