The plotdata program¶
The PDFgetX3 software includes a simple stand-alone utility plotdata for plotting text data files. In most cases this program can be invoked from a command-shell as
plotdata file1.dat file2.dat
which plots the numerical data from the text files
file2.dat together in a single graph. By default the first
column is used as an x variable and the second column is used for the
y values. After displaying the plot the program starts an IPython
interactive session allowing the user to modify or save plots. The
IPython session is initialized with the
containing a list of plotted files. It also pre-loads the
findfiles() functions just as in PDFgetX3
interactive session. The
function works in a similar way as the plotdata program,
just its arguments need to be passed as Python function arguments
instead of command-line options. Thus an equivalent call of the
plotdata() function would be:
In : plotdata(['file1.dat', 'file2.dat'])
The plotdata program includes a file searching feature
that is useful for selecting a set of files in large
directories. It is also convenient for Windows operating systems,
where the command prompt cannot do filename expansion for patterns
*.dat. The file search feature is controlled by the
- -f, --find¶
Use command line arguments as filename patterns and plot all matching files. This option works in the same way as for pdfgetx3, for full details see the
pdfgetx3 --finddocumentation. Note that within command line the special patterns
^$<>need to be quoted in double quotes (\”) so they are not processed by command shell.
- -l, --list¶
List the input files and exit. This is useful in conjunction with the
-f, --findoption to check if data files are selected as intended.
Assuming the current directory contains 20 files named
the plotting of files 9 to 13 could be done (with a check listing)
$ plotdata -fl "<9-13>.dat" file9.dat file10.dat file11.dat file12.dat file13.dat $ plotdata -f "<9-13>.dat"
In : plotdata(findfiles("<9-13>.dat"))
Selecting x and y data¶
The plotdata program provides several ways of selecting columns for x or y data and for specifying plot markers or line formats. The columns can be specified using their integer index, but one needs to keep in mind the index of the first column is “0” as per Python indexing conventions. Here is a list of options supported by the plotdata program (and function):
- -x X¶
index or name of the x-column to plot. See the
-yoption for the supported syntax, but note that
Xmay select only one column. When set to “.” use the data-row index for x.
- -y Y¶
index or name of the y-column or columns to plot. The
Ycolumn specification can be a comma separated list of indices, column names or Python-like ranges, for example “1,2”, “G”, “1:4” (START:STOP, same as “1,2,3”), “1:4:2” (START:STOP:STEP, same as “1,3”), or “-2:” (same as “-2,-1”, i.e, the last 2 columns). Because column indexing starts at “0” the second column must be specified as “1”.
The column names work if the data section in the file is preceded by a headline of unique column names, for example:
x square cube 1 1 1 2 4 8 3 9 27 4 16 64
For such data file the plotdata program will recognize column names “x”, “square” and “cube” and an implicit “.” for row index.
- -s STYLE, --style=STYLE¶
optional plot format specification. See the
matplotlib.pyplot.plot()function for a list of available formats.
- -L LOG, --log=LOG¶
axes to be plotted with logarithmic scaling, for example, “x”, “y” or “xy”. Axes not listed in
LOGwill use linear scaling.
- -h, --help¶
display a brief usage info and exit.
- -V, --version¶
show program version and exit.
Open this manual page in a Web browser and exit.
The examples directory
plotdata contains a
file that has 3-columns of values labeled as “x”, “sin” and “cos”.
Here are several examples of the plotdata capabilities
when used from command line - the user is encouraged to try them out:
plotdata sincos.dat plotdata -y 1,2 sincos.dat plotdata -x . -y 0:3 sincos.dat plotdata -y cos sincos.dat plotdata -x sin -y cos -sr-- sincos.dat
An equivalent usage from a general IPython session would be:
ipython --matplotlib=auto In : from diffpy.pdfgetx.plotdata import plotdata In : plotdata('sincos.dat') In : plotdata('sincos.dat', y=[1,2]) In : plotdata('sincos.dat', x='.', y=':3') In : plotdata('sincos.dat', y='cos') In : plotdata('sincos.dat', x='sin', y='cos', style='r--')