GCC Code Coverage Report


Directory: ../../../builds/dumux-repositories/
File: dumux/dumux/io/gnuplotinterface.hh
Date: 2025-04-12 19:19:20
Exec Total Coverage
Lines: 138 144 95.8%
Functions: 15 15 100.0%
Branches: 831 1704 48.8%

Line Branch Exec Source
1 // -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 // vi: set et ts=4 sw=4 sts=4:
3 //
4 // SPDX-FileCopyrightText: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5 // SPDX-License-Identifier: GPL-3.0-or-later
6 //
7 /*!
8 * \file
9 * \ingroup InputOutput
10 * \brief Interface for passing data sets to a file and plotting them, if gnuplot
11 * is installed.
12 *
13 * The data sets for a specific window have to be passed by the addDataSet function
14 * and then plotted by using the plot function.
15 */
16 #ifndef DUMUX_GNUPLOT_INTERFACE_HH
17 #define DUMUX_GNUPLOT_INTERFACE_HH
18
19 #if !DUMUX_HAVE_GNUPLOT
20 // Gnuplot has not been found by CMake, no output possible.
21 #define GNUPLOT_EXECUTABLE "/usr/bin/gnuplot"
22 #endif
23
24 #include <cassert>
25 #include <cmath>
26 #include <fstream>
27 #include <iostream>
28 #include <iomanip>
29 #include <sstream>
30 #include <string>
31 #include <vector>
32
33 #include <dune/common/exceptions.hh>
34 #include <dune/common/stdstreams.hh>
35
36 namespace Dumux {
37
38 /*!
39 * \ingroup InputOutput
40 * \brief Interface for passing data sets to a file and plotting them, if gnuplot
41 * is installed.
42 */
43 template<class Scalar>
44 class GnuplotInterface
45 {
46 public:
47 using StringVector = std::vector<std::string>;
48 enum class CurveType
49 { function, file, data };
50 using CurveTypeVector = std::vector<CurveType>;
51
52 //! \brief The constructor
53 166 explicit GnuplotInterface(bool persist = true) :
54 166 pipeInteractive_(0), pipeImage_(0),
55 166 openPlotWindow_(true), persist_(persist), createImage_(true),
56
1/2
✓ Branch 2 taken 166 times.
✗ Branch 3 not taken.
166 terminalType_("x11"), outputDirectory_("./"),
57
1/2
✓ Branch 1 taken 166 times.
✗ Branch 2 not taken.
166 datafileSeparator_(' '), linetype_("solid"),
58 166 xRangeIsSet_(false), yRangeIsSet_(false),
59
2/4
✓ Branch 1 taken 166 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 166 times.
✗ Branch 5 not taken.
166 xLabel_(""), yLabel_(""),
60
2/4
✓ Branch 1 taken 166 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 166 times.
✗ Branch 5 not taken.
332 gnuplotPath_(GNUPLOT_EXECUTABLE)
61 {
62
1/2
✓ Branch 1 taken 166 times.
✗ Branch 2 not taken.
166 open(persist_);
63
1/2
✓ Branch 1 taken 166 times.
✗ Branch 2 not taken.
166 resetPlot();
64 166 }
65
66 //! \brief The destructor
67 165 ~GnuplotInterface()
68 {
69 165 close();
70 167 }
71
72 /*!
73 * \brief Plots the files for a specific window number, writes a gnuplot and png file.
74 *
75 * \param filename The name of the output file
76 */
77 1525 void plot(const std::string &filename = "")
78 {
79 // set correct terminal and general options
80
2/4
✓ Branch 2 taken 1525 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1525 times.
✗ Branch 6 not taken.
4575 std::string plot = "set datafile separator \'" + std::string(1, datafileSeparator_) + "\'\n";
81
82 // set the labels and axes ranges
83
2/4
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1525 times.
✗ Branch 5 not taken.
4575 plot += "set xlabel \"" + xLabel_ + "\"\n";
84
2/4
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1525 times.
✗ Branch 5 not taken.
4575 plot += "set ylabel \"" + yLabel_ + "\"\n";
85
2/2
✓ Branch 0 taken 1060 times.
✓ Branch 1 taken 465 times.
1525 if (xRangeIsSet_)
86
6/12
✓ Branch 1 taken 1060 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1060 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1060 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1060 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1060 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1060 times.
✗ Branch 17 not taken.
6360 plot += "set xrange [" + toStringWithPrecision(xRangeMin_) + ":" + toStringWithPrecision(xRangeMax_) + "]" + "\n";
87
2/2
✓ Branch 0 taken 129 times.
✓ Branch 1 taken 1396 times.
1525 if (yRangeIsSet_)
88
6/12
✓ Branch 1 taken 129 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 129 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 129 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 129 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 129 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 129 times.
✗ Branch 17 not taken.
774 plot += "set yrange [" + toStringWithPrecision(yRangeMin_) + ":" + toStringWithPrecision(yRangeMax_) + "]" + "\n";
89
90 // set user defined options
91
2/4
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1525 times.
✗ Branch 6 not taken.
3050 plot += plotOptions_ + "\n";
92
93 // plot curves
94
1/2
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
1525 plot += "plot";
95 4948 std::string plotCommandForFile(plot);
96
2/2
✓ Branch 0 taken 3423 times.
✓ Branch 1 taken 1525 times.
4948 for (unsigned int i = 0; i < curve_.size(); ++i)
97 {
98
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 3422 times.
3423 if (curveType_[i] == CurveType::function)
99 {
100
3/6
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
4 plot += + " " + curve_[i] + " " + curveOptions_[i];
101
3/6
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
4 plotCommandForFile += + " " + curve_[i] + " " + curveOptions_[i];
102 }
103 else
104 {
105
4/8
✓ Branch 1 taken 3422 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3422 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3422 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3422 times.
✗ Branch 11 not taken.
17110 plot += + " '" + outputDirectory_ + curve_[i] + "' " + curveOptions_[i];
106
3/6
✓ Branch 1 taken 3422 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3422 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3422 times.
✗ Branch 8 not taken.
13688 plotCommandForFile += + " '" + curve_[i] + "' " + curveOptions_[i];
107 }
108
109
2/2
✓ Branch 0 taken 1898 times.
✓ Branch 1 taken 1525 times.
3423 if (i < curve_.size()-1)
110 {
111
1/2
✓ Branch 1 taken 1898 times.
✗ Branch 2 not taken.
1898 plot += ",\\";
112
1/2
✓ Branch 1 taken 3423 times.
✗ Branch 2 not taken.
3423 plotCommandForFile += ",\\";
113 }
114
1/2
✓ Branch 1 taken 3423 times.
✗ Branch 2 not taken.
3423 plot += "\n";
115 3423 plotCommandForFile += "\n";
116 }
117
118 // initialize the interactive plot
119
1/2
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
1525 std::string interactivePlot = "reset\n";
120
121 // set the terminal if the defaults were overwritten
122
2/4
✓ Branch 0 taken 1525 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1525 times.
1525 if (terminalType_.compare("x11") != 0 || linetype_.compare("solid") != 0)
123 interactivePlot += "set term " + terminalType_ + " " + linetype_ + " " + " \n";
124
125 // add the plot command and plot
126 1525 interactivePlot += plot;
127
2/2
✓ Branch 0 taken 11 times.
✓ Branch 1 taken 1514 times.
1525 if (openPlotWindow_)
128
1/2
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
11 executeGnuplot(interactivePlot, pipeInteractive_);
129
130 // create a gnuplot file if a filename is specified
131
1/2
✓ Branch 0 taken 1525 times.
✗ Branch 1 not taken.
1525 if (filename.compare("") != 0)
132 {
133
1/2
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
1525 std::string filePlot = "reset\n";
134
2/4
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1525 times.
✗ Branch 5 not taken.
4575 filePlot += "set term pngcairo size 800,600 " + linetype_ + " \n";
135
3/6
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1525 times.
✗ Branch 5 not taken.
✓ Branch 9 taken 1525 times.
✗ Branch 10 not taken.
4575 filePlot += "set output \"" + filename + ".png\"\n";
136 1525 filePlot += plot;
137
2/4
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1525 times.
✗ Branch 5 not taken.
3050 std::string gnuplotFileName = outputDirectory_ + filename + ".gp";
138
1/2
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
1525 std::ofstream file;
139
1/2
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
1525 file.open(gnuplotFileName);
140 1525 file << filePlot;
141
1/2
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
1525 file.close();
142
143 // create the image if desired
144
1/2
✓ Branch 0 taken 1525 times.
✗ Branch 1 not taken.
1525 if (createImage_)
145
1/2
✓ Branch 1 taken 1525 times.
✗ Branch 2 not taken.
1525 executeGnuplot(filePlot, pipeImage_);
146 1525 }
147 1525 }
148
149 /*!
150 * \brief Resets all gnuplot parameters
151 */
152 7 void resetAll(const bool persist = true)
153 {
154 7 close();
155 7 open(persist);
156 7 resetPlot();
157 7 }
158
159 /*!
160 * \brief Deletes all plots from a plotting window and resets user-defined options
161 */
162 1552 void resetPlot()
163 {
164
2/2
✓ Branch 0 taken 1374 times.
✓ Branch 1 taken 178 times.
1552 curve_.clear();
165
2/2
✓ Branch 0 taken 1374 times.
✓ Branch 1 taken 178 times.
1552 curveOptions_.clear();
166 1552 plotOptions_ = "";
167 1552 }
168
169 /*!
170 * \brief Opens gnuplot
171 */
172 173 void open(const bool persist = true)
173 {
174
2/2
✓ Branch 0 taken 144 times.
✓ Branch 1 taken 29 times.
173 if (persist)
175
1/2
✓ Branch 2 taken 144 times.
✗ Branch 3 not taken.
144 pipeInteractive_ = popen((gnuplotPath_ + " -persist").c_str(), "w"); // "w" - writing
176 else
177 29 pipeInteractive_ = popen((gnuplotPath_).c_str(), "w");
178
179 // the image pipe should not persist
180 173 pipeImage_ = popen((gnuplotPath_).c_str(), "w");
181 173 }
182
183 /*!
184 * \brief Closes gnuplot
185 */
186 172 void close()
187 {
188
1/2
✓ Branch 1 taken 172 times.
✗ Branch 2 not taken.
172 if (pclose(pipeInteractive_) == -1 || pclose(pipeImage_) == -1)
189 assert("Could not close pipe to Gnuplot!");
190 172 }
191
192 /*!
193 * \brief Adds a function to list of plots
194 *
195 * \param function Function to be plotted
196 * \param options Specific gnuplot options passed to this plot
197 */
198 1 void addFunctionToPlot(const std::string& function,
199 const std::string& options = "with lines")
200 {
201 1 curve_.push_back(function);
202 1 curveOptions_.push_back(options);
203 1 curveType_.push_back(CurveType::function);
204 1 }
205
206 /*!
207 * \brief Adds a file to list of plots
208 *
209 * \param fileName Name and path of the file to be plotted
210 * \param options Specific gnuplot options passed to this plot
211 */
212 1 void addFileToPlot(const std::string& fileName,
213 const std::string& options = "with lines")
214 {
215 1 curve_.push_back(fileName);
216 1 curveOptions_.push_back(options);
217 1 curveType_.push_back(CurveType::file);
218 1 }
219
220 /*!
221 * \brief Adds a data set and writes a data file
222 *
223 * The title of the plot can be changed by setting the title in the options
224 *
225 * \param x Vector containing the x-axis data points
226 * \param y Vector containing the y-axis data points
227 * \param fileName The name of the written data file
228 * \param options Specific gnuplot options passed to this plot
229 */
230 template<class DataX, class DataY>
231
1/2
✓ Branch 0 taken 3406 times.
✗ Branch 1 not taken.
3406 void addDataSetToPlot(const DataX& x, const DataY& y,
232 const std::string& fileName,
233 const std::string& options = "with lines")
234 {
235
2/4
✓ Branch 0 taken 3406 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3406 times.
3406 if (x.size() == 0 || y.size() == 0)
236 DUNE_THROW(Dune::InvalidStateException, "Data vectors have to contain data!");
237
238
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3406 times.
3406 if (x.size() > y.size())
239 DUNE_THROW(Dune::InvalidStateException, "Non-matching data field sizes!");
240
241
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3406 times.
3406 if (x.size() != y.size())
242 std::cout << "GnuplotInterface warning: Added data fields of different size! "
243 << "Only plotting the first " << x.size() << " elements.\n";
244
245 // write data to file
246 3406 std::ofstream file;
247
2/4
✓ Branch 1 taken 3406 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3406 times.
✗ Branch 5 not taken.
3406 file.open(outputDirectory_ + fileName);
248
2/2
✓ Branch 0 taken 576388 times.
✓ Branch 1 taken 3406 times.
579794 for (unsigned int i = 0; i < x.size(); i++)
249 {
250
4/8
✓ Branch 2 taken 576388 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 576388 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 576388 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 576388 times.
✗ Branch 12 not taken.
2881940 checkNumber(x[i], "x[i] i=" + std::to_string(i) + " in " + fileName);
251
4/8
✓ Branch 2 taken 576388 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 576388 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 576388 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 576388 times.
✗ Branch 12 not taken.
2881940 checkNumber(y[i], "y[i] i=" + std::to_string(i) + " in " + fileName);
252
4/8
✓ Branch 1 taken 576388 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 576388 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 576388 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 576388 times.
✗ Branch 11 not taken.
576388 file << x[i] << datafileSeparator_ << y[i] << std::endl;
253 }
254
1/2
✓ Branch 1 taken 3406 times.
✗ Branch 2 not taken.
3406 file.close();
255
256 // adding file to list of plotted lines
257
1/2
✓ Branch 1 taken 3406 times.
✗ Branch 2 not taken.
3406 curve_.push_back(fileName);
258
1/2
✓ Branch 1 taken 3406 times.
✗ Branch 2 not taken.
3406 curveOptions_.push_back(options);
259
1/2
✓ Branch 1 taken 3406 times.
✗ Branch 2 not taken.
3406 curveType_.push_back(CurveType::data);
260 3406 }
261
262 /*!
263 * \brief Sets the label for the x-axis
264 *
265 * \param label The label of the x-axis
266 */
267 1503 void setXlabel(const std::string& label)
268 {
269
119/238
✓ Branch 1 taken 1371 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 6 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 53 taken 1 times.
✗ Branch 54 not taken.
✓ Branch 57 taken 1 times.
✗ Branch 58 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 65 taken 1 times.
✗ Branch 66 not taken.
✓ Branch 69 taken 1 times.
✗ Branch 70 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 81 taken 1 times.
✗ Branch 82 not taken.
✓ Branch 85 taken 1 times.
✗ Branch 86 not taken.
✓ Branch 89 taken 1 times.
✗ Branch 90 not taken.
✓ Branch 93 taken 1 times.
✗ Branch 94 not taken.
✓ Branch 97 taken 1 times.
✗ Branch 98 not taken.
✓ Branch 101 taken 1 times.
✗ Branch 102 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 109 taken 1 times.
✗ Branch 110 not taken.
✓ Branch 113 taken 1 times.
✗ Branch 114 not taken.
✓ Branch 117 taken 1 times.
✗ Branch 118 not taken.
✓ Branch 121 taken 1 times.
✗ Branch 122 not taken.
✓ Branch 125 taken 1 times.
✗ Branch 126 not taken.
✓ Branch 129 taken 1 times.
✗ Branch 130 not taken.
✓ Branch 133 taken 1 times.
✗ Branch 134 not taken.
✓ Branch 137 taken 1 times.
✗ Branch 138 not taken.
✓ Branch 141 taken 1 times.
✗ Branch 142 not taken.
✓ Branch 145 taken 1 times.
✗ Branch 146 not taken.
✓ Branch 149 taken 1 times.
✗ Branch 150 not taken.
✓ Branch 153 taken 1 times.
✗ Branch 154 not taken.
✓ Branch 157 taken 1 times.
✗ Branch 158 not taken.
✓ Branch 161 taken 1 times.
✗ Branch 162 not taken.
✓ Branch 165 taken 1 times.
✗ Branch 166 not taken.
✓ Branch 169 taken 1 times.
✗ Branch 170 not taken.
✓ Branch 173 taken 1 times.
✗ Branch 174 not taken.
✓ Branch 177 taken 1 times.
✗ Branch 178 not taken.
✓ Branch 181 taken 1 times.
✗ Branch 182 not taken.
✓ Branch 185 taken 1 times.
✗ Branch 186 not taken.
✓ Branch 189 taken 1 times.
✗ Branch 190 not taken.
✓ Branch 193 taken 1 times.
✗ Branch 194 not taken.
✓ Branch 197 taken 1 times.
✗ Branch 198 not taken.
✓ Branch 201 taken 1 times.
✗ Branch 202 not taken.
✓ Branch 205 taken 1 times.
✗ Branch 206 not taken.
✓ Branch 209 taken 1 times.
✗ Branch 210 not taken.
✓ Branch 213 taken 1 times.
✗ Branch 214 not taken.
✓ Branch 217 taken 1 times.
✗ Branch 218 not taken.
✓ Branch 221 taken 1 times.
✗ Branch 222 not taken.
✓ Branch 225 taken 1 times.
✗ Branch 226 not taken.
✓ Branch 229 taken 1 times.
✗ Branch 230 not taken.
✓ Branch 233 taken 1 times.
✗ Branch 234 not taken.
✓ Branch 237 taken 1 times.
✗ Branch 238 not taken.
✓ Branch 241 taken 1 times.
✗ Branch 242 not taken.
✓ Branch 245 taken 1 times.
✗ Branch 246 not taken.
✓ Branch 249 taken 1 times.
✗ Branch 250 not taken.
✓ Branch 253 taken 1 times.
✗ Branch 254 not taken.
✓ Branch 257 taken 1 times.
✗ Branch 258 not taken.
✓ Branch 261 taken 1 times.
✗ Branch 262 not taken.
✓ Branch 265 taken 1 times.
✗ Branch 266 not taken.
✓ Branch 269 taken 1 times.
✗ Branch 270 not taken.
✓ Branch 273 taken 1 times.
✗ Branch 274 not taken.
✓ Branch 277 taken 1 times.
✗ Branch 278 not taken.
✓ Branch 281 taken 1 times.
✗ Branch 282 not taken.
✓ Branch 285 taken 1 times.
✗ Branch 286 not taken.
✓ Branch 289 taken 1 times.
✗ Branch 290 not taken.
✓ Branch 293 taken 1 times.
✗ Branch 294 not taken.
✓ Branch 297 taken 1 times.
✗ Branch 298 not taken.
✓ Branch 301 taken 1 times.
✗ Branch 302 not taken.
✓ Branch 305 taken 1 times.
✗ Branch 306 not taken.
✓ Branch 309 taken 1 times.
✗ Branch 310 not taken.
✓ Branch 313 taken 1 times.
✗ Branch 314 not taken.
✓ Branch 317 taken 1 times.
✗ Branch 318 not taken.
✓ Branch 321 taken 1 times.
✗ Branch 322 not taken.
✓ Branch 325 taken 1 times.
✗ Branch 326 not taken.
✓ Branch 329 taken 1 times.
✗ Branch 330 not taken.
✓ Branch 333 taken 1 times.
✗ Branch 334 not taken.
✓ Branch 337 taken 1 times.
✗ Branch 338 not taken.
✓ Branch 341 taken 1 times.
✗ Branch 342 not taken.
✓ Branch 345 taken 1 times.
✗ Branch 346 not taken.
✓ Branch 349 taken 1 times.
✗ Branch 350 not taken.
✓ Branch 353 taken 1 times.
✗ Branch 354 not taken.
✓ Branch 357 taken 1 times.
✗ Branch 358 not taken.
✓ Branch 361 taken 1 times.
✗ Branch 362 not taken.
✓ Branch 365 taken 1 times.
✗ Branch 366 not taken.
✓ Branch 369 taken 1 times.
✗ Branch 370 not taken.
✓ Branch 373 taken 1 times.
✗ Branch 374 not taken.
✓ Branch 377 taken 1 times.
✗ Branch 378 not taken.
✓ Branch 381 taken 1 times.
✗ Branch 382 not taken.
✓ Branch 385 taken 1 times.
✗ Branch 386 not taken.
✓ Branch 389 taken 1 times.
✗ Branch 390 not taken.
✓ Branch 393 taken 1 times.
✗ Branch 394 not taken.
✓ Branch 397 taken 1 times.
✗ Branch 398 not taken.
✓ Branch 401 taken 1 times.
✗ Branch 402 not taken.
✓ Branch 405 taken 1 times.
✗ Branch 406 not taken.
✓ Branch 409 taken 1 times.
✗ Branch 410 not taken.
✓ Branch 413 taken 1 times.
✗ Branch 414 not taken.
✓ Branch 417 taken 1 times.
✗ Branch 418 not taken.
✓ Branch 421 taken 1 times.
✗ Branch 422 not taken.
✓ Branch 425 taken 1 times.
✗ Branch 426 not taken.
✓ Branch 429 taken 1 times.
✗ Branch 430 not taken.
✓ Branch 433 taken 1 times.
✗ Branch 434 not taken.
✓ Branch 437 taken 1 times.
✗ Branch 438 not taken.
✓ Branch 441 taken 1 times.
✗ Branch 442 not taken.
✓ Branch 445 taken 1 times.
✗ Branch 446 not taken.
✓ Branch 449 taken 1 times.
✗ Branch 450 not taken.
✓ Branch 453 taken 1 times.
✗ Branch 454 not taken.
✓ Branch 457 taken 1 times.
✗ Branch 458 not taken.
✓ Branch 461 taken 1 times.
✗ Branch 462 not taken.
✓ Branch 465 taken 1 times.
✗ Branch 466 not taken.
✓ Branch 469 taken 1 times.
✗ Branch 470 not taken.
✓ Branch 473 taken 1 times.
✗ Branch 474 not taken.
2997 xLabel_ = label;
270 1494 }
271
272 /*!
273 * \brief Sets the label for the y-axis
274 *
275 * \param label The label of the y-axis
276 */
277 1503 void setYlabel(const std::string& label)
278 {
279
119/238
✓ Branch 1 taken 1371 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 6 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 53 taken 1 times.
✗ Branch 54 not taken.
✓ Branch 57 taken 1 times.
✗ Branch 58 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 65 taken 1 times.
✗ Branch 66 not taken.
✓ Branch 69 taken 1 times.
✗ Branch 70 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 81 taken 1 times.
✗ Branch 82 not taken.
✓ Branch 85 taken 1 times.
✗ Branch 86 not taken.
✓ Branch 89 taken 1 times.
✗ Branch 90 not taken.
✓ Branch 93 taken 1 times.
✗ Branch 94 not taken.
✓ Branch 97 taken 1 times.
✗ Branch 98 not taken.
✓ Branch 101 taken 1 times.
✗ Branch 102 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 109 taken 1 times.
✗ Branch 110 not taken.
✓ Branch 113 taken 1 times.
✗ Branch 114 not taken.
✓ Branch 117 taken 1 times.
✗ Branch 118 not taken.
✓ Branch 121 taken 1 times.
✗ Branch 122 not taken.
✓ Branch 125 taken 1 times.
✗ Branch 126 not taken.
✓ Branch 129 taken 1 times.
✗ Branch 130 not taken.
✓ Branch 133 taken 1 times.
✗ Branch 134 not taken.
✓ Branch 137 taken 1 times.
✗ Branch 138 not taken.
✓ Branch 141 taken 1 times.
✗ Branch 142 not taken.
✓ Branch 145 taken 1 times.
✗ Branch 146 not taken.
✓ Branch 149 taken 1 times.
✗ Branch 150 not taken.
✓ Branch 153 taken 1 times.
✗ Branch 154 not taken.
✓ Branch 157 taken 1 times.
✗ Branch 158 not taken.
✓ Branch 161 taken 1 times.
✗ Branch 162 not taken.
✓ Branch 165 taken 1 times.
✗ Branch 166 not taken.
✓ Branch 169 taken 1 times.
✗ Branch 170 not taken.
✓ Branch 173 taken 1 times.
✗ Branch 174 not taken.
✓ Branch 177 taken 1 times.
✗ Branch 178 not taken.
✓ Branch 181 taken 1 times.
✗ Branch 182 not taken.
✓ Branch 185 taken 1 times.
✗ Branch 186 not taken.
✓ Branch 189 taken 1 times.
✗ Branch 190 not taken.
✓ Branch 193 taken 1 times.
✗ Branch 194 not taken.
✓ Branch 197 taken 1 times.
✗ Branch 198 not taken.
✓ Branch 201 taken 1 times.
✗ Branch 202 not taken.
✓ Branch 205 taken 1 times.
✗ Branch 206 not taken.
✓ Branch 209 taken 1 times.
✗ Branch 210 not taken.
✓ Branch 213 taken 1 times.
✗ Branch 214 not taken.
✓ Branch 217 taken 1 times.
✗ Branch 218 not taken.
✓ Branch 221 taken 1 times.
✗ Branch 222 not taken.
✓ Branch 225 taken 1 times.
✗ Branch 226 not taken.
✓ Branch 229 taken 1 times.
✗ Branch 230 not taken.
✓ Branch 233 taken 1 times.
✗ Branch 234 not taken.
✓ Branch 237 taken 1 times.
✗ Branch 238 not taken.
✓ Branch 241 taken 1 times.
✗ Branch 242 not taken.
✓ Branch 245 taken 1 times.
✗ Branch 246 not taken.
✓ Branch 249 taken 1 times.
✗ Branch 250 not taken.
✓ Branch 253 taken 1 times.
✗ Branch 254 not taken.
✓ Branch 257 taken 1 times.
✗ Branch 258 not taken.
✓ Branch 261 taken 1 times.
✗ Branch 262 not taken.
✓ Branch 265 taken 1 times.
✗ Branch 266 not taken.
✓ Branch 269 taken 1 times.
✗ Branch 270 not taken.
✓ Branch 273 taken 1 times.
✗ Branch 274 not taken.
✓ Branch 277 taken 1 times.
✗ Branch 278 not taken.
✓ Branch 281 taken 1 times.
✗ Branch 282 not taken.
✓ Branch 285 taken 1 times.
✗ Branch 286 not taken.
✓ Branch 289 taken 1 times.
✗ Branch 290 not taken.
✓ Branch 293 taken 1 times.
✗ Branch 294 not taken.
✓ Branch 297 taken 1 times.
✗ Branch 298 not taken.
✓ Branch 301 taken 1 times.
✗ Branch 302 not taken.
✓ Branch 305 taken 1 times.
✗ Branch 306 not taken.
✓ Branch 309 taken 1 times.
✗ Branch 310 not taken.
✓ Branch 313 taken 1 times.
✗ Branch 314 not taken.
✓ Branch 317 taken 1 times.
✗ Branch 318 not taken.
✓ Branch 321 taken 1 times.
✗ Branch 322 not taken.
✓ Branch 325 taken 1 times.
✗ Branch 326 not taken.
✓ Branch 329 taken 1 times.
✗ Branch 330 not taken.
✓ Branch 333 taken 1 times.
✗ Branch 334 not taken.
✓ Branch 337 taken 1 times.
✗ Branch 338 not taken.
✓ Branch 341 taken 1 times.
✗ Branch 342 not taken.
✓ Branch 345 taken 1 times.
✗ Branch 346 not taken.
✓ Branch 349 taken 1 times.
✗ Branch 350 not taken.
✓ Branch 353 taken 1 times.
✗ Branch 354 not taken.
✓ Branch 357 taken 1 times.
✗ Branch 358 not taken.
✓ Branch 361 taken 1 times.
✗ Branch 362 not taken.
✓ Branch 365 taken 1 times.
✗ Branch 366 not taken.
✓ Branch 369 taken 1 times.
✗ Branch 370 not taken.
✓ Branch 373 taken 1 times.
✗ Branch 374 not taken.
✓ Branch 377 taken 1 times.
✗ Branch 378 not taken.
✓ Branch 381 taken 1 times.
✗ Branch 382 not taken.
✓ Branch 385 taken 1 times.
✗ Branch 386 not taken.
✓ Branch 389 taken 1 times.
✗ Branch 390 not taken.
✓ Branch 393 taken 1 times.
✗ Branch 394 not taken.
✓ Branch 397 taken 1 times.
✗ Branch 398 not taken.
✓ Branch 401 taken 1 times.
✗ Branch 402 not taken.
✓ Branch 405 taken 1 times.
✗ Branch 406 not taken.
✓ Branch 409 taken 1 times.
✗ Branch 410 not taken.
✓ Branch 413 taken 1 times.
✗ Branch 414 not taken.
✓ Branch 417 taken 1 times.
✗ Branch 418 not taken.
✓ Branch 421 taken 1 times.
✗ Branch 422 not taken.
✓ Branch 425 taken 1 times.
✗ Branch 426 not taken.
✓ Branch 429 taken 1 times.
✗ Branch 430 not taken.
✓ Branch 433 taken 1 times.
✗ Branch 434 not taken.
✓ Branch 437 taken 1 times.
✗ Branch 438 not taken.
✓ Branch 441 taken 1 times.
✗ Branch 442 not taken.
✓ Branch 445 taken 1 times.
✗ Branch 446 not taken.
✓ Branch 449 taken 1 times.
✗ Branch 450 not taken.
✓ Branch 453 taken 1 times.
✗ Branch 454 not taken.
✓ Branch 457 taken 1 times.
✗ Branch 458 not taken.
✓ Branch 461 taken 1 times.
✗ Branch 462 not taken.
✓ Branch 465 taken 1 times.
✗ Branch 466 not taken.
✓ Branch 469 taken 1 times.
✗ Branch 470 not taken.
✓ Branch 473 taken 1 times.
✗ Branch 474 not taken.
2997 yLabel_ = label;
280 1494 }
281
282 /*!
283 * \brief Sets the range for the x-axis
284 *
285 * \param min The lowest plotted value for the x-axis
286 * \param max The highest plotted value for the x-axis
287 */
288 1054 void setXRange(Scalar min, Scalar max)
289 {
290 1054 xRangeMin_ = min;
291 1054 xRangeMax_ = max;
292
120/239
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 931 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 1 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 1 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 1 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 1 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 1 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 1 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 1 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 1 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 1 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 1 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 1 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 1 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 1 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 1 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 1 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 1 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 1 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 1 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 1 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 1 times.
✗ Branch 134 not taken.
✓ Branch 136 taken 1 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 1 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 1 times.
✗ Branch 143 not taken.
✓ Branch 145 taken 1 times.
✗ Branch 146 not taken.
✓ Branch 148 taken 1 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 1 times.
✗ Branch 152 not taken.
✓ Branch 154 taken 1 times.
✗ Branch 155 not taken.
✓ Branch 157 taken 1 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 1 times.
✗ Branch 161 not taken.
✓ Branch 163 taken 1 times.
✗ Branch 164 not taken.
✓ Branch 166 taken 1 times.
✗ Branch 167 not taken.
✓ Branch 169 taken 1 times.
✗ Branch 170 not taken.
✓ Branch 172 taken 1 times.
✗ Branch 173 not taken.
✓ Branch 175 taken 1 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 1 times.
✗ Branch 179 not taken.
✓ Branch 181 taken 1 times.
✗ Branch 182 not taken.
✓ Branch 184 taken 1 times.
✗ Branch 185 not taken.
✓ Branch 187 taken 1 times.
✗ Branch 188 not taken.
✓ Branch 190 taken 1 times.
✗ Branch 191 not taken.
✓ Branch 193 taken 1 times.
✗ Branch 194 not taken.
✓ Branch 196 taken 1 times.
✗ Branch 197 not taken.
✓ Branch 199 taken 1 times.
✗ Branch 200 not taken.
✓ Branch 202 taken 1 times.
✗ Branch 203 not taken.
✓ Branch 205 taken 1 times.
✗ Branch 206 not taken.
✓ Branch 208 taken 1 times.
✗ Branch 209 not taken.
✓ Branch 211 taken 1 times.
✗ Branch 212 not taken.
✓ Branch 214 taken 1 times.
✗ Branch 215 not taken.
✓ Branch 217 taken 1 times.
✗ Branch 218 not taken.
✓ Branch 220 taken 1 times.
✗ Branch 221 not taken.
✓ Branch 223 taken 1 times.
✗ Branch 224 not taken.
✓ Branch 226 taken 1 times.
✗ Branch 227 not taken.
✓ Branch 229 taken 1 times.
✗ Branch 230 not taken.
✓ Branch 232 taken 1 times.
✗ Branch 233 not taken.
✓ Branch 235 taken 1 times.
✗ Branch 236 not taken.
✓ Branch 238 taken 1 times.
✗ Branch 239 not taken.
✓ Branch 241 taken 1 times.
✗ Branch 242 not taken.
✓ Branch 244 taken 1 times.
✗ Branch 245 not taken.
✓ Branch 247 taken 1 times.
✗ Branch 248 not taken.
✓ Branch 250 taken 1 times.
✗ Branch 251 not taken.
✓ Branch 253 taken 1 times.
✗ Branch 254 not taken.
✓ Branch 256 taken 1 times.
✗ Branch 257 not taken.
✓ Branch 259 taken 1 times.
✗ Branch 260 not taken.
✓ Branch 262 taken 1 times.
✗ Branch 263 not taken.
✓ Branch 265 taken 1 times.
✗ Branch 266 not taken.
✓ Branch 268 taken 1 times.
✗ Branch 269 not taken.
✓ Branch 271 taken 1 times.
✗ Branch 272 not taken.
✓ Branch 274 taken 1 times.
✗ Branch 275 not taken.
✓ Branch 277 taken 1 times.
✗ Branch 278 not taken.
✓ Branch 280 taken 1 times.
✗ Branch 281 not taken.
✓ Branch 283 taken 1 times.
✗ Branch 284 not taken.
✓ Branch 286 taken 1 times.
✗ Branch 287 not taken.
✓ Branch 289 taken 1 times.
✗ Branch 290 not taken.
✓ Branch 292 taken 1 times.
✗ Branch 293 not taken.
✓ Branch 295 taken 1 times.
✗ Branch 296 not taken.
✓ Branch 298 taken 1 times.
✗ Branch 299 not taken.
✓ Branch 301 taken 1 times.
✗ Branch 302 not taken.
✓ Branch 304 taken 1 times.
✗ Branch 305 not taken.
✓ Branch 307 taken 1 times.
✗ Branch 308 not taken.
✓ Branch 310 taken 1 times.
✗ Branch 311 not taken.
✓ Branch 313 taken 1 times.
✗ Branch 314 not taken.
✓ Branch 316 taken 1 times.
✗ Branch 317 not taken.
✓ Branch 319 taken 1 times.
✗ Branch 320 not taken.
✓ Branch 322 taken 1 times.
✗ Branch 323 not taken.
✓ Branch 325 taken 1 times.
✗ Branch 326 not taken.
✓ Branch 328 taken 1 times.
✗ Branch 329 not taken.
✓ Branch 331 taken 1 times.
✗ Branch 332 not taken.
✓ Branch 334 taken 1 times.
✗ Branch 335 not taken.
✓ Branch 337 taken 1 times.
✗ Branch 338 not taken.
✓ Branch 340 taken 1 times.
✗ Branch 341 not taken.
✓ Branch 343 taken 1 times.
✗ Branch 344 not taken.
✓ Branch 346 taken 1 times.
✗ Branch 347 not taken.
✓ Branch 349 taken 1 times.
✗ Branch 350 not taken.
✓ Branch 352 taken 1 times.
✗ Branch 353 not taken.
✓ Branch 355 taken 1 times.
✗ Branch 356 not taken.
✗ Branch 3 not taken.
1054 xRangeIsSet_ = true;
293 }
294
295 /*!
296 * \brief Sets the range for the y-axis
297 *
298 * \param min The lowest plotted value for the y-axis
299 * \param max The highest plotted value for the y-axis
300 */
301 123 void setYRange(Scalar min, Scalar max)
302 {
303 123 yRangeMin_ = min;
304 123 yRangeMax_ = max;
305
119/238
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 1 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 1 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 1 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 1 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 1 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 1 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 1 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 1 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 1 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 1 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 1 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 1 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 1 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 1 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 1 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 1 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 1 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 1 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 1 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 1 times.
✗ Branch 134 not taken.
✓ Branch 136 taken 1 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 1 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 1 times.
✗ Branch 143 not taken.
✓ Branch 145 taken 1 times.
✗ Branch 146 not taken.
✓ Branch 148 taken 1 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 1 times.
✗ Branch 152 not taken.
✓ Branch 154 taken 1 times.
✗ Branch 155 not taken.
✓ Branch 157 taken 1 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 1 times.
✗ Branch 161 not taken.
✓ Branch 163 taken 1 times.
✗ Branch 164 not taken.
✓ Branch 166 taken 1 times.
✗ Branch 167 not taken.
✓ Branch 169 taken 1 times.
✗ Branch 170 not taken.
✓ Branch 172 taken 1 times.
✗ Branch 173 not taken.
✓ Branch 175 taken 1 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 1 times.
✗ Branch 179 not taken.
✓ Branch 181 taken 1 times.
✗ Branch 182 not taken.
✓ Branch 184 taken 1 times.
✗ Branch 185 not taken.
✓ Branch 187 taken 1 times.
✗ Branch 188 not taken.
✓ Branch 190 taken 1 times.
✗ Branch 191 not taken.
✓ Branch 193 taken 1 times.
✗ Branch 194 not taken.
✓ Branch 196 taken 1 times.
✗ Branch 197 not taken.
✓ Branch 199 taken 1 times.
✗ Branch 200 not taken.
✓ Branch 202 taken 1 times.
✗ Branch 203 not taken.
✓ Branch 205 taken 1 times.
✗ Branch 206 not taken.
✓ Branch 208 taken 1 times.
✗ Branch 209 not taken.
✓ Branch 211 taken 1 times.
✗ Branch 212 not taken.
✓ Branch 214 taken 1 times.
✗ Branch 215 not taken.
✓ Branch 217 taken 1 times.
✗ Branch 218 not taken.
✓ Branch 220 taken 1 times.
✗ Branch 221 not taken.
✓ Branch 223 taken 1 times.
✗ Branch 224 not taken.
✓ Branch 226 taken 1 times.
✗ Branch 227 not taken.
✓ Branch 229 taken 1 times.
✗ Branch 230 not taken.
✓ Branch 232 taken 1 times.
✗ Branch 233 not taken.
✓ Branch 235 taken 1 times.
✗ Branch 236 not taken.
✓ Branch 238 taken 1 times.
✗ Branch 239 not taken.
✓ Branch 241 taken 1 times.
✗ Branch 242 not taken.
✓ Branch 244 taken 1 times.
✗ Branch 245 not taken.
✓ Branch 247 taken 1 times.
✗ Branch 248 not taken.
✓ Branch 250 taken 1 times.
✗ Branch 251 not taken.
✓ Branch 253 taken 1 times.
✗ Branch 254 not taken.
✓ Branch 256 taken 1 times.
✗ Branch 257 not taken.
✓ Branch 259 taken 1 times.
✗ Branch 260 not taken.
✓ Branch 262 taken 1 times.
✗ Branch 263 not taken.
✓ Branch 265 taken 1 times.
✗ Branch 266 not taken.
✓ Branch 268 taken 1 times.
✗ Branch 269 not taken.
✓ Branch 271 taken 1 times.
✗ Branch 272 not taken.
✓ Branch 274 taken 1 times.
✗ Branch 275 not taken.
✓ Branch 277 taken 1 times.
✗ Branch 278 not taken.
✓ Branch 280 taken 1 times.
✗ Branch 281 not taken.
✓ Branch 283 taken 1 times.
✗ Branch 284 not taken.
✓ Branch 286 taken 1 times.
✗ Branch 287 not taken.
✓ Branch 289 taken 1 times.
✗ Branch 290 not taken.
✓ Branch 292 taken 1 times.
✗ Branch 293 not taken.
✓ Branch 295 taken 1 times.
✗ Branch 296 not taken.
✓ Branch 298 taken 1 times.
✗ Branch 299 not taken.
✓ Branch 301 taken 1 times.
✗ Branch 302 not taken.
✓ Branch 304 taken 1 times.
✗ Branch 305 not taken.
✓ Branch 307 taken 1 times.
✗ Branch 308 not taken.
✓ Branch 310 taken 1 times.
✗ Branch 311 not taken.
✓ Branch 313 taken 1 times.
✗ Branch 314 not taken.
✓ Branch 316 taken 1 times.
✗ Branch 317 not taken.
✓ Branch 319 taken 1 times.
✗ Branch 320 not taken.
✓ Branch 322 taken 1 times.
✗ Branch 323 not taken.
✓ Branch 325 taken 1 times.
✗ Branch 326 not taken.
✓ Branch 328 taken 1 times.
✗ Branch 329 not taken.
✓ Branch 331 taken 1 times.
✗ Branch 332 not taken.
✓ Branch 334 taken 1 times.
✗ Branch 335 not taken.
✓ Branch 337 taken 1 times.
✗ Branch 338 not taken.
✓ Branch 340 taken 1 times.
✗ Branch 341 not taken.
✓ Branch 343 taken 1 times.
✗ Branch 344 not taken.
✓ Branch 346 taken 1 times.
✗ Branch 347 not taken.
✓ Branch 349 taken 1 times.
✗ Branch 350 not taken.
✓ Branch 352 taken 1 times.
✗ Branch 353 not taken.
✓ Branch 355 taken 1 times.
✗ Branch 356 not taken.
123 yRangeIsSet_ = true;
306 }
307
308 /*!
309 * \brief Sets additional user-defined options
310 *
311 * \param option Additional line of option in gnuplot language
312 */
313 3047 void setOption(const std::string& option)
314 {
315
1/2
✓ Branch 2 taken 3047 times.
✗ Branch 3 not taken.
6094 plotOptions_ += option + "\n";
316 3047 }
317
318 /*!
319 * \brief Define whether the gnuplot window should be opened
320 *
321 * \param openPlotWindow Open gnuplot or not
322 */
323 151 void setOpenPlotWindow(bool openPlotWindow)
324 {
325
3/7
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✗ Branch 0 not taken.
151 openPlotWindow_ = openPlotWindow;
326 }
327
328 /*!
329 * \brief Define whether gnuplot should create .png files
330 *
331 * \param createImage Create an image or not
332 */
333 119 void setCreateImage(bool createImage)
334 {
335
119/238
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 1 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 1 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 1 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 1 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 1 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 1 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 1 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 1 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 1 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 1 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 1 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 1 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 1 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 1 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 1 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 1 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 1 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 1 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 1 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 1 times.
✗ Branch 134 not taken.
✓ Branch 136 taken 1 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 1 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 1 times.
✗ Branch 143 not taken.
✓ Branch 145 taken 1 times.
✗ Branch 146 not taken.
✓ Branch 148 taken 1 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 1 times.
✗ Branch 152 not taken.
✓ Branch 154 taken 1 times.
✗ Branch 155 not taken.
✓ Branch 157 taken 1 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 1 times.
✗ Branch 161 not taken.
✓ Branch 163 taken 1 times.
✗ Branch 164 not taken.
✓ Branch 166 taken 1 times.
✗ Branch 167 not taken.
✓ Branch 169 taken 1 times.
✗ Branch 170 not taken.
✓ Branch 172 taken 1 times.
✗ Branch 173 not taken.
✓ Branch 175 taken 1 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 1 times.
✗ Branch 179 not taken.
✓ Branch 181 taken 1 times.
✗ Branch 182 not taken.
✓ Branch 184 taken 1 times.
✗ Branch 185 not taken.
✓ Branch 187 taken 1 times.
✗ Branch 188 not taken.
✓ Branch 190 taken 1 times.
✗ Branch 191 not taken.
✓ Branch 193 taken 1 times.
✗ Branch 194 not taken.
✓ Branch 196 taken 1 times.
✗ Branch 197 not taken.
✓ Branch 199 taken 1 times.
✗ Branch 200 not taken.
✓ Branch 202 taken 1 times.
✗ Branch 203 not taken.
✓ Branch 205 taken 1 times.
✗ Branch 206 not taken.
✓ Branch 208 taken 1 times.
✗ Branch 209 not taken.
✓ Branch 211 taken 1 times.
✗ Branch 212 not taken.
✓ Branch 214 taken 1 times.
✗ Branch 215 not taken.
✓ Branch 217 taken 1 times.
✗ Branch 218 not taken.
✓ Branch 220 taken 1 times.
✗ Branch 221 not taken.
✓ Branch 223 taken 1 times.
✗ Branch 224 not taken.
✓ Branch 226 taken 1 times.
✗ Branch 227 not taken.
✓ Branch 229 taken 1 times.
✗ Branch 230 not taken.
✓ Branch 232 taken 1 times.
✗ Branch 233 not taken.
✓ Branch 235 taken 1 times.
✗ Branch 236 not taken.
✓ Branch 238 taken 1 times.
✗ Branch 239 not taken.
✓ Branch 241 taken 1 times.
✗ Branch 242 not taken.
✓ Branch 244 taken 1 times.
✗ Branch 245 not taken.
✓ Branch 247 taken 1 times.
✗ Branch 248 not taken.
✓ Branch 250 taken 1 times.
✗ Branch 251 not taken.
✓ Branch 253 taken 1 times.
✗ Branch 254 not taken.
✓ Branch 256 taken 1 times.
✗ Branch 257 not taken.
✓ Branch 259 taken 1 times.
✗ Branch 260 not taken.
✓ Branch 262 taken 1 times.
✗ Branch 263 not taken.
✓ Branch 265 taken 1 times.
✗ Branch 266 not taken.
✓ Branch 268 taken 1 times.
✗ Branch 269 not taken.
✓ Branch 271 taken 1 times.
✗ Branch 272 not taken.
✓ Branch 274 taken 1 times.
✗ Branch 275 not taken.
✓ Branch 277 taken 1 times.
✗ Branch 278 not taken.
✓ Branch 280 taken 1 times.
✗ Branch 281 not taken.
✓ Branch 283 taken 1 times.
✗ Branch 284 not taken.
✓ Branch 286 taken 1 times.
✗ Branch 287 not taken.
✓ Branch 289 taken 1 times.
✗ Branch 290 not taken.
✓ Branch 292 taken 1 times.
✗ Branch 293 not taken.
✓ Branch 295 taken 1 times.
✗ Branch 296 not taken.
✓ Branch 298 taken 1 times.
✗ Branch 299 not taken.
✓ Branch 301 taken 1 times.
✗ Branch 302 not taken.
✓ Branch 304 taken 1 times.
✗ Branch 305 not taken.
✓ Branch 307 taken 1 times.
✗ Branch 308 not taken.
✓ Branch 310 taken 1 times.
✗ Branch 311 not taken.
✓ Branch 313 taken 1 times.
✗ Branch 314 not taken.
✓ Branch 316 taken 1 times.
✗ Branch 317 not taken.
✓ Branch 319 taken 1 times.
✗ Branch 320 not taken.
✓ Branch 322 taken 1 times.
✗ Branch 323 not taken.
✓ Branch 325 taken 1 times.
✗ Branch 326 not taken.
✓ Branch 328 taken 1 times.
✗ Branch 329 not taken.
✓ Branch 331 taken 1 times.
✗ Branch 332 not taken.
✓ Branch 334 taken 1 times.
✗ Branch 335 not taken.
✓ Branch 337 taken 1 times.
✗ Branch 338 not taken.
✓ Branch 340 taken 1 times.
✗ Branch 341 not taken.
✓ Branch 343 taken 1 times.
✗ Branch 344 not taken.
✓ Branch 346 taken 1 times.
✗ Branch 347 not taken.
✓ Branch 349 taken 1 times.
✗ Branch 350 not taken.
✓ Branch 352 taken 1 times.
✗ Branch 353 not taken.
✓ Branch 355 taken 1 times.
✗ Branch 356 not taken.
119 createImage_ = createImage;
336 }
337
338 /*!
339 * \brief Sets the datafile separator
340 *
341 * \param separator The separator sign between two data columns
342 */
343 120 void setDatafileSeparator(char separator)
344 {
345
119/238
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 1 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 1 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 1 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 1 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 1 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 1 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 1 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 1 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 1 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 1 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 1 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 1 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 1 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 1 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 1 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 1 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 1 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 1 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 1 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 1 times.
✗ Branch 134 not taken.
✓ Branch 136 taken 1 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 1 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 1 times.
✗ Branch 143 not taken.
✓ Branch 145 taken 1 times.
✗ Branch 146 not taken.
✓ Branch 148 taken 1 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 1 times.
✗ Branch 152 not taken.
✓ Branch 154 taken 1 times.
✗ Branch 155 not taken.
✓ Branch 157 taken 1 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 1 times.
✗ Branch 161 not taken.
✓ Branch 163 taken 1 times.
✗ Branch 164 not taken.
✓ Branch 166 taken 1 times.
✗ Branch 167 not taken.
✓ Branch 169 taken 1 times.
✗ Branch 170 not taken.
✓ Branch 172 taken 1 times.
✗ Branch 173 not taken.
✓ Branch 175 taken 1 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 1 times.
✗ Branch 179 not taken.
✓ Branch 181 taken 1 times.
✗ Branch 182 not taken.
✓ Branch 184 taken 1 times.
✗ Branch 185 not taken.
✓ Branch 187 taken 1 times.
✗ Branch 188 not taken.
✓ Branch 190 taken 1 times.
✗ Branch 191 not taken.
✓ Branch 193 taken 1 times.
✗ Branch 194 not taken.
✓ Branch 196 taken 1 times.
✗ Branch 197 not taken.
✓ Branch 199 taken 1 times.
✗ Branch 200 not taken.
✓ Branch 202 taken 1 times.
✗ Branch 203 not taken.
✓ Branch 205 taken 1 times.
✗ Branch 206 not taken.
✓ Branch 208 taken 1 times.
✗ Branch 209 not taken.
✓ Branch 211 taken 1 times.
✗ Branch 212 not taken.
✓ Branch 214 taken 1 times.
✗ Branch 215 not taken.
✓ Branch 217 taken 1 times.
✗ Branch 218 not taken.
✓ Branch 220 taken 1 times.
✗ Branch 221 not taken.
✓ Branch 223 taken 1 times.
✗ Branch 224 not taken.
✓ Branch 226 taken 1 times.
✗ Branch 227 not taken.
✓ Branch 229 taken 1 times.
✗ Branch 230 not taken.
✓ Branch 232 taken 1 times.
✗ Branch 233 not taken.
✓ Branch 235 taken 1 times.
✗ Branch 236 not taken.
✓ Branch 238 taken 1 times.
✗ Branch 239 not taken.
✓ Branch 241 taken 1 times.
✗ Branch 242 not taken.
✓ Branch 244 taken 1 times.
✗ Branch 245 not taken.
✓ Branch 247 taken 1 times.
✗ Branch 248 not taken.
✓ Branch 250 taken 1 times.
✗ Branch 251 not taken.
✓ Branch 253 taken 1 times.
✗ Branch 254 not taken.
✓ Branch 256 taken 1 times.
✗ Branch 257 not taken.
✓ Branch 259 taken 1 times.
✗ Branch 260 not taken.
✓ Branch 262 taken 1 times.
✗ Branch 263 not taken.
✓ Branch 265 taken 1 times.
✗ Branch 266 not taken.
✓ Branch 268 taken 1 times.
✗ Branch 269 not taken.
✓ Branch 271 taken 1 times.
✗ Branch 272 not taken.
✓ Branch 274 taken 1 times.
✗ Branch 275 not taken.
✓ Branch 277 taken 1 times.
✗ Branch 278 not taken.
✓ Branch 280 taken 1 times.
✗ Branch 281 not taken.
✓ Branch 283 taken 1 times.
✗ Branch 284 not taken.
✓ Branch 286 taken 1 times.
✗ Branch 287 not taken.
✓ Branch 289 taken 1 times.
✗ Branch 290 not taken.
✓ Branch 292 taken 1 times.
✗ Branch 293 not taken.
✓ Branch 295 taken 1 times.
✗ Branch 296 not taken.
✓ Branch 298 taken 1 times.
✗ Branch 299 not taken.
✓ Branch 301 taken 1 times.
✗ Branch 302 not taken.
✓ Branch 304 taken 1 times.
✗ Branch 305 not taken.
✓ Branch 307 taken 1 times.
✗ Branch 308 not taken.
✓ Branch 310 taken 1 times.
✗ Branch 311 not taken.
✓ Branch 313 taken 1 times.
✗ Branch 314 not taken.
✓ Branch 316 taken 1 times.
✗ Branch 317 not taken.
✓ Branch 319 taken 1 times.
✗ Branch 320 not taken.
✓ Branch 322 taken 1 times.
✗ Branch 323 not taken.
✓ Branch 325 taken 1 times.
✗ Branch 326 not taken.
✓ Branch 328 taken 1 times.
✗ Branch 329 not taken.
✓ Branch 331 taken 1 times.
✗ Branch 332 not taken.
✓ Branch 334 taken 1 times.
✗ Branch 335 not taken.
✓ Branch 337 taken 1 times.
✗ Branch 338 not taken.
✓ Branch 340 taken 1 times.
✗ Branch 341 not taken.
✓ Branch 343 taken 1 times.
✗ Branch 344 not taken.
✓ Branch 346 taken 1 times.
✗ Branch 347 not taken.
✓ Branch 349 taken 1 times.
✗ Branch 350 not taken.
✓ Branch 352 taken 1 times.
✗ Branch 353 not taken.
✓ Branch 355 taken 1 times.
✗ Branch 356 not taken.
120 datafileSeparator_ = separator;
346 }
347
348 /*!
349 * \brief Sets the terminal used for interactive output
350 *
351 * \param terminal The user-specified terminal
352 */
353 void setTerminalType(std::string terminal)
354 {
355 terminalType_ = terminal;
356 }
357
358 /*!
359 * \brief Sets the output directory for data and gnuplot files
360 *
361 * \param outputDirectory The user-specified terminal
362 */
363 1 void setOutputDirectory(const std::string& outputDirectory)
364 {
365 1 outputDirectory_ = outputDirectory + "/";
366 1 }
367
368 /*!
369 * \brief Use dashed (true) or solid (false) lines
370 *
371 * \param dashed Use dashed lines
372 */
373 void useDashedLines(bool dashed)
374 {
375 linetype_ = dashed ? "dashed" : "solid";
376 }
377
378 private:
379 // Give plot command to gnuplot
380 1536 void executeGnuplot(const std::string& plotCommand, std::FILE * pipe) const
381 {
382 #ifdef DUMUX_HAVE_GNUPLOT
383 fputs((plotCommand + "\n").c_str(), pipe);
384 fflush(pipe);
385 #else
386 1536 std::cerr << "Warning: Gnuplot has not been found by CMake, no image generation or interactive display possible." << std::endl;
387 1536 std::cerr << "Note: The data and the gnuplot instruction file will still be created." << std::endl;
388 #endif
389 1536 }
390
391 // Check validity of number
392 1152776 void checkNumber(Scalar number, const std::string& text = "") const
393 {
394 using std::isnan;
395 using std::isinf;
396
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1152776 times.
1152776 if (isnan(number))
397 Dune::dwarn << "warning: " << text << " is not a number, adjust your data range" << std::endl;
398
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1152776 times.
1152776 if (isinf(number))
399 Dune::dwarn << "warning: " << text << " is infinity, adjust your data range" << std::endl;
400 1152776 }
401
402 // Convert string with higher precision
403 template <typename T>
404 2378 std::string toStringWithPrecision(const T value, const int n = 8)
405 {
406 2378 std::ostringstream out;
407
2/4
✓ Branch 1 taken 2378 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2378 times.
✗ Branch 5 not taken.
2378 out << std::setprecision(n) << value;
408 2378 return out.str();
409 2378 }
410
411 std::FILE * pipeInteractive_;
412 std::FILE * pipeImage_;
413 bool openPlotWindow_;
414 bool persist_;
415 bool createImage_;
416 std::string terminalType_;
417 std::string outputDirectory_;
418 char datafileSeparator_;
419 std::string linetype_;
420 StringVector curve_;
421 StringVector curveOptions_;
422 CurveTypeVector curveType_;
423 Scalar xRangeMin_;
424 Scalar xRangeMax_;
425 bool xRangeIsSet_;
426 Scalar yRangeMin_;
427 Scalar yRangeMax_;
428 bool yRangeIsSet_;
429 std::string xLabel_;
430 std::string yLabel_;
431 std::string plotOptions_;
432 std::string gnuplotPath_;
433 };
434 } // end namespace Dumux
435 #endif
436