\input{titlepage} \section{Gnuplot} GNUPLOT is a command-driven interactive function plotting program. It is case sensitive (commands and function names written in lowercase are not the same as those written in CAPS). All command names may be abbreviated, as long as the abbreviation is not ambiguous. Any number of commands may appear on a line, separated by semicolons (;). Any command-line arguments are assumed to be names of files containing gnuplot commands. Each file is loaded with the {\bf load} command, in the order specified. Gnuplot exits after the last file is processed. Commands may extend over several input lines, by ending each line but the last with a backslash ($\backslash$). The backslash must be the LAST character on each line. The effect is as if the backslash and newline were not there. That is, no white space is implied, nor is a comment terminated. Therefore, commenting out a continued line comments out the entire command (see {\bf comment}). In this documentation, curly braces (\{\}) denote optional arguments to many commands. For help on any topic, type 'help' followed by the name of the topic. \section{Cd} The {\bf cd} command changes working directory. Syntax: \begin{verbatim} cd \end{verbatim} The directory name must be enclosed in quotes. Examples: \begin{verbatim} cd 'subdir' cd ".." \end{verbatim} \section{Clear} The {\bf clear} command erases the current screen or output device as specified by {\bf set output}. This usually generates a formfeed on hardcopy devices. Use {\bf set terminal} to set the device type. \section{Comment} Comments are supported as follows: a \# may appear in most places in a line and GNUPLOT will ignore the rest of the line. It will not have this effect inside quotes, inside numbers (including complex numbers), inside command substitutions, etc. In short, it works anywhere it makes sense to work. \section{Environment} A number of shell environment variables are understood by GNUPLOT. None of these are required, but may be useful. If GNUTERM is defined, it is used as the name of the terminal type to be used. This overrides any terminal type sensed by GNUPLOT on start up, but is itself overridden by the .gnuplot (or equivalent) start-up file (see help start-up), and of course by later explicit changes. On Unix and MS-DOS, GNUHELP may be defined to be the pathname of the HELP file (gnuplot.gih). On VMS, the symbol GNUPLOT\$HELP should be defined as the name of the help library for gnuplot. On Unix, HOME is used as the name of a directory to search for a .gnuplot file if none is found in the current directory. On MS-DOS, GNUPLOT is used. On VMS, SYS\$LOGIN: is used. See help start-up. On Unix, PAGER is used as an output filter for help messages. SHELL is used for the {\bf shell} command. On MS-DOS, COMSPEC is used for the {\bf shell} command. \section{Exit} The commands {\bf exit} and {\bf quit} and your computer's END-OF-FILE character will exit GNUPLOT. All these commands will clear the output device (as the {\bf clear} command does) before exiting. \section{Expressions} In general, any mathematical expression accepted by C, FORTRAN, Pascal, or BASIC is valid. The precedence of these operators is determined by the specifications of the C programming language. White space (spaces and tabs) is ignored inside expressions. Complex constants may be expressed as the \{$<$real$>$,$<$imag$>$\}, where $<$real$>$ and $<$imag$>$ must be numerical constants. For example \{3,2\} represents 3 + 2i; \{0,1\} represents {\bf i} itself. The curly braces are explicitly required here. \subsection{Functions} The functions in GNUPLOT are the same as the corresponding functions in the UNIX math library, except that all functions accept integer, real, and complex arguments, unless otherwise noted. The {\bf sgn} function is also supported, as in BASIC. \begin{center} \begin{tabular}{|ccl|} \hline Function & Arguments & Returns \\ \hline abs(x) & any & absolute value of {\tt x}, $|x|$; same type \\ abs(x) & complex & length of {\tt x}, $\sqrt{{\mbox{real}(x)^{2} + \mbox{imag}(x)^{2}}}$ \\ acos(x) & any & $\cos^{-1} x$ (inverse cosine) in radians \\ arg(x) & complex & the phase of $x$ in radians\\ asin(x) & any & $\sin^{-1} x$ (inverse sin) in radians \\ atan(x) & any & $\tan^{-1} x$ (inverse tangent) in radians \\ besj0(x) & radians & $j_{0}$ Bessel function of $x$ \\ besj1(x) & radians & $j_{1}$ Bessel function of $x$ \\ besy0(x) & radians & $y_{0}$ Bessel function of $x$ \\ besy1(x) & radians & $y_{1}$ Bessel function of $x$ \\ ceil(x) & any & $\lceil x \rceil$, smallest integer not less than $x$ (real part) \\ cos(x) & radians & $\cos x$, cosine of $x$ \\ cosh(x) & radians & $\cosh x$, hyperbolic cosine of $x$ \\ exp(x) & any & $e^{x}$, exponential function of $x$ \\ floor(x) & any & $\lfloor x \rfloor$, largest integer not greater than $x$ (real part) \\ imag(x) & complex & imaginary part of $x$ as a real number \\ int(x) & real & integer part of $x$, truncated toward zero \\ log(x) & any & $\log_{e} x$, natural logarithm (base $e$) of $x$ \\ log10(x) & any & $\log_{10} x$, logarithm (base $10$) of $x$ \\ real(x) & any & real part of $x$ \\ sgn(x) & any & 1 if $x>0$, -1 if $x<0$, 0 if $x=0$. imag($x$) ignored \\ sin(x) & radians & $\sin x$, sine of $x$ \\ sinh(x) & radians & $\sinh x$, hyperbolic sine $x$ \\ sqrt(x) & any & $\sqrt{x}$, square root of $x$ \\ tan(x) & radians & $\tan x$, tangent of $x$ \\ tanh(x) & radians & $\tanh x$, hyperbolic tangent of $x$\\ \hline \end{tabular} \end{center} \subsection{Operators} The operators in GNUPLOT are the same as the corresponding operators in the C programming language, except that all operators accept integer, real, and complex arguments, unless otherwise noted. The ** operator (exponentiation) is supported, as in FORTRAN. Parentheses may be used to change order of evaluation. \subsubsection{Binary} The following is a list of all the binary operators and their usages: \begin{center} \begin{tabular}{|ccl|} \hline \multicolumn{3}{|c|}{Binary Operators} \\ Symbol & Example & Explanation \\ \hline \verb~**~ & \verb~a**b~ & exponentiation\\ \verb~*~ & \verb~a*b~ & multiplication\\ \verb~/~ & \verb~a/b~ & division\\ \verb~%~ & \verb~a%b~ & * modulo\\ \verb~+~ & \verb~a+b~ & addition\\ \verb~-~ & \verb~a-b~ & subtraction\\ \verb~==~ & \verb~a==b~ & equality\\ \verb~!=~ & \verb~a!=b~ & inequality\\ \verb~&~ & \verb~a&b~ & * bitwise AND\\ \verb~^~ & \verb~a^b~ & * bitwise exclusive OR\\ \verb~|~ & \verb~a|b~ & * bitwise inclusive OR\\ \verb~&&~ & \verb~a&&b~ & * logical AND\\ \verb~||~ & \verb~a||b~ & * logical OR\\ \verb~?:~ & \verb~a?b:c~ & * ternary operation\\ \hline \end{tabular} \end{center} (*) Starred explanations indicate that the operator requires integer arguments. Logical AND (\&\&) and OR ($|$$|$) short-circuit the way they do in C. That is, the second \&\& operand is not evaluated if the first is false; the second $|$$|$ operand is not evaluated if the first is true. The ternary operator evaluates its first argument (a). If it is true (non-zero) the second argument (b) is evaluated and returned, otherwise the third argument (c) is evaluated and returned. \subsubsection{Unary} The following is a list of all the unary operators and their usages: \begin{center} \begin{tabular}{|ccl|} \hline \multicolumn{3}{|c|}{Unary Operators}\\ Symbol & Example & Explanation \\ \hline \verb@-@ & \verb@-a@ & unary minus \\ \verb@~@ & \verb@~a@ & * one's complement \\ \verb@!@ & \verb@!a@ & * logical negation \\ \verb@!@ & \verb@a!@ & * factorial \\ \hline \end{tabular} \end{center} (*) Starred explanations indicate that the operator requires an integer argument. The factorial operator returns a real number to allow a greater range. \section{Help} The {\bf help} command displays on-line help. To specify information on a particular topic use the syntax: \begin{verbatim} help \end{verbatim} If $<$topic$>$ is not specified, a short message is printed about GNUPLOT. After help for the requested topic is given, help for a subtopic may be requested by typing its name, extending the help request. After that subtopic has been printed, you may extend the request again, as before, or go back one level to the previous topic, by simply pressing return without typing anything. Eventually, you will return to the GNUPLOT command line. \section{Load} The {\bf load} command executes each line of the specified input file as if it had been typed in interactively. Files created by the {\bf save} command can later be {\bf load}ed. Any text file containing valid commands can be created and then executed by the {\bf load} command. Files being {\bf load}ed may themselves contain {\bf load} commands. See {\bf comment} for information about comments in commands. The {\bf load} command must be the last command on the line. Syntax: \begin{verbatim} load \end{verbatim} The name of the input file must be enclosed in quotes. Examples: \begin{verbatim} load 'work.gnu' load "func.dat" \end{verbatim} The {\bf load} command is performed implicitly on any file names given as arguments to gnuplot. These are loaded in the order specified, and then gnuplot exits. \section{Pause} Pause is useful in conjunction with {\bf load} files. The command {\bf pause} displays any text associated with the command and then waits the specified amount of time. This allows one to build a {\bf load} file and control the amount of time a finished graph is displayed. The first argument is an expression that can be -1, 0, or a positive integer. Choosing -1 will wait until a carriage return is hit. Zero (0) won't pause at all, and a positive integer (such as 1 or 15) will wait the specified number of seconds. Note: Since pause is not part of the plot it may interact with different device drivers differently (depending upon how text and graphics are mixed). Examples: \begin{verbatim} pause -1 ! Wait until a carriage return is hit pause 3 ! Wait three seconds pause -1 "Hit return to continue" pause 10 "Isn't this pretty? It's a cubic-spline." \end{verbatim} Syntax: \begin{verbatim} pause {"string"} \end{verbatim} Note the string is optional, and if present must be enclosed in quotes. \section{Plot} {\bf plot} is the primary command of the program. It plots functions and data in many, many ways. The full syntax of this command is: \begin{verbatim} plot {ranges} {title} {style} {, {title} {style}...} \end{verbatim} Where $<$function$>$ is either a mathematical expression or the name of a data file enclosed in quotes. User-defined functions and variables may also be defined here. Curly braces \{,\} denote optional items. A {\bf plot} command can be as simple as \begin{verbatim} plot sin(x) \end{verbatim} or as complex as (!) \begin{verbatim} plot [t=1:10] [-pi:pi*2] tan(t),"data.1" with lines,t**2 with points \end{verbatim} \subsection{Data-file} Discrete data contained in a file can displayed by specifying the name of the data file (enclosed in quotes) on the {\bf plot} command line. Data files should contain one data point per line. A data point may be specified either as an X and Y value separated by blank space, or as just the Y value, in which case the program will use the number of the coordinate as the X value. Coordinate numbers start at 0 and are incremented for each data point read. Lines beginning with \# (or ! on VMS) will be treated as comments and ignored. NOTE that blank lines cause a break in the input, and if the plot style is {\bf lines} or {\bf linespoints} (see {\bf plot style}) there will be no line drawn between the preceding and following points. This does not change the plot style, as would plotting the data as separate curves. This example compares the data in the file population.dat to a theoretical curve: \begin{verbatim} pop(x) = 103*exp((1965-x)/10) plot [1960:1990] 'population.dat', pop(x) \end{verbatim} The file population.dat might contain: \begin{verbatim} # Gnu population in Antarctica since 1965 1965 103 1970 55 1975 34 1980 24 1985 10 \end{verbatim} \subsection{Ranges} The optional range specifies the region of the plot which will be displayed. Ranges may be provided on the {\bf plot} command line and affect only that plot, or in the {\bf set xrange} and {\bf set yrange} commands, to change the default ranges for future plots. Syntax: \begin{verbatim} [{dummy-var =} {xmin : xmax}] { [{ymin : ymax}] } \end{verbatim} Where dummy-var is the independent variable (the default is {\bf x}, but this may be changed with the {\bf set dummy} command) and the min and max terms can be expressions or constants. Both the min and max terms are optional. The ':' is also optional if neither a min nor a max term is specified. This allows '[]' to be used as a null range specification. Specifying a range in the {\bf plot} command line turns autoscaling for that axis OFF for that plot. Using one of the {\bf set} range commands turns autoscaling off for that axis for future plots, unless changed later. (See {\bf set autoscale}). Examples: This uses current ranges: \begin{verbatim} plot cos(x) \end{verbatim} This sets the xrange only: \begin{verbatim} plot [-10:30] sin(pi*x)/(pi*x) \end{verbatim} This is the same, but uses t as the dummy-variable: \begin{verbatim} plot [t = -10 :30] sin(pi*t)/(pi*t) \end{verbatim} This sets both the x and yranges: \begin{verbatim} plot [-pi:pi] [-3:3] tan(x), 1/x \end{verbatim} This sets only the yrange: \begin{verbatim} plot [] [-2:sin(5)*-8] sin(x)**besj0(x) \end{verbatim} This sets xmax and ymin only: \begin{verbatim} plot [:200] [-pi:] exp(sin(x)) \end{verbatim} \subsection{Style} Plots may be displayed in one of four styles: {\bf lines}, {\bf points}, {\bf linespoints}, {\bf impulses}, or {\bf dots}. The {\bf lines} style connects adjacent points with lines. The {\bf points} style displays a small symbol at each point. The {\bf linespoints} style does both {\bf lines} and {\bf points}. The {\bf impulses} style displays a vertical line from the X axis to each point. The {\bf dots} style plots a tiny dot at each point; this is useful for scatter plots with many points. Default styles are chosen with the {\bf set function style} and {\bf set data style} commands. By default, each function and data file will use a different line type and point type, up to the maximum number of available types. All terminal drivers support at least six different point types, and re-use them, in order, if more than six are required. The LaTeX driver supplies an additional six point types (all variants of a circle), and thus will only repeat after twelve curves are plotted with points. If desired, the actual line type and point type used for a plot can be specified. Syntax: \begin{verbatim} with