[BACK]Return to tutorial.tex CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gnuplot / docs / latextut

Annotation of OpenXM_contrib/gnuplot/docs/latextut/tutorial.tex, Revision 1.1

1.1     ! maekawa     1: %
        !             2: % Tutorial for GNUPLOT plotting program, for LaTeX users
        !             3: % David Kotz
        !             4: % Duke University Computer Science Department
        !             5: %
        !             6: % NOTE: If LaTeX runs out of memory processing plots,
        !             7: % add ``with lines 4'' to each curve in eg*.plt and rerun make.
        !             8: %
        !             9:
        !            10: % some header info
        !            11: \input{header}
        !            12:
        !            13: \begin{document}
        !            14:
        !            15: \title{\LaTeX\ and the GNUPLOT Plotting
        !            16: Program\thanks{This document describes GNUPLOT version 3.0. All plots
        !            17: in this document were made with that version of GNUPLOT.} }
        !            18: \author{David Kotz}
        !            19: \date{July 3, 1991}
        !            20:
        !            21: \maketitle
        !            22:
        !            23: \pagestyle{myheadings}
        !            24: \markright{GNUPLOT \LaTeX\ Tutorial Version 3.0}
        !            25:
        !            26: \currentspace % defined in header.tex
        !            27:
        !            28: \section{Introduction and History}
        !            29:
        !            30: GNUPLOT was originally developed by Colin Kelley and Thomas Williams
        !            31: in 1986 to plot functions and data files on a variety of terminals.
        !            32: In 1988 and 1989 I created an alternate version, known as Gnu\TeX,
        !            33: that supported a new ``terminal type'' called {\tt latex}, so gnuplot
        !            34: would output \LaTeX\ code. The plot could then be included in a
        !            35: \LaTeX\ document. I added a number of embellishments, supported only
        !            36: by the {\tt latex} terminal, allowing the user to produce
        !            37: publication-quality plots.
        !            38:
        !            39: In late 1989 and early 1990 Gnu\TeX\ and a number of other GNUPLOT
        !            40: variants were merged together into a new release of GNUPLOT, 2.0. This
        !            41: includes, among many other improvements, a \LaTeX\ driver derived from
        !            42: the one in Gnu\TeX. Former Gnu\TeX\ users are referred to
        !            43: Section~\ref{oldusers} for information about adapting to GNUPLOT.
        !            44: Anyone interested in using GNUPLOT with \LaTeX\ should read the next
        !            45: section, a tutorial, and the primary GNUPLOT manual.
        !            46:
        !            47: The reader should note that the \LaTeX\ picture environments output by
        !            48: GNUPLOT can be quite large and complicated, and can easily exceed the
        !            49: memory capacity of \TeX. If an enlarged version of \TeX\ is available,
        !            50: it is wise to use it. Otherwise, keep your plots simple and add
        !            51: \verb+\clearpage+ to your document where necessary.
        !            52:
        !            53: There is also a new EEPIC driver ({\tt eepic}), intended for use with
        !            54: the EEPIC macro package for \LaTeX. EEPIC allows for much more
        !            55: efficient line-drawing, runs through \LaTeX\ faster, and uses less
        !            56: memory.  See Section~\ref{s:eepic} for more information.
        !            57:
        !            58: There is a small package of auxiliary files (makefiles and scripts)
        !            59: that I find useful for making \LaTeX\ plots with GNUPLOT. This is
        !            60: available for \verb+ftp+ as \verb+pub/gnuplot-latex.shar+ from
        !            61: \verb+cs.duke.edu+. I can mail copies (see the end of this paper for
        !            62: information).
        !            63:
        !            64: \section{Using GNUPLOT for \LaTeX: a Tutorial}
        !            65:
        !            66: GNUPLOT is by nature an interactive program. Users making plots for
        !            67: \LaTeX\ will generally not use GNUPLOT interactively.  Whenever hard
        !            68: copy is desired from GNUPLOT, the program need not be run on a
        !            69: graphics terminal. In this case the output is directed to a file or
        !            70: pipe, then sent to the appropriate output device. For example, output
        !            71: from the terminal type {\tt unixplot} may be sent to a program
        !            72: interpreting the Unix plotting standard. The terminal types {\tt
        !            73: imagen} and {\tt postscript} may be used for output to printers
        !            74: understanding those languages. (A shell script ({\tt lasergnu}) is
        !            75: supplied with the distribution that will accept a GNUPLOT command or
        !            76: input file and send the output to an Imagen or Postscript laser
        !            77: printer. This script may have been adapted to your site.) The terminal
        !            78: type {\tt fig} outputs FIG code that can be read by the Fig graphics
        !            79: program and translated into forms usable in both \TeX\ and
        !            80: \LaTeX\ documents.
        !            81:
        !            82: We now ignore the interactive nature of GNUPLOT and provide the input
        !            83: to GNUPLOT from a file, \ie,
        !            84: \begin{verbatim}
        !            85:       gnuplot gnu.input
        !            86: \end{verbatim}
        !            87: In this example, all of the commands to GNUPLOT are contained in the
        !            88: file {\tt gnu.input}. Multiple filenames may be supplied to GNUPLOT
        !            89: this way, read in the order they are given.  The output (one or more
        !            90: plots) may be piped to another program or redirected to a file.
        !            91: Usually, however, we direct the output explicitly with an instruction
        !            92: to GNUPLOT (the {\tt set output} command). GNUPLOT continues to print
        !            93: error messages to the terminal (stderr).
        !            94:
        !            95: \paragraph{Example 1:} Here is a first example, producing a plot for
        !            96: this document. The GNUPLOT input file is given below, and the output
        !            97: appears as Figure~\ref{eg1}. The input file defines the output to be
        !            98: in \LaTeX, gives a file name for the output, and plots $y=sin(x)$ for
        !            99: $x$ on $[-\pi,\pi]$. To produce the figure, I simply
        !           100: \verb+\input{eg1}+ in a {\tt center} environment in a {\tt figure}
        !           101: environment. In following examples, I will enclose the figure in a box
        !           102: to make it look a little better.
        !           103:
        !           104: \singlespace
        !           105: \begin{verbatim}
        !           106:     set terminal latex
        !           107:     set output "eg1.tex"
        !           108:     plot [-3.14:3.14] sin(x)
        !           109: \end{verbatim}
        !           110: \currentspace
        !           111:
        !           112: \begin{figure}[htbp]
        !           113:   \begin{center}
        !           114:     \input{eg1}
        !           115:   \end{center}
        !           116:   \caption{A first example: $y=sin(x)$}
        !           117:   \label{eg1}
        !           118: \end{figure}
        !           119:
        !           120: Note that GNUPLOT has drawn in the axes, labeled the tic marks for us,
        !           121: scaled the $y$ axis automatically, and added a key in the
        !           122: upper-right-hand corner (this may be moved with the {\tt set key}
        !           123: command, and removed with {\tt set nokey}).
        !           124:
        !           125: This is the default line style for the \LaTeX\ driver.  Because of the
        !           126: limited picture capabilities of \LaTeX, many dots are required to
        !           127: approximate drawing a solid line. This may overload the memory of many
        !           128: \TeX\ implementations. There are other line types available that draw
        !           129: dotted lines and use much less memory. The EEPIC driver draws solid
        !           130: lines with much less memory usage.
        !           131:
        !           132: \paragraph{Example 2:} Now we will embellish the plot a little with
        !           133: some labels.  This input file produces Figure~\ref{eg2}.
        !           134:
        !           135: \singlespace
        !           136: \begin{verbatim}
        !           137:     set terminal latex
        !           138:     set output "eg2.tex"
        !           139:     set size 5/5., 4/3.
        !           140:     set format xy "$%g$"
        !           141:     set title "This is a plot of $y=sin(x)$"
        !           142:     set xlabel "This is the $x$ axis"
        !           143:     set ylabel "This is\\the\\$y$ axis"
        !           144:     plot [0:6.28] [0:1] sin(x)
        !           145: \end{verbatim}
        !           146: \currentspace
        !           147:
        !           148: \boxfigure{htbp}{\fullboxwidth}{
        !           149:   \begin{center}
        !           150:     \input{eg2}
        !           151:   \end{center}
        !           152:   \caption{A more fancy example.}
        !           153:   \label{eg2}
        !           154: }
        !           155:
        !           156: We have specified the plot to be 5 inches wide and 4 inches tall with
        !           157: the {\tt set size} command. This is the size of the area used by the
        !           158: plot, {\em including} space for the labels.  In the first example,
        !           159: this size was the default 5 inches by 3 inches. By specifying the
        !           160: scaling factors of 1 (or 5/5) and 1.3333 (or 4/3), we obtain the
        !           161: desired plot size.
        !           162:
        !           163: We have requested that the format used by the $x$- and $y$-axis tic
        !           164: mark labels be in \LaTeX\ math mode. This makes the labels look a
        !           165: little better. The default is \verb+set format xy "%g"+. The \verb+%g+
        !           166: represents the general-purpose floating point formatting specification
        !           167: for the {\tt printf} function in C. Any valid floating-point
        !           168: formatting specification, or \LaTeX\ command, is allowed in the
        !           169: format.
        !           170:
        !           171: A title for the plot and labels for the axes were set up in the next
        !           172: three commands.  Note that they are processed by \LaTeX\ and so may
        !           173: have math mode and other symbols in them. The ylabel may have multiple
        !           174: lines, delineated with \verb+\\+.  The ylabel can be moved around with
        !           175: optional offset parameters (see {\tt set ylabel} in the GNUPLOT
        !           176: manual). Typically, the ylabel needs to be moved to the left to avoid
        !           177: interfering with the left-hand side of the plot.  Once these labels
        !           178: are set up, they will be used for all subsequent plot commands until
        !           179: they are changed. These labels are also supported by the other
        !           180: terminal types, but (of course) any \LaTeX\ code in the string will
        !           181: not be interpreted. We have also defined the range of both $x$ (now
        !           182: $[0,2\pi]$) and $y$ (here $[0,1]$).
        !           183:
        !           184: So far we have plotted one curve, $y=\sin(x)$, on one plot. In
        !           185: GNUPLOT, each {\tt plot} command generates a new plot. If the output
        !           186: is to a screen, the screen is cleared. If to a printer, a new page is
        !           187: produced. In the {\tt latex} case, a new picture is started. It is not
        !           188: likely that \LaTeX\ users will want this to happen, so generally each
        !           189: plot has its own input file and is kept in a separate output ({\tt
        !           190: .tex}) file for inclusion at different places in the document.
        !           191:
        !           192: \paragraph{Example 3:} To place more than one curve on a plot, use one
        !           193: {\tt plot} statement and separate the description of each curve by a
        !           194: comma. In our next example, we will plot both a function and a data
        !           195: file on the same plot. This plot is shown in Figure~\ref{eg3}.
        !           196:
        !           197: \singlespace
        !           198: \begin{verbatim}
        !           199:     set terminal latex
        !           200:     set output "eg3.tex"
        !           201:     set format xy "$%g$"
        !           202:     set title "This is another plot"
        !           203:     set xlabel "$x$ axis"
        !           204:     set ylabel "$y$ axis"
        !           205:     set key 15,-10
        !           206:     plot x with lines, "eg3.dat" with linespoints
        !           207: \end{verbatim}
        !           208: \currentspace
        !           209:
        !           210: \boxfigure{htbp}{\fullboxwidth}{
        !           211:   \begin{center}
        !           212:     \input{eg3}
        !           213:   \end{center}
        !           214:   \caption{An example with two curves on the same plot.}
        !           215:   \label{eg3}
        !           216: }
        !           217:
        !           218: Here you will see that the $x$ range was not specified. The $x$ range
        !           219: is determined automatically, unless specified by the user.  In
        !           220: this case, it is defined by the range of the data file
        !           221: \verb+"eg3.dat"+. The function is plotted over the same range. If no
        !           222: data files or $x$ range are supplied, the default range of $[-10:10]$
        !           223: is used. We have also moved the key to a different position.  The
        !           224: function $y=x$ is plotted ``with lines'', which is the default plot
        !           225: style for functions, and is shown here to illustrate the plot style
        !           226: option.  The data file {\tt eg3.dat} is plotted with style {\tt
        !           227: linespoints}, a style like {\tt lines} that also plots a symbol at
        !           228: each data point.
        !           229:
        !           230: There is a style called {\tt points} that only plots the symbols at
        !           231: data points, and another called {\tt dots} that plots a tiny dot for
        !           232: each data point.  The {\tt points} and {\tt linespoints} styles
        !           233: produce a different point symbol for each curve on the plot (for up to
        !           234: twelve symbols, after which they are re-used; see
        !           235: Figure~\ref{linepoint} for a complete list). The {\tt lines} and {\tt
        !           236: linespoints} styles use a different line style for each curve on the
        !           237: plot (in this example the dots have different spacing). The
        !           238: style {\tt impulses} draws a perpendicular from each point to the
        !           239: $x$-axis. Finally, the {\tt errorbars} style can draw error bars at
        !           240: each data point (see the GNUPLOT manual).
        !           241:
        !           242: \paragraph{Example 4:} In the above plots of $\sin(x)$, it would make
        !           243: more sense to label the axis in units of $\pi$. The position and
        !           244: labels of the tic labels may be specified by the user, with the {\tt
        !           245: set xtics} and {\tt set ytics} commands. This is demonstrated by
        !           246: the following example, shown in Figure~\ref{eg4}.
        !           247:
        !           248: \singlespace
        !           249: \begin{verbatim}
        !           250:     set terminal latex
        !           251:     set output "eg4.tex"
        !           252:     set format y "$%g$"
        !           253:     set format x "$%.2f$"
        !           254:     set title "This is $\sin(x)$"
        !           255:     set xlabel "This is the $x$ axis"
        !           256:     set ylabel "$\sin(x)$"
        !           257:     set nokey
        !           258:     set xtics -pi, pi/4
        !           259:     plot [-pi:pi] [-1:1] sin(x)
        !           260: \end{verbatim}
        !           261: \currentspace
        !           262:
        !           263: \boxfigure{htbp}{\fullboxwidth}{
        !           264:   \begin{center}
        !           265:     \input{eg4}
        !           266:   \end{center}
        !           267:   \caption{An example of the {\tt set xtics} command.}
        !           268:   \label{eg4}
        !           269: }
        !           270:
        !           271: Since {\tt pi} is a predefined variable in GNUPLOT, we can use it
        !           272: anywhere we may use an expression. The {\tt set xtics} command here
        !           273: specifies that the tics on the $x$ axis start at $-\pi$ and increment
        !           274: by $\pi/4$. Since no end point is given, the tics continue to the
        !           275: right edge. We have also turned off the key, and changed the format to
        !           276: restrict the $x$-axis tic labels to 2 decimal places.
        !           277:
        !           278: With a little more work, the plot can look even better.  Another form
        !           279: of this command allows us to specify the label and position of each
        !           280: tic individually.  Replacing the above {\tt set xtics} command with
        !           281: the following gives us Figure~\ref{eg5}. We also make use of the line
        !           282: continuation character, the backslash (\verb+\+), to spread out this
        !           283: command for readability.
        !           284:
        !           285: \singlespace
        !           286: \begin{verbatim}
        !           287:     set xtics ("$-\pi$" -pi,\
        !           288:      "$-\frac{\pi}{2}$" -pi/2,\
        !           289:      "0" 0,\
        !           290:      "$\frac{\pi}{2}$" pi/2,\
        !           291:      "$\pi$" pi)
        !           292: \end{verbatim}
        !           293: \currentspace
        !           294:
        !           295: \boxfigure{htbp}{\fullboxwidth}{
        !           296:   \begin{center}
        !           297:     \input{eg5}
        !           298:   \end{center}
        !           299:   \caption{A fancy example of the {\tt set xtics} command.}
        !           300:   \label{eg5}
        !           301: }
        !           302:
        !           303: \paragraph{Going further:} You should now be able to make a variety of
        !           304: plots for your \LaTeX\ document. We will present a final example
        !           305: without explanation that showcases some of the capabilities of
        !           306: GNUPLOT. You may find documentation for the various commands in the
        !           307: GNUPLOT manual, though hopefully this example is somewhat
        !           308: self-explanatory. This is shown in Figure~\ref{eg6}.
        !           309:
        !           310: \singlespace
        !           311: \begin{verbatim}
        !           312:     set terminal latex
        !           313:     set output "eg6.tex"
        !           314:     set size 3.5/5, 3/3.
        !           315:     set format y "$%g$"
        !           316:     set format x "$%5.1f\mu$"
        !           317:     set title "This is a title"
        !           318:     set xlabel "This is the $x$ axis"
        !           319:     set ylabel "This is\\a longer\\version\\ of\\the $y$\\ axis"
        !           320:     set label "Data" at -5,-5 right
        !           321:     set arrow from -5,-5 to -3.3,-6.7
        !           322:     set key -4,8
        !           323:     set xtic -10,5,10
        !           324:     plot [-10:10] [-10:10] "eg3.dat" title "Data File"  with linespoints 1 7,\
        !           325:        3*exp(-x*x)+1  title "$3e^{-x^{2}}+1$" with lines 4
        !           326: \end{verbatim}
        !           327: \currentspace
        !           328:
        !           329: \boxfigure{htbp}{\fullboxwidth}{
        !           330:   \begin{center}
        !           331:     \input{eg6}
        !           332:   \end{center}
        !           333:   \caption{An example of many features.}
        !           334:   \label{eg6}
        !           335: }
        !           336:
        !           337: \paragraph{Line and point types:} For reference, we show all of the
        !           338: line and point types available in Figure~\ref{linepoint}.
        !           339:
        !           340: \boxfigure{htbp}{\fullboxwidth}{
        !           341:   \begin{center}
        !           342:     \input{linepoin}
        !           343:   \end{center}
        !           344:   \caption{All of the line and point types in the \LaTeX\ driver.}
        !           345:   \label{linepoint}
        !           346: }
        !           347:
        !           348: \subsection{Summary --- Use with \LaTeX}
        !           349: In summary, to use the \LaTeX\ facilities of GNUPLOT, the first
        !           350: command to GNUPLOT should be
        !           351: \begin{syntax}
        !           352:     set terminal latex
        !           353: \end{syntax}
        !           354: and the output of GNUPLOT should be directed to a file, for example,
        !           355: \begin{verbatim}
        !           356:     set output "plot.tex"
        !           357: \end{verbatim}
        !           358: This may be anything you like but it should have a {\tt .tex} extension,
        !           359: of course. Then the size of the plot should be given. For example, the
        !           360: command
        !           361: \begin{verbatim}
        !           362:     set size 1,2
        !           363: \end{verbatim}
        !           364: tells GNUPLOT to use a 5 inch wide by 6 inch high box for the plot.
        !           365: The numbers given are {\em scale factors}, not the actual size.  The
        !           366: default is 5 inches by 3 inches.  This is the size of the complete
        !           367: plot, including all labels.
        !           368:
        !           369: When finished, the file will contain all of the plots you have
        !           370: specified (you probably only want one plot per file). This file can
        !           371: then be used in a \LaTeX\ document, \eg,
        !           372:
        !           373: \singlespace
        !           374: \begin{verbatim}
        !           375:     \begin {figure}
        !           376:       \begin{center}
        !           377:         \input{plot}
        !           378:       \end{center}
        !           379:     \end {figure}
        !           380: \end{verbatim}
        !           381: \currentspace
        !           382: This puts the plot into a figure.
        !           383:
        !           384: You will also want to read about the following commands: {\tt set
        !           385: title, set xlabel, set ylabel, set key, set label, set xtics, set
        !           386: ytics}, and {\tt set clip}.  These are all described in the regular
        !           387: GNUPLOT manual.
        !           388:
        !           389: \section{Use with EEPIC}
        !           390: \label{s:eepic}
        !           391: EEPIC is a macro package extending the picture environment of \LaTeX.
        !           392: If you have the EPIC or EEPIC macros, and your {\tt dvi} translator
        !           393: supports the {\em tpic\/} \verb+\special+s, then you can save \LaTeX\
        !           394: memory.  With EEPIC pictures, the {\tt plot.tex} file will be smaller,
        !           395: \LaTeX\ will run much faster (and need much less memory), and the {\tt
        !           396: dvi} file will be smaller. The quality of the output is about the
        !           397: same. If you change the source, you can generate some more interesting
        !           398: line styles.
        !           399:
        !           400: To use EEPIC, set GNUPLOT's terminal type to {\tt eepic} instead of
        !           401: {\tt latex}, and use GNUPLOT as before. The line styles will change.
        !           402: Include the file {\tt plot.tex} in your document as before, along with
        !           403: the document style options {\tt [epic,eepic]}.
        !           404:
        !           405: \section{For Former Gnu\TeX\ Users}
        !           406: \label{oldusers}
        !           407:
        !           408: Former Gnu\TeX\ users may be pleased with many of the new features
        !           409: (many inspired by your suggestions!), but will also find many changes.
        !           410: GNUPLOT will {\em not\/} run all Gnu\TeX\ input files unchanged.
        !           411: Several Gnu\TeX\ features were not included in GNUPLOT because they
        !           412: were specific to the \LaTeX\ driver. I encourage you to use the newer
        !           413: GNUPLOT.  A translator is available that attempts to translate your
        !           414: old Gnu\TeX\ 1.6 input files into GNUPLOT 3.0 files. You can ftp it
        !           415: from \verb+cs.duke.edu+ as \verb+dist/sources/gnuplot/gnut2p.tar.Z+.
        !           416: This file also contains directions and a list of changes from Gnu\TeX\
        !           417: to GNUPLOT.
        !           418:
        !           419: \section{Contact}
        !           420: For general GNUPLOT questions, send mail to the GNUPLOT mailing list
        !           421: (\verb+info-gnuplot@dartmouth.edu+) or post to the GNUPLOT newsgroup
        !           422: (\verb+comp.graphics.apps.gnuplot+).
        !           423:
        !           424: \end{document}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>