From fb43f50d1fe0bd85029c867c493190545e6e4b51 Mon Sep 17 00:00:00 2001 From: Martin Karlsson <letter2martin@gmail.com> Date: Tue, 16 Feb 2016 16:41:19 +0100 Subject: [PATCH] add gnuplot --- README.txt | 11 + gnuplot-cpp/Makefile | 20 + gnuplot-cpp/doc/Doxyfile | 246 +++++ gnuplot-cpp/example | Bin 0 -> 250168 bytes gnuplot-cpp/example.cc | 260 +++++ gnuplot-cpp/gnuplot_i.hpp | 1957 ++++++++++++++++++++++++++++++++++++ gnuplot-cpp/test_output.ps | 1899 ++++++++++++++++++++++++++++++++++ 7 files changed, 4393 insertions(+) create mode 100644 README.txt create mode 100644 gnuplot-cpp/Makefile create mode 100644 gnuplot-cpp/doc/Doxyfile create mode 100755 gnuplot-cpp/example create mode 100644 gnuplot-cpp/example.cc create mode 100644 gnuplot-cpp/gnuplot_i.hpp create mode 100644 gnuplot-cpp/test_output.ps diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..030670e --- /dev/null +++ b/README.txt @@ -0,0 +1,11 @@ +This is a code example of modification of DMPs. + +Requirements: + +g++ compiler + +Armadillo C++ Linear Algebra Library +http://arma.sourceforge.net/ + +Note: Before installing Armadillo, it's required to have LAPACK and BLAS installed, along with the corresponding development/header files. + diff --git a/gnuplot-cpp/Makefile b/gnuplot-cpp/Makefile new file mode 100644 index 0000000..9dbfe1a --- /dev/null +++ b/gnuplot-cpp/Makefile @@ -0,0 +1,20 @@ +CFLAGS = -ggdb +DEFINES = -DDEBUGGA +INCLUDES = +LIBS = -lstdc++ +EXAMPLE = example.o +CC=g++ + +.cc.o: + $(CC) -c $(CFLAGS) $(DEFINES) $(INCLUDES) $< + +all:: example + +gnuplot_i.o: gnuplot_i.hpp +example.o: example.cc + +example: $(EXAMPLE) + $(CC) -o $@ $(CFLAGS) $(EXAMPLE) $(LIBS) + +clean: + rm -f $(EXAMPLE) example diff --git a/gnuplot-cpp/doc/Doxyfile b/gnuplot-cpp/doc/Doxyfile new file mode 100644 index 0000000..ee1462c --- /dev/null +++ b/gnuplot-cpp/doc/Doxyfile @@ -0,0 +1,246 @@ +# Doxyfile 1.5.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = gnuplot-cpp +PROJECT_NUMBER = 0.9 +OUTPUT_DIRECTORY = ./ +CREATE_SUBDIRS = YES +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +TYPEDEF_HIDES_STRUCT = NO +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ../ +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = ../example.cc +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = YES +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +HTML_DYNAMIC_SECTIONS = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +FORMULA_FONTSIZE = 10 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +MSCGEN_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +DOT_FONTNAME = FreeSans +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = YES +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/gnuplot-cpp/example b/gnuplot-cpp/example new file mode 100755 index 0000000000000000000000000000000000000000..73a6e690c79be95da0ff2781261f576768c005fd GIT binary patch literal 250168 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 literal 0 HcmV?d00001 diff --git a/gnuplot-cpp/example.cc b/gnuplot-cpp/example.cc new file mode 100644 index 0000000..3bbb69e --- /dev/null +++ b/gnuplot-cpp/example.cc @@ -0,0 +1,260 @@ +// Example for C++ Interface to Gnuplot + +// requirements: +// * gnuplot has to be installed (http://www.gnuplot.info/download.html) +// * for Windows: set Path-Variable for Gnuplot path (e.g. C:/program files/gnuplot/bin) +// or set Gnuplot path with: Gnuplot::set_GNUPlotPath(const std::string &path); + + +#include <iostream> +#include "gnuplot_i.hpp" //Gnuplot class handles POSIX-Pipe-communikation with Gnuplot + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + #include <conio.h> //for getch(), needed in wait_for_key() + #include <windows.h> //for Sleep() + void sleep(int i) { Sleep(i*1000); } +#endif + + +#define SLEEP_LGTH 2 // sleep time in seconds +#define NPOINTS 50 // length of array + +void wait_for_key(); // Programm halts until keypress + +using std::cout; +using std::endl; + +int main(int argc, char* argv[]) +{ + // if path-variable for gnuplot is not set, do it with: + // Gnuplot::set_GNUPlotPath("C:/program files/gnuplot/bin/"); + + // set a special standard terminal for showonscreen (normally not needed), + // e.g. Mac users who want to use x11 instead of aqua terminal: + // Gnuplot::set_terminal_std("x11"); + + cout << "*** example of gnuplot control through C++ ***" << endl << endl; + + // + // Using the GnuplotException class + // + try + { + Gnuplot g1("lines"); + + // + // Slopes + // + cout << "*** plotting slopes" << endl; + g1.set_title("Slopes\\nNew Line"); + + cout << "y = x" << endl; + g1.plot_slope(1.0,0.0,"y=x"); + + cout << "y = 2*x" << endl; + g1.plot_slope(2.0,0.0,"y=2x"); + + cout << "y = -x" << endl; + g1.plot_slope(-1.0,0.0,"y=-x"); + g1.unset_title(); + + // + // Equations + // + g1.reset_plot(); + cout << endl << endl << "*** various equations" << endl; + + cout << "y = sin(x)" << endl; + g1.plot_equation("sin(x)","sine"); + + cout << "y = log(x)" << endl; + g1.plot_equation("log(x)","logarithm"); + + cout << "y = sin(x) * cos(2*x)" << endl; + g1.plot_equation("sin(x)*cos(2*x)","sine product"); + + // + // Styles + // + g1.reset_plot(); + cout << endl << endl << "*** showing styles" << endl; + + cout << "sine in points" << endl; + g1.set_pointsize(0.8).set_style("points"); + g1.plot_equation("sin(x)","points"); + + cout << "sine in impulses" << endl; + g1.set_style("impulses"); + g1.plot_equation("sin(x)","impulses"); + + cout << "sine in steps" << endl; + g1.set_style("steps"); + g1.plot_equation("sin(x)","steps"); + + // + // Save to ps + // + g1.reset_all(); + cout << endl << endl << "*** save to ps " << endl; + + cout << "y = sin(x) saved to test_output.ps in working directory" << endl; + g1.savetops("test_output"); + g1.set_style("lines").set_samples(300).set_xrange(0,5); + g1.plot_equation("sin(12*x)*exp(-x)").plot_equation("exp(-x)"); + + g1.showonscreen(); // window output + + + // + // User defined 1d, 2d and 3d point sets + // + std::vector<double> x, y, y2, dy, z; + + for (int i = 0; i < NPOINTS; i++) // fill double arrays x, y, z + { + x.push_back((double)i); // x[i] = i + y.push_back((double)i * (double)i); // y[i] = i^2 + z.push_back( x[i]*y[i] ); // z[i] = x[i]*y[i] = i^3 + dy.push_back((double)i * (double)i / (double) 10); // dy[i] = i^2 / 10 + } + y2.push_back(0.00); y2.push_back(0.78); y2.push_back(0.97); y2.push_back(0.43); + y2.push_back(-0.44); y2.push_back(-0.98); y2.push_back(-0.77); y2.push_back(0.02); + + + g1.reset_all(); + cout << endl << endl << "*** user-defined lists of doubles" << endl; + g1.set_style("impulses").plot_x(y,"user-defined doubles"); + + g1.reset_plot(); + cout << endl << endl << "*** user-defined lists of points (x,y)" << endl; + g1.set_grid(); + g1.set_style("points").plot_xy(x,y,"user-defined points 2d"); + + g1.reset_plot(); + cout << endl << endl << "*** user-defined lists of points (x,y,z)" << endl; + g1.unset_grid(); + g1.plot_xyz(x,y,z,"user-defined points 3d"); + + wait_for_key(); + + g1.reset_plot(); + cout << endl << endl << "*** user-defined lists of points (x,y,dy)" << endl; + g1.plot_xy_err(x,y,dy,"user-defined points 2d with errorbars"); + + + // + // Multiple output screens + // + cout << endl << endl; + cout << "*** multiple output windows" << endl; + + g1.reset_plot(); + g1.set_style("lines"); + cout << "window 1: sin(x)" << endl; + g1.set_grid().set_samples(600).set_xrange(0,300); + g1.plot_equation("sin(x)+sin(x*1.1)"); + + g1.set_xautoscale().replot(); + + Gnuplot g2; + cout << "window 2: user defined points" << endl; + g2.plot_x(y2,"points"); + g2.set_smooth().plot_x(y2,"cspline"); + g2.set_smooth("bezier").plot_x(y2,"bezier"); + g2.unset_smooth(); + + Gnuplot g3("lines"); + cout << "window 3: log(x)/x" << endl; + g3.set_grid(); + g3.plot_equation("log(x)/x","log(x)/x"); + + Gnuplot g4("lines"); + cout << "window 4: splot x*x+y*y" << endl; + g4.set_zrange(0,100); + g4.set_xlabel("x-axis").set_ylabel("y-axis").set_zlabel("z-axis"); + g4.plot_equation3d("x*x+y*y"); + + Gnuplot g5("lines"); + cout << "window 5: splot with hidden3d" << endl; + g5.set_isosamples(25).set_hidden3d(); + g5.plot_equation3d("x*y*y"); + + Gnuplot g6("lines"); + cout << "window 6: splot with contour" << endl; + g6.set_isosamples(60).set_contour(); + g6.unset_surface().plot_equation3d("sin(x)*sin(y)+4"); + + g6.set_surface().replot(); + + Gnuplot g7("lines"); + cout << "window 7: set_samples" << endl; + g7.set_xrange(-30,20).set_samples(40); + g7.plot_equation("besj0(x)*0.12e1").plot_equation("(x**besj0(x))-2.5"); + + g7.set_samples(400).replot(); + + Gnuplot g8("filledcurves"); + cout << "window 8: filledcurves" << endl; + g8.set_legend("outside right top").set_xrange(-5,5); + g8.plot_equation("x*x").plot_equation("-x*x+4"); + + // + // Plot an image + // + Gnuplot g9; + cout << "window 9: plot_image" << endl; + const int iWidth = 255; + const int iHeight = 255; + g9.set_xrange(0,iWidth).set_yrange(0,iHeight).set_cbrange(0,255); + g9.cmd("set palette gray"); + unsigned char ucPicBuf[iWidth*iHeight]; + // generate a greyscale image + for(int iIndex = 0; iIndex < iHeight*iWidth; iIndex++) + { + ucPicBuf[iIndex] = iIndex%255; + } + g9.plot_image(ucPicBuf,iWidth,iHeight,"greyscale"); + + g9.set_pointsize(0.6).unset_legend().plot_slope(0.8,20); + + // + // manual control + // + Gnuplot g10; + cout << "window 10: manual control" << endl; + g10.cmd("set samples 400").cmd("plot abs(x)/2"); // either with cmd() + g10 << "replot sqrt(x)" << "replot sqrt(-x)"; // or with << + + wait_for_key(); + + } + catch (GnuplotException ge) + { + cout << ge.what() << endl; + } + + + cout << endl << "*** end of gnuplot example" << endl; + + return 0; + +} + + + +void wait_for_key () +{ +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) // every keypress registered, also arrow keys + cout << endl << "Press any key to continue..." << endl; + + FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); + _getch(); +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + cout << endl << "Press ENTER to continue..." << endl; + + std::cin.clear(); + std::cin.ignore(std::cin.rdbuf()->in_avail()); + std::cin.get(); +#endif + return; +} diff --git a/gnuplot-cpp/gnuplot_i.hpp b/gnuplot-cpp/gnuplot_i.hpp new file mode 100644 index 0000000..7d0a95d --- /dev/null +++ b/gnuplot-cpp/gnuplot_i.hpp @@ -0,0 +1,1957 @@ +//////////////////////////////////////////////////////////////////////////////// +/// +/// \brief A C++ interface to gnuplot. +/// +/// +/// The interface uses pipes and so won't run on a system that doesn't have +/// POSIX pipe support Tested on Windows (MinGW and Visual C++) and Linux (GCC) +/// +/// Version history: +/// 0. C interface +/// by N. Devillard (27/01/03) +/// 1. C++ interface: direct translation from the C interface +/// by Rajarshi Guha (07/03/03) +/// 2. corrections for Win32 compatibility +/// by V. Chyzhdzenka (20/05/03) +/// 3. some member functions added, corrections for Win32 and Linux +/// compatibility +/// by M. Burgis (10/03/08) +/// +/// Requirements: +/// * gnuplot has to be installed (http://www.gnuplot.info/download.html) +/// * for Windows: set Path-Variable for Gnuplot path +/// (e.g. C:/program files/gnuplot/bin) +/// or set Gnuplot path with: +/// Gnuplot::set_GNUPlotPath(const std::string &path); +/// +//////////////////////////////////////////////////////////////////////////////// + + +#ifndef _GNUPLOT_PIPES_H_ +#define _GNUPLOT_PIPES_H_ + + +#include <iostream> +#include <string> +#include <vector> +#include <fstream> +#include <sstream> // for std::ostringstream +#include <stdexcept> +#include <cstdio> +#include <cstdlib> // for getenv() +#include <list> // for std::list + + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) +//defined for 32 and 64-bit environments + #include <io.h> // for _access(), _mktemp() + #define GP_MAX_TMP_FILES 27 // 27 temporary files it's Microsoft restriction +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) +//all UNIX-like OSs (Linux, *BSD, MacOSX, Solaris, ...) + #include <unistd.h> // for access(), mkstemp() + #define GP_MAX_TMP_FILES 64 +#else + #error unsupported or unknown operating system +#endif + +//declare classes in global namespace + + +class GnuplotException : public std::runtime_error +{ + public: + GnuplotException(const std::string &msg) : std::runtime_error(msg){} +}; + + + +class Gnuplot +{ + private: + + //---------------------------------------------------------------------------------- + // member data + ///\brief pointer to the stream that can be used to write to the pipe + FILE *gnucmd; + ///\brief validation of gnuplot session + bool valid; + ///\brief true = 2d, false = 3d + bool two_dim; + ///\brief number of plots in session + int nplots; + ///\brief functions and data are displayed in a defined styles + std::string pstyle; + ///\brief interpolate and approximate data in defined styles (e.g. spline) + std::string smooth; + ///\brief list of created tmpfiles + std::vector<std::string> tmpfile_list; + + //---------------------------------------------------------------------------------- + // static data + ///\brief number of all tmpfiles (number of tmpfiles restricted) + static int tmpfile_num; + ///\brief name of executed GNUPlot file + static std::string m_sGNUPlotFileName; + ///\brief gnuplot path + static std::string m_sGNUPlotPath; + ///\brief standart terminal, used by showonscreen + static std::string terminal_std; + + //---------------------------------------------------------------------------------- + // member functions (auxiliary functions) + // --------------------------------------------------- + ///\brief get_program_path(); and popen(); + /// + /// \param --> void + /// + /// \return <-- void + // --------------------------------------------------- + void init(); + // --------------------------------------------------- + ///\brief creates tmpfile and returns its name + /// + /// \param tmp --> points to the tempfile + /// + /// \return <-- the name of the tempfile + // --------------------------------------------------- + std::string create_tmpfile(std::ofstream &tmp); + + //---------------------------------------------------------------------------------- + ///\brief gnuplot path found? + /// + /// \param --- + /// + /// \return <-- found the gnuplot path (yes == true, no == false) + // --------------------------------------------------------------------------------- + static bool get_program_path(); + + // --------------------------------------------------------------------------------- + ///\brief checks if file is available + /// + /// \param filename --> the filename + /// \param mode --> the mode [optional,default value = 0] + /// + /// \return file exists (yes == true, no == false) + // --------------------------------------------------------------------------------- + bool file_available(const std::string &filename); + + // --------------------------------------------------------------------------------- + ///\brief checks if file exists + /// + /// \param filename --> the filename + /// \param mode --> the mode [optional,default value = 0] + /// + /// \return file exists (yes == true, no == false) + // --------------------------------------------------------------------------------- + static bool file_exists(const std::string &filename, int mode=0); + + public: + + // ---------------------------------------------------------------------------- + /// \brief optional function: set Gnuplot path manual + /// attention: for windows: path with slash '/' not backslash '\' + /// + /// \param path --> the gnuplot path + /// + /// \return true on success, false otherwise + // ---------------------------------------------------------------------------- + static bool set_GNUPlotPath(const std::string &path); + + + // ---------------------------------------------------------------------------- + /// optional: set standart terminal, used by showonscreen + /// defaults: Windows - win, Linux - x11, Mac - aqua + /// + /// \param type --> the terminal type + /// + /// \return --- + // ---------------------------------------------------------------------------- + static void set_terminal_std(const std::string &type); + + //----------------------------------------------------------------------------- + // constructors + // ---------------------------------------------------------------------------- + + + ///\brief set a style during construction + Gnuplot(const std::string &style = "points"); + + /// plot a single std::vector at one go + Gnuplot(const std::vector<double> &x, + const std::string &title = "", + const std::string &style = "points", + const std::string &labelx = "x", + const std::string &labely = "y"); + + /// plot pairs std::vector at one go + Gnuplot(const std::vector<double> &x, + const std::vector<double> &y, + const std::string &title = "", + const std::string &style = "points", + const std::string &labelx = "x", + const std::string &labely = "y"); + + /// plot triples std::vector at one go + Gnuplot(const std::vector<double> &x, + const std::vector<double> &y, + const std::vector<double> &z, + const std::string &title = "", + const std::string &style = "points", + const std::string &labelx = "x", + const std::string &labely = "y", + const std::string &labelz = "z"); + + /// destructor: needed to delete temporary files + ~Gnuplot(); + + + //---------------------------------------------------------------------------------- + + /// send a command to gnuplot + Gnuplot& cmd(const std::string &cmdstr); + // --------------------------------------------------------------------------------- + ///\brief Sends a command to an active gnuplot session, identical to cmd() + /// send a command to gnuplot using the << operator + /// + /// \param cmdstr --> the command string + /// + /// \return <-- a reference to the gnuplot object + // --------------------------------------------------------------------------------- + inline Gnuplot& operator<<(const std::string &cmdstr){ + cmd(cmdstr); + return(*this); + } + + + + //---------------------------------------------------------------------------------- + // show on screen or write to file + + /// sets terminal type to terminal_std + Gnuplot& showonscreen(); // window output is set by default (win/x11/aqua) + + /// saves a gnuplot session to a postscript file, filename without extension + Gnuplot& savetops(const std::string &filename = "gnuplot_output"); + + + //---------------------------------------------------------------------------------- + // set and unset + + /// set line style (some of these styles require additional information): + /// lines, points, linespoints, impulses, dots, steps, fsteps, histeps, + /// boxes, histograms, filledcurves + Gnuplot& set_style(const std::string &stylestr = "points"); + + /// interpolation and approximation of data, arguments: + /// csplines, bezier, acsplines (for data values > 0), sbezier, unique, frequency + /// (works only with plot_x, plot_xy, plotfile_x, plotfile_xy + /// (if smooth is set, set_style has no effekt on data plotting) + Gnuplot& set_smooth(const std::string &stylestr = "csplines"); + + // ---------------------------------------------------------------------- + /// \brief unset smooth + /// attention: smooth is not set by default + /// + /// \param --- + /// + /// \return <-- a reference to a gnuplot object + // ---------------------------------------------------------------------- + inline Gnuplot& unset_smooth(){ smooth = ""; return *this;}; + + + /// scales the size of the points used in plots + Gnuplot& set_pointsize(const double pointsize = 1.0); + + /// turns grid on/off + inline Gnuplot& set_grid() {cmd("set grid");return *this;}; + /// grid is not set by default + inline Gnuplot& unset_grid(){cmd("unset grid");return *this;}; + + // ----------------------------------------------- + /// set the mulitplot mode + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& set_multiplot(){cmd("set multiplot") ;return *this;}; + + // ----------------------------------------------- + /// unsets the mulitplot mode + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& unset_multiplot(){cmd("unset multiplot");return *this;}; + + + + /// set sampling rate of functions, or for interpolating data + Gnuplot& set_samples(const int samples = 100); + /// set isoline density (grid) for plotting functions as surfaces (for 3d plots) + Gnuplot& set_isosamples(const int isolines = 10); + + // -------------------------------------------------------------------------- + /// enables/disables hidden line removal for surface plotting (for 3d plot) + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // -------------------------------------------------------------------------- + Gnuplot& set_hidden3d(){cmd("set hidden3d");return *this;}; + + // --------------------------------------------------------------------------- + /// hidden3d is not set by default + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // --------------------------------------------------------------------------- + inline Gnuplot& unset_hidden3d(){cmd("unset hidden3d"); return *this;}; + + /// enables/disables contour drawing for surfaces (for 3d plot) + /// base, surface, both + Gnuplot& set_contour(const std::string &position = "base"); + // -------------------------------------------------------------------------- + /// contour is not set by default, it disables contour drawing for surfaces + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ------------------------------------------------------------------ + inline Gnuplot& unset_contour(){cmd("unset contour");return *this;}; + + // ------------------------------------------------------------ + /// enables/disables the display of surfaces (for 3d plot) + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ------------------------------------------------------------------ + inline Gnuplot& set_surface(){cmd("set surface");return *this;}; + + // ---------------------------------------------------------- + /// surface is set by default, + /// it disables the display of surfaces (for 3d plot) + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ------------------------------------------------------------------ + inline Gnuplot& unset_surface(){cmd("unset surface"); return *this;} + + + /// switches legend on/off + /// position: inside/outside, left/center/right, top/center/bottom, nobox/box + Gnuplot& set_legend(const std::string &position = "default"); + + // ------------------------------------------------------------------ + /// \brief Switches legend off + /// attention:legend is set by default + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ------------------------------------------------------------------ + inline Gnuplot& unset_legend(){cmd("unset key"); return *this;} + + // ----------------------------------------------------------------------- + /// \brief sets and clears the title of a gnuplot session + /// + /// \param title --> the title of the plot [optional, default == ""] + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------------------------------- + inline Gnuplot& set_title(const std::string &title = "") + { + std::string cmdstr; + cmdstr = "set title \""; + cmdstr+=title; + cmdstr+="\""; + *this<<cmdstr; + return *this; + } + + //---------------------------------------------------------------------------------- + ///\brief Clears the title of a gnuplot session + /// The title is not set by default. + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // --------------------------------------------------------------------------------- + inline Gnuplot& unset_title(){this->set_title();return *this;} + + + /// set x axis label + Gnuplot& set_ylabel(const std::string &label = "x"); + /// set y axis label + Gnuplot& set_xlabel(const std::string &label = "y"); + /// set z axis label + Gnuplot& set_zlabel(const std::string &label = "z"); + + /// set axis - ranges + Gnuplot& set_xrange(const double iFrom, + const double iTo); + /// set y-axis - ranges + Gnuplot& set_yrange(const double iFrom, + const double iTo); + /// set z-axis - ranges + Gnuplot& set_zrange(const double iFrom, + const double iTo); + /// autoscale axis (set by default) of xaxis + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& set_xautoscale(){cmd("set xrange restore");cmd("set autoscale x");return *this;}; + + // ----------------------------------------------- + /// autoscale axis (set by default) of yaxis + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& set_yautoscale(){cmd("set yrange restore");cmd("set autoscale y");return *this;}; + + // ----------------------------------------------- + /// autoscale axis (set by default) of zaxis + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& set_zautoscale(){cmd("set zrange restore");cmd("set autoscale z");return *this;}; + + + /// turns on/off log scaling for the specified xaxis (logscale is not set by default) + Gnuplot& set_xlogscale(const double base = 10); + /// turns on/off log scaling for the specified yaxis (logscale is not set by default) + Gnuplot& set_ylogscale(const double base = 10); + /// turns on/off log scaling for the specified zaxis (logscale is not set by default) + Gnuplot& set_zlogscale(const double base = 10); + + // ----------------------------------------------- + /// turns off log scaling for the x axis + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& unset_xlogscale(){cmd("unset logscale x"); return *this;}; + + // ----------------------------------------------- + /// turns off log scaling for the y axis + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& unset_ylogscale(){cmd("unset logscale y"); return *this;}; + + // ----------------------------------------------- + /// turns off log scaling for the z axis + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& unset_zlogscale(){cmd("unset logscale z"); return *this;}; + + + /// set palette range (autoscale by default) + Gnuplot& set_cbrange(const double iFrom, const double iTo); + + + //---------------------------------------------------------------------------------- + // plot + + /// plot a single std::vector: x + /// from file + Gnuplot& plotfile_x(const std::string &filename, + const unsigned int column = 1, + const std::string &title = ""); + /// from std::vector + template<typename X> + Gnuplot& plot_x(const X& x, const std::string &title = ""); + + + /// plot x,y pairs: x y + /// from file + Gnuplot& plotfile_xy(const std::string &filename, + const unsigned int column_x = 1, + const unsigned int column_y = 2, + const std::string &title = ""); + /// from data + template<typename X, typename Y> + Gnuplot& plot_xy(const X& x, const Y& y, const std::string &title = ""); + + + /// plot x,y pairs with dy errorbars: x y dy + /// from file + Gnuplot& plotfile_xy_err(const std::string &filename, + const unsigned int column_x = 1, + const unsigned int column_y = 2, + const unsigned int column_dy = 3, + const std::string &title = ""); + /// from data + template<typename X, typename Y, typename E> + Gnuplot& plot_xy_err(const X &x, const Y &y, const E &dy, + const std::string &title = ""); + + + /// plot x,y,z triples: x y z + /// from file + Gnuplot& plotfile_xyz(const std::string &filename, + const unsigned int column_x = 1, + const unsigned int column_y = 2, + const unsigned int column_z = 3, + const std::string &title = ""); + /// from std::vector + template<typename X, typename Y, typename Z> + Gnuplot& plot_xyz(const X &x, + const Y &y, + const Z &z, + const std::string &title = ""); + + + + /// plot an equation of the form: y = ax + b, you supply a and b + Gnuplot& plot_slope(const double a, + const double b, + const std::string &title = ""); + + + /// plot an equation supplied as a std::string y=f(x), write only the function f(x) not y= + /// the independent variable has to be x + /// binary operators: ** exponentiation, * multiply, / divide, + add, - substract, % modulo + /// unary operators: - minus, ! factorial + /// elementary functions: rand(x), abs(x), sgn(x), ceil(x), floor(x), int(x), imag(x), real(x), arg(x), + /// sqrt(x), exp(x), log(x), log10(x), sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(y,x), + /// sinh(x), cosh(x), tanh(x), asinh(x), acosh(x), atanh(x) + /// special functions: erf(x), erfc(x), inverf(x), gamma(x), igamma(a,x), lgamma(x), ibeta(p,q,x), + /// besj0(x), besj1(x), besy0(x), besy1(x), lambertw(x) + /// statistical fuctions: norm(x), invnorm(x) + Gnuplot& plot_equation(const std::string &equation, + const std::string &title = ""); + + /// plot an equation supplied as a std::string z=f(x,y), write only the function f(x,y) not z= + /// the independent variables have to be x and y + Gnuplot& plot_equation3d(const std::string &equation, + const std::string &title = ""); + + + /// plot image + Gnuplot& plot_image(const unsigned char *ucPicBuf, + const unsigned int iWidth, + const unsigned int iHeight, + const std::string &title = ""); + + + //---------------------------------------------------------------------------------- + ///\brief replot repeats the last plot or splot command. + /// this can be useful for viewing a plot with different set options, + /// or when generating the same plot for several devices (showonscreen, savetops) + /// + /// \param --- + /// + /// \return --- + //---------------------------------------------------------------------------------- + inline Gnuplot& replot(void){if (nplots > 0) cmd("replot");return *this;}; + + /// resets a gnuplot session (next plot will erase previous ones) + Gnuplot& reset_plot(); + + /// resets a gnuplot session and sets all variables to default + Gnuplot& reset_all(); + + /// deletes temporary files + void remove_tmpfiles(); + + // ------------------------------------------------------------------- + /// \brief Is the gnuplot session valid ?? + /// + /// + /// \param --- + /// + /// \return true if valid, false if not + // ------------------------------------------------------------------- + inline bool is_valid(){return(valid);}; + +}; + +//------------------------------------------------------------------------------ +// +// initialize static data +// +int Gnuplot::tmpfile_num = 0; + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) +std::string Gnuplot::m_sGNUPlotFileName = "pgnuplot.exe"; +std::string Gnuplot::m_sGNUPlotPath = "C:/program files/gnuplot/bin/"; +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) +std::string Gnuplot::m_sGNUPlotFileName = "gnuplot"; +std::string Gnuplot::m_sGNUPlotPath = "/usr/local/bin/"; +#endif + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) +std::string Gnuplot::terminal_std = "windows"; +#elif ( defined(unix) || defined(__unix) || defined(__unix__) ) && !defined(__APPLE__) +std::string Gnuplot::terminal_std = "x11"; +#elif defined(__APPLE__) +std::string Gnuplot::terminal_std = "aqua"; +#endif + +//------------------------------------------------------------------------------ +// +// constructor: set a style during construction +// +inline Gnuplot::Gnuplot(const std::string &style) + :gnucmd(NULL) ,valid(false) ,two_dim(false) ,nplots(0) + +{ + init(); + set_style(style); +} + +//------------------------------------------------------------------------------ +// +// constructor: open a new session, plot a signal (x) +// +inline Gnuplot::Gnuplot(const std::vector<double> &x, + const std::string &title, + const std::string &style, + const std::string &labelx, + const std::string &labely) + :gnucmd(NULL) ,valid(false) ,two_dim(false) ,nplots(0) +{ + init(); + + set_style(style); + set_xlabel(labelx); + set_ylabel(labely); + + plot_x(x,title); +} + + +//------------------------------------------------------------------------------ +// +// constructor: open a new session, plot a signal (x,y) +// +inline Gnuplot::Gnuplot(const std::vector<double> &x, + const std::vector<double> &y, + const std::string &title, + const std::string &style, + const std::string &labelx, + const std::string &labely) + :gnucmd(NULL) ,valid(false) ,two_dim(false) ,nplots(0) +{ + init(); + + set_style(style); + set_xlabel(labelx); + set_ylabel(labely); + + plot_xy(x,y,title); +} + + +//------------------------------------------------------------------------------ +// +// constructor: open a new session, plot a signal (x,y,z) +// +inline Gnuplot::Gnuplot(const std::vector<double> &x, + const std::vector<double> &y, + const std::vector<double> &z, + const std::string &title, + const std::string &style, + const std::string &labelx, + const std::string &labely, + const std::string &labelz) + :gnucmd(NULL) ,valid(false) ,two_dim(false) ,nplots(0) +{ + init(); + + set_style(style); + set_xlabel(labelx); + set_ylabel(labely); + set_zlabel(labelz); + + plot_xyz(x,y,z,title); +} + + +//------------------------------------------------------------------------------ +// +/// Plots a 2d graph from a list of doubles: x +// +template<typename X> +Gnuplot& Gnuplot::plot_x(const X& x, const std::string &title) +{ + if (x.size() == 0) + { + throw GnuplotException("std::vector too small"); + return *this; + } + + std::ofstream tmp; + std::string name = create_tmpfile(tmp); + if (name == "") + return *this; + + // + // write the data to file + // + for (unsigned int i = 0; i < x.size(); i++) + tmp << x[i] << std::endl; + + tmp.flush(); + tmp.close(); + + + plotfile_x(name, 1, title); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +/// Plots a 2d graph from a list of doubles: x y +// +template<typename X, typename Y> +Gnuplot& Gnuplot::plot_xy(const X& x, const Y& y, const std::string &title) +{ + if (x.size() == 0 || y.size() == 0) + { + throw GnuplotException("std::vectors too small"); + return *this; + } + + if (x.size() != y.size()) + { + throw GnuplotException("Length of the std::vectors differs"); + return *this; + } + + + std::ofstream tmp; + std::string name = create_tmpfile(tmp); + if (name == "") + return *this; + + // + // write the data to file + // + for (unsigned int i = 0; i < x.size(); i++) + tmp << x[i] << " " << y[i] << std::endl; + + tmp.flush(); + tmp.close(); + + + plotfile_xy(name, 1, 2, title); + + return *this; +} + +///----------------------------------------------------------------------------- +/// +/// plot x,y pairs with dy errorbars +/// +template<typename X, typename Y, typename E> +Gnuplot& Gnuplot::plot_xy_err(const X &x, + const Y &y, + const E &dy, + const std::string &title) +{ + if (x.size() == 0 || y.size() == 0 || dy.size() == 0) + { + throw GnuplotException("std::vectors too small"); + return *this; + } + + if (x.size() != y.size() || y.size() != dy.size()) + { + throw GnuplotException("Length of the std::vectors differs"); + return *this; + } + + + std::ofstream tmp; + std::string name = create_tmpfile(tmp); + if (name == "") + return *this; + + // + // write the data to file + // + for (unsigned int i = 0; i < x.size(); i++) + tmp << x[i] << " " << y[i] << " " << dy[i] << std::endl; + + tmp.flush(); + tmp.close(); + + + // Do the actual plot + plotfile_xy_err(name, 1, 2, 3, title); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// Plots a 3d graph from a list of doubles: x y z +// +template<typename X, typename Y, typename Z> +Gnuplot& Gnuplot::plot_xyz(const X &x, + const Y &y, + const Z &z, + const std::string &title) +{ + if (x.size() == 0 || y.size() == 0 || z.size() == 0) + { + throw GnuplotException("std::vectors too small"); + return *this; + } + + if (x.size() != y.size() || x.size() != z.size()) + { + throw GnuplotException("Length of the std::vectors differs"); + return *this; + } + + + std::ofstream tmp; + std::string name = create_tmpfile(tmp); + if (name == "") + return *this; + + // + // write the data to file + // + for (unsigned int i = 0; i < x.size(); i++) + tmp << x[i] << " " << y[i] << " " << z[i] <<std::endl; + + tmp.flush(); + tmp.close(); + + + plotfile_xyz(name, 1, 2, 3, title); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// define static member function: set Gnuplot path manual +// for windows: path with slash '/' not backslash '\' +// +bool Gnuplot::set_GNUPlotPath(const std::string &path) +{ + + std::string tmp = path + "/" + Gnuplot::m_sGNUPlotFileName; + + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + if ( Gnuplot::file_exists(tmp,0) ) // check existence +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + if ( Gnuplot::file_exists(tmp,1) ) // check existence and execution permission +#endif + { + Gnuplot::m_sGNUPlotPath = path; + return true; + } + else + { + Gnuplot::m_sGNUPlotPath.clear(); + return false; + } +} + + +//------------------------------------------------------------------------------ +// +// define static member function: set standart terminal, used by showonscreen +// defaults: Windows - win, Linux - x11, Mac - aqua +// +void Gnuplot::set_terminal_std(const std::string &type) +{ +#if defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + if (type.find("x11") != std::string::npos && getenv("DISPLAY") == NULL) + { + throw GnuplotException("Can't find DISPLAY variable"); + } +#endif + + + Gnuplot::terminal_std = type; + return; +} + + +//------------------------------------------------------------------------------ +// +// A string tokenizer taken from http://www.sunsite.ualberta.ca/Documentation/ +// /Gnu/libstdc++-2.90.8/html/21_strings/stringtok_std_h.txt +// +template <typename Container> +void stringtok (Container &container, + std::string const &in, + const char * const delimiters = " \t\n") +{ + const std::string::size_type len = in.length(); + std::string::size_type i = 0; + + while ( i < len ) + { + // eat leading whitespace + i = in.find_first_not_of (delimiters, i); + + if (i == std::string::npos) + return; // nothing left but white space + + // find the end of the token + std::string::size_type j = in.find_first_of (delimiters, i); + + // push token + if (j == std::string::npos) + { + container.push_back (in.substr(i)); + return; + } + else + container.push_back (in.substr(i, j-i)); + + // set up for next loop + i = j + 1; + } + + return; +} + + +//------------------------------------------------------------------------------ +// +// Destructor: needed to delete temporary files +// +Gnuplot::~Gnuplot() +{ +// remove_tmpfiles(); + + // A stream opened by popen() should be closed by pclose() +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + if (_pclose(gnucmd) == -1) +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + if (pclose(gnucmd) == -1) +#endif + throw GnuplotException("Problem closing communication to gnuplot"); +} + + +//------------------------------------------------------------------------------ +// +// Resets a gnuplot session (next plot will erase previous ones) +// +Gnuplot& Gnuplot::reset_plot() +{ +// remove_tmpfiles(); + + nplots = 0; + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// resets a gnuplot session and sets all varibles to default +// +Gnuplot& Gnuplot::reset_all() +{ +// remove_tmpfiles(); + + nplots = 0; + cmd("reset"); + cmd("clear"); + pstyle = "points"; + smooth = ""; + showonscreen(); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// Change the plotting style of a gnuplot session +// +Gnuplot& Gnuplot::set_style(const std::string &stylestr) +{ + if (stylestr.find("lines") == std::string::npos && + stylestr.find("points") == std::string::npos && + stylestr.find("linespoints") == std::string::npos && + stylestr.find("impulses") == std::string::npos && + stylestr.find("dots") == std::string::npos && + stylestr.find("steps") == std::string::npos && + stylestr.find("fsteps") == std::string::npos && + stylestr.find("histeps") == std::string::npos && + stylestr.find("boxes") == std::string::npos && // 1-4 columns of data are required + stylestr.find("filledcurves") == std::string::npos && + stylestr.find("histograms") == std::string::npos ) //only for one data column +// stylestr.find("labels") == std::string::npos && // 3 columns of data are required +// stylestr.find("xerrorbars") == std::string::npos && // 3-4 columns of data are required +// stylestr.find("xerrorlines") == std::string::npos && // 3-4 columns of data are required +// stylestr.find("errorbars") == std::string::npos && // 3-4 columns of data are required +// stylestr.find("errorlines") == std::string::npos && // 3-4 columns of data are required +// stylestr.find("yerrorbars") == std::string::npos && // 3-4 columns of data are required +// stylestr.find("yerrorlines") == std::string::npos && // 3-4 columns of data are required +// stylestr.find("boxerrorbars") == std::string::npos && // 3-5 columns of data are required +// stylestr.find("xyerrorbars") == std::string::npos && // 4,6,7 columns of data are required +// stylestr.find("xyerrorlines") == std::string::npos && // 4,6,7 columns of data are required +// stylestr.find("boxxyerrorbars") == std::string::npos && // 4,6,7 columns of data are required +// stylestr.find("financebars") == std::string::npos && // 5 columns of data are required +// stylestr.find("candlesticks") == std::string::npos && // 5 columns of data are required +// stylestr.find("vectors") == std::string::npos && +// stylestr.find("image") == std::string::npos && +// stylestr.find("rgbimage") == std::string::npos && +// stylestr.find("pm3d") == std::string::npos ) + { + pstyle = std::string("points"); + } + else + { + pstyle = stylestr; + } + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// smooth: interpolation and approximation of data +// +Gnuplot& Gnuplot::set_smooth(const std::string &stylestr) +{ + if (stylestr.find("unique") == std::string::npos && + stylestr.find("frequency") == std::string::npos && + stylestr.find("csplines") == std::string::npos && + stylestr.find("acsplines") == std::string::npos && + stylestr.find("bezier") == std::string::npos && + stylestr.find("sbezier") == std::string::npos ) + { + smooth = ""; + } + else + { + smooth = stylestr; + } + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// sets terminal type to windows / x11 +// +Gnuplot& Gnuplot::showonscreen() +{ + cmd("set output"); + cmd("set terminal " + Gnuplot::terminal_std); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// saves a gnuplot session to a postscript file +// +Gnuplot& Gnuplot::savetops(const std::string &filename) +{ + cmd("set terminal postscript color"); + + std::ostringstream cmdstr; + cmdstr << "set output \"" << filename << ".ps\""; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// Switches legend on +// +Gnuplot& Gnuplot::set_legend(const std::string &position) +{ + std::ostringstream cmdstr; + cmdstr << "set key " << position; + + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// turns on log scaling for the x axis +// +Gnuplot& Gnuplot::set_xlogscale(const double base) +{ + std::ostringstream cmdstr; + + cmdstr << "set logscale x " << base; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// turns on log scaling for the y axis +// +Gnuplot& Gnuplot::set_ylogscale(const double base) +{ + std::ostringstream cmdstr; + + cmdstr << "set logscale y " << base; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// turns on log scaling for the z axis +// +Gnuplot& Gnuplot::set_zlogscale(const double base) +{ + std::ostringstream cmdstr; + + cmdstr << "set logscale z " << base; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// scales the size of the points used in plots +// +Gnuplot& Gnuplot::set_pointsize(const double pointsize) +{ + std::ostringstream cmdstr; + cmdstr << "set pointsize " << pointsize; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// set isoline density (grid) for plotting functions as surfaces +// +Gnuplot& Gnuplot::set_samples(const int samples) +{ + std::ostringstream cmdstr; + cmdstr << "set samples " << samples; + cmd(cmdstr.str()); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// set isoline density (grid) for plotting functions as surfaces +// +Gnuplot& Gnuplot::set_isosamples(const int isolines) +{ + std::ostringstream cmdstr; + cmdstr << "set isosamples " << isolines; + cmd(cmdstr.str()); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// enables contour drawing for surfaces set contour {base | surface | both} +// + +Gnuplot& Gnuplot::set_contour(const std::string &position) +{ + if (position.find("base") == std::string::npos && + position.find("surface") == std::string::npos && + position.find("both") == std::string::npos ) + { + cmd("set contour base"); + } + else + { + cmd("set contour " + position); + } + + return *this; +} + +//------------------------------------------------------------------------------ +// +// set labels +// +// set the xlabel +Gnuplot& Gnuplot::set_xlabel(const std::string &label) +{ + std::ostringstream cmdstr; + + cmdstr << "set xlabel \"" << label << "\""; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// set the ylabel +// +Gnuplot& Gnuplot::set_ylabel(const std::string &label) +{ + std::ostringstream cmdstr; + + cmdstr << "set ylabel \"" << label << "\""; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// set the zlabel +// +Gnuplot& Gnuplot::set_zlabel(const std::string &label) +{ + std::ostringstream cmdstr; + + cmdstr << "set zlabel \"" << label << "\""; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// set range +// +// set the xrange +Gnuplot& Gnuplot::set_xrange(const double iFrom, + const double iTo) +{ + std::ostringstream cmdstr; + + cmdstr << "set xrange[" << iFrom << ":" << iTo << "]"; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// set the yrange +// +Gnuplot& Gnuplot::set_yrange(const double iFrom, + const double iTo) +{ + std::ostringstream cmdstr; + + cmdstr << "set yrange[" << iFrom << ":" << iTo << "]"; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// set the zrange +// +Gnuplot& Gnuplot::set_zrange(const double iFrom, + const double iTo) +{ + std::ostringstream cmdstr; + + cmdstr << "set zrange[" << iFrom << ":" << iTo << "]"; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// set the palette range +// +Gnuplot& Gnuplot::set_cbrange(const double iFrom, + const double iTo) +{ + std::ostringstream cmdstr; + + cmdstr << "set cbrange[" << iFrom << ":" << iTo << "]"; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// Plots a linear equation y=ax+b (where you supply the +// slope a and intercept b) +// +Gnuplot& Gnuplot::plot_slope(const double a, + const double b, + const std::string &title) +{ + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + cmdstr << a << " * x + " << b << " title \""; + + if (title == "") + cmdstr << "f(x) = " << a << " * x + " << b; + else + cmdstr << title; + + cmdstr << "\" with " << pstyle; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// Plot an equation supplied as a std::string y=f(x) (only f(x) expected) +// +Gnuplot& Gnuplot::plot_equation(const std::string &equation, + const std::string &title) +{ + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + cmdstr << equation << " title \""; + + if (title == "") + cmdstr << "f(x) = " << equation; + else + cmdstr << title; + + cmdstr << "\" with " << pstyle; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// plot an equation supplied as a std::string y=(x) +// +Gnuplot& Gnuplot::plot_equation3d(const std::string &equation, + const std::string &title) +{ + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == false) + cmdstr << "replot "; + else + cmdstr << "splot "; + + cmdstr << equation << " title \""; + + if (title == "") + cmdstr << "f(x,y) = " << equation; + else + cmdstr << title; + + cmdstr << "\" with " << pstyle; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// Plots a 2d graph from a list of doubles (x) saved in a file +// +Gnuplot& Gnuplot::plotfile_x(const std::string &filename, + const unsigned int column, + const std::string &title) +{ + // + // check if file exists + // + file_available(filename); + + + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + cmdstr << "\"" << filename << "\" using " << column; + + if (title == "") + cmdstr << " notitle "; + else + cmdstr << " title \"" << title << "\" "; + + if(smooth == "") + cmdstr << "with " << pstyle; + else + cmdstr << "smooth " << smooth; + + // + // Do the actual plot + // + cmd(cmdstr.str()); //nplots++; two_dim = true; already in cmd(); + + return *this; +} + + + +//------------------------------------------------------------------------------ +// +// Plots a 2d graph from a list of doubles (x y) saved in a file +// +Gnuplot& Gnuplot::plotfile_xy(const std::string &filename, + const unsigned int column_x, + const unsigned int column_y, + const std::string &title) +{ + // + // check if file exists + // + file_available(filename); + + + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + cmdstr << "\"" << filename << "\" using " << column_x << ":" << column_y; + + if (title == "") + cmdstr << " notitle "; + else + cmdstr << " title \"" << title << "\" "; + + if(smooth == "") + cmdstr << "with " << pstyle; + else + cmdstr << "smooth " << smooth; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// Plots a 2d graph with errorbars from a list of doubles (x y dy) in a file +// +Gnuplot& Gnuplot::plotfile_xy_err(const std::string &filename, + const unsigned int column_x, + const unsigned int column_y, + const unsigned int column_dy, + const std::string &title) +{ + // + // check if file exists + // + file_available(filename); + + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + cmdstr << "\"" << filename << "\" using " + << column_x << ":" << column_y << ":" << column_dy + << " with errorbars "; + + if (title == "") + cmdstr << " notitle "; + else + cmdstr << " title \"" << title << "\" "; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// Plots a 3d graph from a list of doubles (x y z) saved in a file +// +Gnuplot& Gnuplot::plotfile_xyz(const std::string &filename, + const unsigned int column_x, + const unsigned int column_y, + const unsigned int column_z, + const std::string &title) +{ + // + // check if file exists + // + file_available(filename); + + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == false) + cmdstr << "replot "; + else + cmdstr << "splot "; + + cmdstr << "\"" << filename << "\" using " << column_x << ":" << column_y + << ":" << column_z; + + if (title == "") + cmdstr << " notitle with " << pstyle; + else + cmdstr << " title \"" << title << "\" with " << pstyle; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + + + +//------------------------------------------------------------------------------ +// +/// * note that this function is not valid for versions of GNUPlot below 4.2 +// +Gnuplot& Gnuplot::plot_image(const unsigned char * ucPicBuf, + const unsigned int iWidth, + const unsigned int iHeight, + const std::string &title) +{ + std::ofstream tmp; + std::string name = create_tmpfile(tmp); + if (name == "") + return *this; + + // + // write the data to file + // + int iIndex = 0; + for(int iRow = 0; iRow < iHeight; iRow++) + { + for(int iColumn = 0; iColumn < iWidth; iColumn++) + { + tmp << iColumn << " " << iRow << " " + << static_cast<float>(ucPicBuf[iIndex++]) << std::endl; + } + } + + tmp.flush(); + tmp.close(); + + + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + if (title == "") + cmdstr << "\"" << name << "\" with image"; + else + cmdstr << "\"" << name << "\" title \"" << title << "\" with image"; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + + + +//------------------------------------------------------------------------------ +// +// Sends a command to an active gnuplot session +// +Gnuplot& Gnuplot::cmd(const std::string &cmdstr) +{ + if( !(valid) ) + { + return *this; + } + + + // int fputs ( const char * str, FILE * stream ); + // writes the string str to the stream. + // The function begins copying from the address specified (str) until it + // reaches the terminating null character ('\0'). This final + // null-character is not copied to the stream. + fputs( (cmdstr+"\n").c_str(), gnucmd ); + + // int fflush ( FILE * stream ); + // If the given stream was open for writing and the last i/o operation was + // an output operation, any unwritten data in the output buffer is written + // to the file. If the argument is a null pointer, all open files are + // flushed. The stream remains open after this call. + fflush(gnucmd); + + + if( cmdstr.find("replot") != std::string::npos ) + { + return *this; + } + else if( cmdstr.find("splot") != std::string::npos ) + { + two_dim = false; + nplots++; + } + else if( cmdstr.find("plot") != std::string::npos ) + { + two_dim = true; + nplots++; + } + + return *this; +} + + + +//------------------------------------------------------------------------------ +// +// Opens up a gnuplot session, ready to receive commands +// +void Gnuplot::init() +{ + // char * getenv ( const char * name ); get value of environment variable + // Retrieves a C string containing the value of the environment variable + // whose name is specified as argument. If the requested variable is not + // part of the environment list, the function returns a NULL pointer. +#if ( defined(unix) || defined(__unix) || defined(__unix__) ) && !defined(__APPLE__) + if (getenv("DISPLAY") == NULL) + { + valid = false; + throw GnuplotException("Can't find DISPLAY variable"); + } +#endif + + + // if gnuplot not available + if (!Gnuplot::get_program_path()) + { + valid = false; + throw GnuplotException("Can't find gnuplot"); + } + + + // + // open pipe + // + std::string tmp = Gnuplot::m_sGNUPlotPath + "/" + + Gnuplot::m_sGNUPlotFileName; + + // FILE *popen(const char *command, const char *mode); + // The popen() function shall execute the command specified by the string + // command, create a pipe between the calling program and the executed + // command, and return a pointer to a stream that can be used to either read + // from or write to the pipe. +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + gnucmd = _popen(tmp.c_str(),"w"); +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + gnucmd = popen(tmp.c_str(),"w"); +#endif + + // popen() shall return a pointer to an open stream that can be used to read + // or write to the pipe. Otherwise, it shall return a null pointer and may + // set errno to indicate the error. + if (!gnucmd) + { + valid = false; + throw GnuplotException("Couldn't open connection to gnuplot"); + } + + nplots = 0; + valid = true; + smooth = ""; + + //set terminal type + showonscreen(); + + return; +} + + +//------------------------------------------------------------------------------ +// +// Find out if a command lives in m_sGNUPlotPath or in PATH +// +bool Gnuplot::get_program_path() +{ + // + // first look in m_sGNUPlotPath for Gnuplot + // + std::string tmp = Gnuplot::m_sGNUPlotPath + "/" + + Gnuplot::m_sGNUPlotFileName; + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + if ( Gnuplot::file_exists(tmp,0) ) // check existence +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + if ( Gnuplot::file_exists(tmp,1) ) // check existence and execution permission +#endif + { + return true; + } + + + // + // second look in PATH for Gnuplot + // + char *path; + // Retrieves a C string containing the value of environment variable PATH + path = getenv("PATH"); + + + if (path == NULL) + { + throw GnuplotException("Path is not set"); + return false; + } + else + { + std::list<std::string> ls; + + //split path (one long string) into list ls of strings +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + stringtok(ls,path,";"); +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + stringtok(ls,path,":"); +#endif + + // scan list for Gnuplot program files + for (std::list<std::string>::const_iterator i = ls.begin(); + i != ls.end(); ++i) + { + tmp = (*i) + "/" + Gnuplot::m_sGNUPlotFileName; +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + if ( Gnuplot::file_exists(tmp,0) ) // check existence +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + if ( Gnuplot::file_exists(tmp,1) ) // check existence and execution permission +#endif + { + Gnuplot::m_sGNUPlotPath = *i; // set m_sGNUPlotPath + return true; + } + } + + tmp = "Can't find gnuplot neither in PATH nor in \"" + + Gnuplot::m_sGNUPlotPath + "\""; + throw GnuplotException(tmp); + + Gnuplot::m_sGNUPlotPath = ""; + return false; + } +} + + + +//------------------------------------------------------------------------------ +// +// check if file exists +// +bool Gnuplot::file_exists(const std::string &filename, int mode) +{ + if ( mode < 0 || mode > 7) + { + throw std::runtime_error("In function \"Gnuplot::file_exists\": mode\ + has to be an integer between 0 and 7"); + return false; + } + + // int _access(const char *path, int mode); + // returns 0 if the file has the given mode, + // it returns -1 if the named file does not exist or is not accessible in + // the given mode + // mode = 0 (F_OK) (default): checks file for existence only + // mode = 1 (X_OK): execution permission + // mode = 2 (W_OK): write permission + // mode = 4 (R_OK): read permission + // mode = 6 : read and write permission + // mode = 7 : read, write and execution permission +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + if (_access(filename.c_str(), mode) == 0) +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + if (access(filename.c_str(), mode) == 0) +#endif + { + return true; + } + else + { + return false; + } + +} + +bool Gnuplot::file_available(const std::string &filename){ + std::ostringstream except; + if( Gnuplot::file_exists(filename,0) ) // check existence + { + if( !(Gnuplot::file_exists(filename,4)) ){// check read permission + except << "No read permission for File \"" << filename << "\""; + throw GnuplotException( except.str() ); + return false; + } + } + else{ + except << "File \"" << filename << "\" does not exist"; + throw GnuplotException( except.str() ); + return false; + } +} + + + +//------------------------------------------------------------------------------ +// +// Opens a temporary file +// +std::string Gnuplot::create_tmpfile(std::ofstream &tmp) +{ + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + char name[] = "gnuplotiXXXXXX"; //tmp file in working directory +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + char name[] = "/tmp/gnuplotiXXXXXX"; // tmp file in /tmp +#endif + + // + // check if maximum number of temporary files reached + // + if (Gnuplot::tmpfile_num == GP_MAX_TMP_FILES - 1) + { + std::ostringstream except; + except << "Maximum number of temporary files reached (" + << GP_MAX_TMP_FILES << "): cannot open more files" << std::endl; + + throw GnuplotException( except.str() ); + return ""; + } + + // int mkstemp(char *name); + // shall replace the contents of the string pointed to by "name" by a unique + // filename, and return a file descriptor for the file open for reading and + // writing. Otherwise, -1 shall be returned if no suitable file could be + // created. The string in template should look like a filename with six + // trailing 'X' s; mkstemp() replaces each 'X' with a character from the + // portable filename character set. The characters are chosen such that the + // resulting name does not duplicate the name of an existing file at the + // time of a call to mkstemp() + + + // + // open temporary files for output + // +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + if (_mktemp(name) == NULL) +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + if (mkstemp(name) == -1) +#endif + { + std::ostringstream except; + except << "Cannot create temporary file \"" << name << "\""; + throw GnuplotException(except.str()); + return ""; + } + + tmp.open(name); + if (tmp.bad()) + { + std::ostringstream except; + except << "Cannot create temporary file \"" << name << "\""; + throw GnuplotException(except.str()); + return ""; + } + + // + // Save the temporary filename + // + tmpfile_list.push_back(name); + Gnuplot::tmpfile_num++; + + return name; +} + +void Gnuplot::remove_tmpfiles(){ + if ((tmpfile_list).size() > 0) + { + for (unsigned int i = 0; i < tmpfile_list.size(); i++) + remove( tmpfile_list[i].c_str() ); + + Gnuplot::tmpfile_num -= tmpfile_list.size(); + } +} +#endif diff --git a/gnuplot-cpp/test_output.ps b/gnuplot-cpp/test_output.ps new file mode 100644 index 0000000..91d5ce8 --- /dev/null +++ b/gnuplot-cpp/test_output.ps @@ -0,0 +1,1899 @@ +%!PS-Adobe-2.0 +%%Title: test_output.ps +%%Creator: gnuplot 5.0 patchlevel 1 +%%CreationDate: Mon Feb 15 14:56:20 2016 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 554 770 +%%Orientation: Landscape +%%Pages: (atend) +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape true def +/Level1 false def +/Level3 false def +/Rounded false def +/ClipToBoundingBox false def +/SuppressPDFMark false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +/BackgroundColor {-1.000 -1.000 -1.000} def +% +/vshift -46 def +/dl1 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 554 50 lineto 554 770 lineto 50 770 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 5.0 (Dec 2014) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Classic Line colors (version 5.0) +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default dash patterns (version 5.0) +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [2 dl1 3 dl2] LC1 DL} def +/LT2 {PL [1 dl1 1.5 dl2] LC2 DL} def +/LT3 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC3 DL} def +/LT4 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [4 dl1 2 dl2] LC5 DL} def +/LT6 {PL [1.5 dl1 1.5 dl2 1.5 dl1 1.5 dl2 1.5 dl1 6 dl2] LC6 DL} def +/LT7 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC8 DL} def +/SL {[] 0 setdash} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse + clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse +dup 2 lt + {/InterpretLevel1 true def + /InterpretLevel3 false def} + {/InterpretLevel1 Level1 def + 2 gt + {/InterpretLevel3 Level3 def} + {/InterpretLevel3 false def} + ifelse } + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {textshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + textshow 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +Level1 SuppressPDFMark or +{} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (test_output.ps) + /Subject (gnuplot plot) + /Creator (gnuplot 5.0 patchlevel 1) + /Author (martinka) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Mon Feb 15 14:56:20 2016) + /DOCINFO pdfmark +end +} ifelse +end +% +% Support for boxed text - Ethan A Merritt May 2005 +% +/InitTextBox { userdict /TBy2 3 -1 roll put userdict /TBx2 3 -1 roll put + userdict /TBy1 3 -1 roll put userdict /TBx1 3 -1 roll put + /Boxing true def } def +/ExtendTextBox { Boxing + { gsave dup false charpath pathbbox + dup TBy2 gt {userdict /TBy2 3 -1 roll put} {pop} ifelse + dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBy1 lt {userdict /TBy1 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse + grestore } if } def +/PopTextBox { newpath TBx1 TBxmargin sub TBy1 TBymargin sub M + TBx1 TBxmargin sub TBy2 TBymargin add L + TBx2 TBxmargin add TBy2 TBymargin add L + TBx2 TBxmargin add TBy1 TBymargin sub L closepath } def +/DrawTextBox { PopTextBox stroke /Boxing false def} def +/FillTextBox { gsave PopTextBox 1 1 1 setrgbcolor fill grestore /Boxing false def} def +0 0 0 0 InitTextBox +/TBxmargin 20 def +/TBymargin 20 def +/Boxing false def +/textshow { ExtendTextBox Gshow } def +% +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +doclip +50 50 translate +0.100 0.100 scale +90 rotate +0 -5040 translate +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {gsave BackgroundColor C clippath fill grestore} if +1.000 UL +LTb +LCb setrgbcolor +546 280 M +63 0 V +6338 0 R +-63 0 V +stroke +462 280 M +[ [(Helvetica) 140.0 0.0 true true 0 (-0.8)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 790 M +63 0 V +6338 0 R +-63 0 V +stroke +462 790 M +[ [(Helvetica) 140.0 0.0 true true 0 (-0.6)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 1300 M +63 0 V +6338 0 R +-63 0 V +stroke +462 1300 M +[ [(Helvetica) 140.0 0.0 true true 0 (-0.4)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 1810 M +63 0 V +6338 0 R +-63 0 V +stroke +462 1810 M +[ [(Helvetica) 140.0 0.0 true true 0 (-0.2)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 2320 M +63 0 V +6338 0 R +-63 0 V +stroke +462 2320 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 2831 M +63 0 V +6338 0 R +-63 0 V +stroke +462 2831 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0.2)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 3341 M +63 0 V +6338 0 R +-63 0 V +stroke +462 3341 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0.4)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 3851 M +63 0 V +6338 0 R +-63 0 V +stroke +462 3851 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0.6)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 4361 M +63 0 V +6338 0 R +-63 0 V +stroke +462 4361 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0.8)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 4871 M +63 0 V +6338 0 R +-63 0 V +stroke +462 4871 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 280 M +0 63 V +0 4528 R +0 -63 V +stroke +546 140 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +LCb setrgbcolor +1826 280 M +0 63 V +0 4528 R +0 -63 V +stroke +1826 140 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MCshow +1.000 UL +LTb +LCb setrgbcolor +3106 280 M +0 63 V +0 4528 R +0 -63 V +stroke +3106 140 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MCshow +1.000 UL +LTb +LCb setrgbcolor +4387 280 M +0 63 V +0 4528 R +0 -63 V +stroke +4387 140 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MCshow +1.000 UL +LTb +LCb setrgbcolor +5667 280 M +0 63 V +0 4528 R +0 -63 V +stroke +5667 140 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MCshow +1.000 UL +LTb +LCb setrgbcolor +6947 280 M +0 63 V +0 4528 R +0 -63 V +stroke +6947 140 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MCshow +1.000 UL +LTb +LCb setrgbcolor +1.000 UL +LTb +LCb setrgbcolor +546 4871 N +546 280 L +6401 0 V +0 4591 V +-6401 0 V +Z stroke +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +% Begin plot #1 +1.000 UL +LTb +0.58 0.00 0.83 C LCb setrgbcolor +6296 4738 M +[ [(Helvetica) 140.0 0.0 true true 0 (f\(x\) = sin\(12*x\)*exp\(-x\))] +] -46.7 MRshow +1.000 UL +LTb +0.58 0.00 0.83 C 6380 4738 M +399 0 V +546 2320 M +21 500 V +22 464 V +21 410 V +22 342 V +21 263 V +21 175 V +22 84 V +21 -8 V +22 -96 V +21 -178 V +21 -249 V +22 -309 V +21 -355 V +22 -384 V +21 -398 V +22 -395 V +21 -377 V +21 -344 V +22 -299 V +974 923 L +996 744 L +21 -111 V +21 -41 V +22 30 V +21 97 V +22 156 V +21 209 V +21 252 V +22 282 V +21 301 V +22 307 V +21 300 V +21 283 V +22 254 V +21 216 V +22 170 V +21 121 V +22 66 V +21 13 V +21 -41 V +22 -91 V +21 -136 V +22 -173 V +21 -202 V +21 -223 V +22 -235 V +21 -235 V +22 -228 V +21 -211 V +21 -186 V +22 -154 V +21 -119 V +22 -78 V +21 -37 V +21 5 V +22 45 V +21 82 V +22 115 V +21 141 V +21 163 V +22 175 V +21 182 V +22 180 V +21 171 V +22 156 V +21 136 V +21 110 V +22 81 V +21 49 V +22 17 V +21 -14 V +21 -45 V +22 -72 V +21 -97 V +22 -115 V +21 -129 V +21 -137 V +22 -140 V +21 -137 V +22 -128 V +21 -115 V +21 -98 V +22 -77 V +21 -55 V +22 -29 V +21 -5 V +21 20 V +22 42 V +21 62 V +22 79 V +21 93 V +22 102 V +21 107 V +21 107 V +22 104 V +21 96 V +22 84 V +21 70 V +21 54 V +22 35 V +21 16 V +22 -3 V +21 -21 V +21 -38 V +22 -53 V +21 -65 V +22 -74 V +21 -80 V +21 -83 V +22 -82 V +21 -78 V +22 -71 V +21 -61 V +22 -50 V +21 -36 V +21 -22 V +22 -8 V +21 7 V +22 21 V +21 34 V +21 44 V +22 52 V +21 59 V +22 63 V +21 64 V +stroke 3222 2305 M +21 62 V +22 59 V +21 52 V +22 44 V +21 35 V +21 24 V +22 14 V +21 1 V +22 -9 V +21 -19 V +21 -29 V +22 -37 V +21 -42 V +22 -47 V +21 -48 V +22 -49 V +21 -48 V +21 -43 V +22 -38 V +21 -32 V +22 -24 V +21 -16 V +21 -7 V +22 2 V +21 10 V +22 17 V +21 24 V +21 30 V +22 34 V +21 37 V +22 38 V +21 37 V +21 35 V +22 33 V +21 27 V +22 23 V +21 16 V +22 10 V +21 3 V +21 -3 V +22 -10 V +21 -15 V +22 -21 V +21 -24 V +21 -27 V +22 -28 V +21 -29 V +22 -29 V +21 -26 V +21 -24 V +22 -20 V +21 -16 V +22 -11 V +21 -6 V +21 0 V +22 4 V +21 9 V +22 13 V +21 17 V +21 20 V +22 21 V +21 22 V +22 22 V +21 22 V +22 20 V +21 17 V +21 14 V +22 11 V +21 7 V +22 3 V +21 -1 V +21 -4 V +22 -8 V +21 -11 V +22 -14 V +21 -16 V +21 -16 V +22 -18 V +21 -17 V +22 -16 V +21 -14 V +21 -13 V +22 -10 V +21 -8 V +22 -4 V +21 -1 V +22 1 V +21 5 V +21 7 V +22 9 V +21 11 V +22 13 V +21 13 V +21 13 V +22 13 V +21 12 V +22 11 V +21 9 V +21 7 V +22 5 V +21 3 V +22 0 V +21 -2 V +21 -5 V +stroke 5448 2371 M +22 -6 V +21 -7 V +22 -9 V +21 -10 V +21 -10 V +22 -10 V +21 -10 V +22 -9 V +21 -8 V +22 -6 V +21 -5 V +21 -3 V +22 -2 V +21 1 V +22 2 V +21 4 V +21 5 V +22 6 V +21 7 V +22 8 V +21 8 V +21 7 V +22 8 V +21 6 V +22 6 V +21 5 V +21 3 V +22 2 V +21 0 V +22 0 V +21 -2 V +21 -4 V +22 -4 V +21 -5 V +22 -6 V +21 -6 V +22 -6 V +21 -6 V +21 -5 V +22 -5 V +21 -4 V +22 -3 V +21 -2 V +21 -2 V +22 0 V +21 1 V +22 2 V +21 3 V +21 4 V +22 4 V +21 4 V +22 5 V +21 4 V +21 5 V +22 4 V +21 3 V +22 3 V +21 3 V +22 1 V +21 1 V +21 -1 V +22 -1 V +21 -1 V +22 -3 V +21 -3 V +21 -3 V +22 -3 V +21 -4 V +22 -3 V +21 -4 V +% End plot #1 +stroke +2.000 UL +LTb +LCb setrgbcolor +1.000 UL +LTb +LCb setrgbcolor +546 4871 N +546 280 L +6401 0 V +0 4591 V +-6401 0 V +Z stroke +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +stroke +grestore +end +showpage +%%Page: 2 2 +gnudict begin +gsave +doclip +50 50 translate +0.100 0.100 scale +90 rotate +0 -5040 translate +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {gsave BackgroundColor C clippath fill grestore} if +1.000 UL +LTb +LCb setrgbcolor +546 280 M +63 0 V +6338 0 R +-63 0 V +stroke +462 280 M +[ [(Helvetica) 140.0 0.0 true true 0 (-0.8)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 790 M +63 0 V +6338 0 R +-63 0 V +stroke +462 790 M +[ [(Helvetica) 140.0 0.0 true true 0 (-0.6)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 1300 M +63 0 V +6338 0 R +-63 0 V +stroke +462 1300 M +[ [(Helvetica) 140.0 0.0 true true 0 (-0.4)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 1810 M +63 0 V +6338 0 R +-63 0 V +stroke +462 1810 M +[ [(Helvetica) 140.0 0.0 true true 0 (-0.2)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 2320 M +63 0 V +6338 0 R +-63 0 V +stroke +462 2320 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 2831 M +63 0 V +6338 0 R +-63 0 V +stroke +462 2831 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0.2)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 3341 M +63 0 V +6338 0 R +-63 0 V +stroke +462 3341 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0.4)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 3851 M +63 0 V +6338 0 R +-63 0 V +stroke +462 3851 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0.6)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 4361 M +63 0 V +6338 0 R +-63 0 V +stroke +462 4361 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0.8)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 4871 M +63 0 V +6338 0 R +-63 0 V +stroke +462 4871 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MRshow +1.000 UL +LTb +LCb setrgbcolor +546 280 M +0 63 V +0 4528 R +0 -63 V +stroke +546 140 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 0)] +] -46.7 MCshow +1.000 UL +LTb +LCb setrgbcolor +1826 280 M +0 63 V +0 4528 R +0 -63 V +stroke +1826 140 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 1)] +] -46.7 MCshow +1.000 UL +LTb +LCb setrgbcolor +3106 280 M +0 63 V +0 4528 R +0 -63 V +stroke +3106 140 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 2)] +] -46.7 MCshow +1.000 UL +LTb +LCb setrgbcolor +4387 280 M +0 63 V +0 4528 R +0 -63 V +stroke +4387 140 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 3)] +] -46.7 MCshow +1.000 UL +LTb +LCb setrgbcolor +5667 280 M +0 63 V +0 4528 R +0 -63 V +stroke +5667 140 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 4)] +] -46.7 MCshow +1.000 UL +LTb +LCb setrgbcolor +6947 280 M +0 63 V +0 4528 R +0 -63 V +stroke +6947 140 M +[ [(Helvetica) 140.0 0.0 true true 0 ( 5)] +] -46.7 MCshow +1.000 UL +LTb +LCb setrgbcolor +1.000 UL +LTb +LCb setrgbcolor +546 4871 N +546 280 L +6401 0 V +0 4591 V +-6401 0 V +Z stroke +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +% Begin plot #1 +1.000 UL +LTb +0.58 0.00 0.83 C LCb setrgbcolor +6296 4738 M +[ [(Helvetica) 140.0 0.0 true true 0 (f\(x\) = sin\(12*x\)*exp\(-x\))] +] -46.7 MRshow +1.000 UL +LTb +0.58 0.00 0.83 C 6380 4738 M +399 0 V +546 2320 M +21 500 V +22 464 V +21 410 V +22 342 V +21 263 V +21 175 V +22 84 V +21 -8 V +22 -96 V +21 -178 V +21 -249 V +22 -309 V +21 -355 V +22 -384 V +21 -398 V +22 -395 V +21 -377 V +21 -344 V +22 -299 V +974 923 L +996 744 L +21 -111 V +21 -41 V +22 30 V +21 97 V +22 156 V +21 209 V +21 252 V +22 282 V +21 301 V +22 307 V +21 300 V +21 283 V +22 254 V +21 216 V +22 170 V +21 121 V +22 66 V +21 13 V +21 -41 V +22 -91 V +21 -136 V +22 -173 V +21 -202 V +21 -223 V +22 -235 V +21 -235 V +22 -228 V +21 -211 V +21 -186 V +22 -154 V +21 -119 V +22 -78 V +21 -37 V +21 5 V +22 45 V +21 82 V +22 115 V +21 141 V +21 163 V +22 175 V +21 182 V +22 180 V +21 171 V +22 156 V +21 136 V +21 110 V +22 81 V +21 49 V +22 17 V +21 -14 V +21 -45 V +22 -72 V +21 -97 V +22 -115 V +21 -129 V +21 -137 V +22 -140 V +21 -137 V +22 -128 V +21 -115 V +21 -98 V +22 -77 V +21 -55 V +22 -29 V +21 -5 V +21 20 V +22 42 V +21 62 V +22 79 V +21 93 V +22 102 V +21 107 V +21 107 V +22 104 V +21 96 V +22 84 V +21 70 V +21 54 V +22 35 V +21 16 V +22 -3 V +21 -21 V +21 -38 V +22 -53 V +21 -65 V +22 -74 V +21 -80 V +21 -83 V +22 -82 V +21 -78 V +22 -71 V +21 -61 V +22 -50 V +21 -36 V +21 -22 V +22 -8 V +21 7 V +22 21 V +21 34 V +21 44 V +22 52 V +21 59 V +22 63 V +21 64 V +stroke 3222 2305 M +21 62 V +22 59 V +21 52 V +22 44 V +21 35 V +21 24 V +22 14 V +21 1 V +22 -9 V +21 -19 V +21 -29 V +22 -37 V +21 -42 V +22 -47 V +21 -48 V +22 -49 V +21 -48 V +21 -43 V +22 -38 V +21 -32 V +22 -24 V +21 -16 V +21 -7 V +22 2 V +21 10 V +22 17 V +21 24 V +21 30 V +22 34 V +21 37 V +22 38 V +21 37 V +21 35 V +22 33 V +21 27 V +22 23 V +21 16 V +22 10 V +21 3 V +21 -3 V +22 -10 V +21 -15 V +22 -21 V +21 -24 V +21 -27 V +22 -28 V +21 -29 V +22 -29 V +21 -26 V +21 -24 V +22 -20 V +21 -16 V +22 -11 V +21 -6 V +21 0 V +22 4 V +21 9 V +22 13 V +21 17 V +21 20 V +22 21 V +21 22 V +22 22 V +21 22 V +22 20 V +21 17 V +21 14 V +22 11 V +21 7 V +22 3 V +21 -1 V +21 -4 V +22 -8 V +21 -11 V +22 -14 V +21 -16 V +21 -16 V +22 -18 V +21 -17 V +22 -16 V +21 -14 V +21 -13 V +22 -10 V +21 -8 V +22 -4 V +21 -1 V +22 1 V +21 5 V +21 7 V +22 9 V +21 11 V +22 13 V +21 13 V +21 13 V +22 13 V +21 12 V +22 11 V +21 9 V +21 7 V +22 5 V +21 3 V +22 0 V +21 -2 V +21 -5 V +stroke 5448 2371 M +22 -6 V +21 -7 V +22 -9 V +21 -10 V +21 -10 V +22 -10 V +21 -10 V +22 -9 V +21 -8 V +22 -6 V +21 -5 V +21 -3 V +22 -2 V +21 1 V +22 2 V +21 4 V +21 5 V +22 6 V +21 7 V +22 8 V +21 8 V +21 7 V +22 8 V +21 6 V +22 6 V +21 5 V +21 3 V +22 2 V +21 0 V +22 0 V +21 -2 V +21 -4 V +22 -4 V +21 -5 V +22 -6 V +21 -6 V +22 -6 V +21 -6 V +21 -5 V +22 -5 V +21 -4 V +22 -3 V +21 -2 V +21 -2 V +22 0 V +21 1 V +22 2 V +21 3 V +21 4 V +22 4 V +21 4 V +22 5 V +21 4 V +21 5 V +22 4 V +21 3 V +22 3 V +21 3 V +22 1 V +21 1 V +21 -1 V +22 -1 V +21 -1 V +22 -3 V +21 -3 V +21 -3 V +22 -3 V +21 -4 V +22 -3 V +21 -4 V +% End plot #1 +% Begin plot #2 +stroke +LTb +0.00 0.62 0.45 C LCb setrgbcolor +6296 4598 M +[ [(Helvetica) 140.0 0.0 true true 0 (f\(x\) = exp\(-x\))] +] -46.7 MRshow +1.000 UL +LTb +0.00 0.62 0.45 C 6380 4598 M +399 0 V +546 4871 M +21 -42 V +22 -42 V +21 -41 V +22 -40 V +21 -40 V +21 -38 V +22 -39 V +21 -37 V +22 -37 V +21 -37 V +21 -36 V +22 -35 V +21 -34 V +22 -34 V +21 -34 V +22 -33 V +21 -32 V +21 -32 V +22 -31 V +21 -31 V +22 -30 V +21 -30 V +21 -29 V +22 -29 V +21 -28 V +22 -28 V +21 -28 V +21 -27 V +22 -26 V +21 -26 V +22 -26 V +21 -25 V +21 -25 V +22 -24 V +21 -24 V +22 -24 V +21 -23 V +22 -23 V +21 -22 V +21 -22 V +22 -22 V +21 -21 V +22 -21 V +21 -21 V +21 -20 V +22 -20 V +21 -19 V +22 -20 V +21 -19 V +21 -18 V +22 -19 V +21 -18 V +22 -17 V +21 -18 V +21 -17 V +22 -17 V +21 -16 V +22 -17 V +21 -16 V +21 -15 V +22 -16 V +21 -15 V +22 -15 V +21 -15 V +22 -14 V +21 -15 V +21 -14 V +22 -13 V +21 -14 V +22 -13 V +21 -14 V +21 -12 V +22 -13 V +21 -13 V +22 -12 V +21 -12 V +21 -12 V +22 -11 V +21 -12 V +22 -11 V +21 -11 V +21 -11 V +22 -11 V +21 -11 V +22 -10 V +21 -10 V +21 -10 V +22 -10 V +21 -10 V +22 -9 V +21 -10 V +22 -9 V +21 -9 V +21 -9 V +22 -9 V +21 -8 V +22 -9 V +21 -8 V +21 -8 V +22 -8 V +21 -8 V +22 -8 V +stroke 2730 2784 M +21 -8 V +21 -7 V +22 -8 V +21 -7 V +22 -7 V +21 -7 V +21 -7 V +22 -7 V +21 -7 V +22 -7 V +21 -6 V +22 -6 V +21 -7 V +21 -6 V +22 -6 V +21 -6 V +22 -6 V +21 -6 V +21 -5 V +22 -6 V +21 -5 V +22 -6 V +21 -5 V +21 -5 V +22 -6 V +21 -5 V +22 -5 V +21 -4 V +21 -5 V +22 -5 V +21 -5 V +22 -4 V +21 -5 V +21 -4 V +22 -5 V +21 -4 V +22 -4 V +21 -4 V +22 -4 V +21 -4 V +21 -4 V +22 -4 V +21 -4 V +22 -4 V +21 -3 V +21 -4 V +22 -3 V +21 -4 V +22 -3 V +21 -4 V +21 -3 V +22 -3 V +21 -4 V +22 -3 V +21 -3 V +21 -3 V +22 -3 V +21 -3 V +22 -3 V +21 -3 V +22 -3 V +21 -2 V +21 -3 V +22 -3 V +21 -2 V +22 -3 V +21 -2 V +21 -3 V +22 -2 V +21 -3 V +22 -2 V +21 -3 V +21 -2 V +22 -2 V +21 -2 V +22 -3 V +21 -2 V +21 -2 V +22 -2 V +21 -2 V +22 -2 V +21 -2 V +21 -2 V +22 -2 V +21 -2 V +22 -2 V +21 -1 V +22 -2 V +21 -2 V +21 -2 V +22 -1 V +21 -2 V +22 -2 V +21 -1 V +21 -2 V +22 -2 V +21 -1 V +22 -2 V +21 -1 V +21 -2 V +22 -1 V +21 -1 V +22 -2 V +21 -1 V +stroke 4956 2402 M +21 -2 V +22 -1 V +21 -1 V +22 -1 V +21 -2 V +22 -1 V +21 -1 V +21 -1 V +22 -2 V +21 -1 V +22 -1 V +21 -1 V +21 -1 V +22 -1 V +21 -1 V +22 -1 V +21 -1 V +21 -1 V +22 -1 V +21 -1 V +22 -1 V +21 -1 V +21 -1 V +22 -1 V +21 -1 V +22 -1 V +21 -1 V +21 -1 V +22 0 V +21 -1 V +22 -1 V +21 -1 V +22 -1 V +21 0 V +21 -1 V +22 -1 V +21 -1 V +22 0 V +21 -1 V +21 -1 V +22 -1 V +21 0 V +22 -1 V +21 -1 V +21 0 V +22 -1 V +21 0 V +22 -1 V +21 -1 V +21 0 V +22 -1 V +21 0 V +22 -1 V +21 -1 V +21 0 V +22 -1 V +21 0 V +22 -1 V +21 0 V +22 -1 V +21 0 V +21 -1 V +22 0 V +21 -1 V +22 0 V +21 -1 V +21 0 V +22 0 V +21 -1 V +22 0 V +21 -1 V +21 0 V +22 -1 V +21 0 V +22 0 V +21 -1 V +21 0 V +22 0 V +21 -1 V +22 0 V +21 -1 V +22 0 V +21 0 V +21 -1 V +22 0 V +21 0 V +22 -1 V +21 0 V +21 0 V +22 0 V +21 -1 V +22 0 V +21 0 V +% End plot #2 +stroke +2.000 UL +LTb +LCb setrgbcolor +1.000 UL +LTb +LCb setrgbcolor +546 4871 N +546 280 L +6401 0 V +0 4591 V +-6401 0 V +Z stroke +1.000 UP +1.000 UL +LTb +LCb setrgbcolor +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 2 -- GitLab