Ptplot Changes

The changes between ptplot5.5 and ptplot5.6

  • Christopher Brooks: pxgraph now takes a "-" argument, which indicates that data should be read from standard input.

    The changes between ptplot5.4 and ptplot5.5

  • Christopher Brooks: Run most of main() methods inside the Swing Event thread.
  • Christopher Brooks: PlotApplet.init(): Run most of the method inside the Swing Event thread.
  • Christopher Brooks: PlotFrame, PlotApplication, EditablePlotMLApplication: Get colors of menus right.
  • Ted Nolan: EPSGraphics: if a legend has parens in it, then it causes EPS syntax errors.
  • Christopher Brooks: Plot: Handle cases where we have only one point in a dataset.
  • Andreas Traupe: Added new method PlotBox.renameLegend(). Plot._clear should clear() the Vector not create a new one.
  • The changes between ptplot5.3 and ptplot5.4

  • Christopher Hylands Brooks: PlotFrame: handle errors when opening and closing streams
  • Steven Nuendorffer: Plot: Avoid drawing points and lines that are not visible.
  • The changes between ptplot5.2 and ptplot5.3

  • Roger Robins: PlotApplet: Work around problem in Java 1.3.1_08 where if we create 6 instances of a Plot applet then navigate forward then back - IE and Navigator hang.
  • Christopher Hylands: reuseDatasets in a PlotML file was being ignored. Added PlotBox.getLegendDataset(), Plot.getReuseDatasets(). Plot.addLegend() and PlotMLParser.startElement() now check the value of reuseDatasets and acts accordingly. (bug reported by Balazs Mezodi)
  • Peter N. Steinmetz: Added getXAutoRange(), getYAutoRange(), getColors(), setColors(), getPlotRectangle(), setPlotRectangle() setPlotRectangle(): "... allow[s] user specification of the rectangle nside the axes, the 'plot rectangle' of the PlotBox class. I am using this to line up two graphs which share the same time scale. "
  • Edward A. Lee: Use a thicker stroke when drawing lines.
  • Steve Neuendorffer: Improvements for offscreen buffer support so that Ptplot can plot data sets with 20000 points.
  • Peter N. Steinmetz: If PlotApplication is called with a "-" option, then it reads from standard input.
  • Helge Weissig: Moved checks for original{X,Y}RangeGiven from set{X,Y}Range() to _set{X,Y}Range() so that if we have a simple plot consisting only of data, then Reset Axes works properly.
  • Peter Carr: getData() and _setData() incorrectly were using _dataset instead of dataset.
  • The changes between ptplot5.1p3 and ptplot5.2

  • Edward A. Lee, Alberto Gobbi: Renamed _deferIfNecessary() to deferIfNecessary() and made it public. Added note about using deferIfNecessary() to the Plot class comment that describes how to handle modifying the plot from a separate thread.
  • David French: added removeLegend()
  • John Olmstead, Edward A. Lee: rotate Y axis label
  • Christopher Hylands: Use .plt and .xml as default extensions when opening or saving as, use plot.xml as a default name
  • Roger Schwenke, Christopher Hylands: Add better documentation about how to use Log axes.
  • Alberto Gobbi, Christopher Hylands: Fix for <dataset name= ... connected=...> to
  • The changes between ptplot5.1p2 and ptplot5.1p3

  • Ross Beyer: Problems with Solaris installation.
  • Laurent Etur: Scale the printout to fit the page
  • The changes between ptplot5.1p1 and ptplot5.1p2

  • Rob Kroeger: 4 new PlotBox.exportImage() methods that create a BufferedImage to display the plot in. This method can be used to plot data and write out images for use in servlets. PlotBox._drawPlot and Plot._drawPlot() now take a Rectangle argument to support this.
  • Ross Beyer: When we print, ask the user for the page format.
  • Paul H. Buckle: In class ptolemy.plot.Plot._fillPlot() the instances of -Double.MIN_VALUE should be -Double.MAX_VALUE
  • Paul H. Buckle: In ptolemy.plot.PlotBox.clear(boolean) should clear flags for _originalYRangeGiven and _originalYRangeGiven
  • The changes between ptplot5.1 and ptplot5.1p1

  • PlotBox.write(): Changed plotml.dtd to PlotML_1.dtd
  • bin/ was not shipped in 5.1
  • Updated plot.pdf with minor changes
  • The changes between ptplot4.1 and ptplot5.1

    Note that Ptplot 4.1 was not released separately from Ptolemy II. Ptplot 4.1 can be found in Ptolemy II 0.4beta
  • Various classes were modified to make them thread safe. The fill button was causing deadlock.
  • X persistence is now supported.
  • The changes between ptplot3.1 and ptplot4.1

  • Makefile modified so that the standalone build works better
  • Changes from Ge Yun <> to make serialization work.
  • Ptplot applets now require Swing, which basically requires the JDK1.2 plugin.
  • Removed Ptplot.htm, Javascript calling Java does not work under Netscape4.6 because of plugin issues.
  • The changes between ptplot2.2 and ptplot3.1

  • Editable plots (invoke ptplot, and try Edit:Edit Dataset... use the right mouse button to edit the dataset).
  • Editable format (invoke ptplot, and try Edit:Format).
  • PlotML file format.
  • Moved pxgraph classes into compat subdirectory
  • Added Histogram classes in plotml package and histogram and histogram.bat scripts
  • The changes between ptplot2.1 and ptplot2.2

  • Added which will generate Encapsulated PostScript (EPS) on stdout. See the class comment for a description of where stdout goes on the various browsers.
  • PlotBox now has the following keybindings:
    • Cntrl-c: Export the plot to the clipboard.
    • D: Dump the plot to standard output.
    • E: Export the plot to standard output in EPS format.
    • F: Fill the plot.
    • H or ?: Display a simple help message.
    • Cntrl-D or Q: quit
  • PlotBox:
    • Support for the Wrap: on file directive.
    • setLabelFont(): call getFontMetrics to update sized Also, changed labelfont, superscriptfont and titlefont to labelFont etc. Reported by Peter Biechele <>
    • samplePlot is a new method that creates a sample plot.
    • Various changes to support drawing the legend as lines rather than points.
    • Fixed bug reported by Porter Mason <pmason@NRAO.EDU> in reusedatasets: on
  • The changes between ptplot2.0 and ptplot2.1

  • Added,, and ../demo/
  • Moved index.htm out of the top level, and set up files to use frames.
  • Modified top level makefile to use InstallShield's JShield to build releases.
  • Added doc/download directory which provides links to multiple download formats
  • Use "\t" instead of an actual tab so as to avoid problems with reindentation. Reported by Louis Hernandez, Jr. <>
  • Added Third Party uses of Ptplot web page
  • Ptplot2.1 was released as part of Ptolemy II 0.2
  • The changes between ptplot2.0a2 and ptplot2.0

  • Added Third Party uses of Ptplot web page
  • The changes between ptplot2.0a2 and ptplot2.0

  • configure now chooses between -depend and -Xdepend.
  • The changes between ptplot2.0a1 and ptplot2.0a2

  • Changed image on index.htm
  • Modified help and about content
  • Modified Message constructors
  • No longer ship LogicAnalyzer, it is not ready
  • The changes between ptplot1.3p1 and ptplot2.0a1

  • The major change is that the classes were moved from the ptplot package to the ptolemy.plot package.
  • The ptplotapplet.jar file has been renamed to ptolemy.plotapplet.jar to better reflect the package structure.
  • was moved to a new directory called ptolemy/apps.
  • The pxgraph script has been removed. A new script ptplot replaces it. Usually, ptplot uses the PlotApplication class. If pxgraph is a link to ptplot, then when pxgraph is run, it uses the Pxgraph class
  • Removed ptplot2mif.tcl, it was of little use.


  • Changed zoom out so it is not limited to the fill region. You can now zoom out arbitrarily far.
  • Fixed a bug where YTicks was not recognized in a file (XTicks was).
  • Fixed a bug where DataSet: with a blank name does not create a blank legend entry.
  • Use jdk 1.1 event model everywhere.
    action() method is gone
    mouseDown() method is gone
    mouseDrag() method is gone
    mouseUp() method is gone
  • Use jdk 1.1 font support.
    getFontByName() method is gone
  • Use jdk 1.1 method names where they are different from jdk 1.0:
    setSize() replaces resize()
  • The following methods are now deprecated:
    init() (use addFillButton and read())
    parseFile() (use read() -- NOTE: no longer reads pxgraph binary files).
    setBinary() (use readPxgraph() in the Plot class).
    setDataurl() (use read())
    setDocumentBase() (use read())
    _setButtonsVisibility() (use a menu rather than buttons in applications)
  • The following methods are new:
  • The following methods are gone:
    reshape() (replaced by setBounds() for jdk 1.1).
  • The following members are gone:
    _graphics (protected). Use getGraphics() instead.
  • The following method has been made protected (was public):
    _drawPlot() (was drawPlot())
  • The following class is gone:
    PlotDataException (use IOException, which offers identical features).
  • Used javadoc formatting throughout.
  • Plot

    Same changes as above, plus...
  • Fixed bug where auto-ranging depended on all data seen historically. Now it is recalculated if boundary points are erased.
  • New method:
    readPxgraph() (reads a binary stream)
  • Deprecated:
    setNumSets() (no longer needed -- sets are added as they are mentioned).
    getMaxDataSets() (irrelevant now)
  • PlotApplet

  • No longer implements runnable (the run method just called repaint(), which seems pointless). No longer creates a thread.
  • Removed:
  • In the init() method, PlotApplet no longer calls plot().init(), which is deprecated. This is the only change that is not backwards compatible. It means that applets derived from PlotApplet need to replace the call to init().
  • PlotLive

    I was unable to keep this class completely backwards compatible. So PlotLiveDemo and PlotLiveDemoApplet both had to be modified for things to work again.

    Also I removed the debug printing lines everywhere. I found that they produced a huge amount of clutter, making it hard to read the code. And they generated so much info that they were hard to use anyway. And they were creeping into user-level code (PlotLiveDemo and PlotLiveDemoApplet).


    New class to handle the thread trickiness for live plots.


    This class is now public so that it can be used outside of the plot package.

    New classes

    2-D plotter widget used by PlotApplication, below.
    Stand alone plotter application, started up by ptplot
    a simple example application with two side by side plots.
  • The changes between ptplot1.3 and ptplot1.3p1

  • The plotting region is now always white. Formerly, the -bg option would change the color of the plotting region and the region around the plotting region where the legend is. Now -bg only changed the region around the plotting region. The reason for this change is that the colors of the data sets were designed to be used on a white background.
  • Ignore the -bb command line argument. In the X11 version of pxgraph, -bb drew a bounding box around the data region. Formerly, the Java version printed a message about -bb not being supported. In the Java version of pxgraph, the region where plots appear is a different color than the surround region, which makes -bb useless.
  • Various minor cleanups to the comments. Stripped out trailing spaces at the end of lines.
  • Added fillPlot() method back in so that client programs can call it. Reported by Stephan Puchegger <>
  • If JAVAHOME is not set, and pxgraph cannot find a JDK, then it looks in /usr/eesww/lang/jdk1.1latest. This is for use in the EECS Department here at UC Berkeley.
  • The changes between ptplot1.2p1 and ptplot1.3

  • pxgraph =500x500-0-0 was throwing a numeric exception.
  • Added ReuseDataSets: on file directive, which causes datasets with the same name to be merged into one dataset when plotted. This is useful for combining multiple files that plot the same datasets.
  • Fixed compatibility problem with X11 version of pxgraph. The old version of pxgraph allowed blank lines to denote the start of a new dataset. The problem is that we want to ignore blank lines in the new format, but still provide compatibility with the old behaviour. The fix was to assume that the file is an old format file until we see a new style directive.
  • Fixed a bug that was plotting extraneous points before all the data was read in from a file.
  • The Pxgraph class and the pxgraphscript now take two new command line arguments:
    Data files are in big-endian, or network binary format. If you are on a little-endian machine, such as a machine with an Intel x86 chip, and you would like to read a binary format file, created on a big-endian machine, such as a Sun SPARC, use the -bigendian flag.
    Data files are in little-endian, or x86 binary format. If you are on a big-endian machine, such as a Sun Sparc, and you would like to read a binary format file created on a little-endian machine, such as Intel x86 machine, then use the -littleendian flag.
    -binary now reads pxgraph style binary data in the format native to the machine where the Java Ptplot process is running. The other binary format read by the -binary option, known as the raw binary format is always reads data as big-endian. The Endian Examples page illustrates use of the three options.
  • The Pxgraph class and the pxgraphscript now take two new command line arguments:
    -o output filename
    The name of the file to place the print output in. Currently defaults to /tmp/
    Bring up the print dialog immediately upon startup. Unfortunately, there is no way to automatically print in JDK1.1, the user must hit the Ok button.
    The new command line arguments are used to make it easier to create PostScript output.
  • ptplot2mif.tcl script can be used to convert the PostScript output of Ptplot to Framemaker MIF format. This script requires Tcl, and probably won't work under Windows. This script does not do a perfect job converting, but it is a start.
  • URLS with & characters in them were being parsed incorrectly.
    This bug was reported by Marion Schroeder <>.
  • A new jar file called ptplotapplet.jar is now created. This jar file is similar to ptplot.jar, except it does not include the classes used by the Pxgraph class. As a result, ptplotapplet.jar is smaller than ptplot.jar. The Pxgraph and Message classes are not used in applets, so there is no need to download them for applet only usage.
  • The _graphics field in PlotBox is now transient so that PlotBox can be serialized.
    This bug was reported by Patrick Barrett <>.
  • The changes between ptplot1.2 and ptplot1.2p1

    Ptplot1.2p1 is a bug fix release.
  • Ptplot1.1 was able able to parse scientific notation numbers such as 1.0E-12, but Ptplot1.2 could not. The change that caused the bug was that in Ptplot1.2, we used to parse the numbers. Unfortunately, StreamTokenizer is buggy, it fails to parse scientific notation. For more information, see The fix was to adapt the Ptplot1.1 number parsing code to handle error bars.
    This bug was reported by Marion Schroeder <>.
  • The changes between ptplot1.1 and ptplot1.2

  • Added support for JAR files.
  • Added Troubleshooting Ptplot and Ptplot FAQ.
  • Added a demo that illustrates a JavaScript Interface to Ptplot
  • If setXRange() or setYRange() are not explicitly called by the user, then the data is padded slightly so that the data is not plotted on the axes. The Black and white plot using unique marks demo is padded. Many of the other demos are not padded because the X and Y ranges are explicitly set either in the data file or in the Java code that created the plot.
  • Raw binary files that consist only of 4 byte floats are now supported. Formerly, ptplot only supported Joe Buck's binary format, which used single characters as plot directives (see the javadoc Pxgraph documentation for details about this format). The new raw binary format now reads the first byte, and if it is not a d, then the raw 4 byte float format is assumed.

    This format was prompted by a request from John O'Sullivan<>. The demo/data/bin.plt was converted to the new raw 4 byte float format.

  • Error bars are now generated. If the data file contains a line that consists of four numbers, then the first two numbers are assumed to be the x and y values, and the last two numbers are assumed to be the lower and upper y values for the error bar. The numbers can be separated by white space or a comma. See the Error Bars demo for more information.
    The error bar code is based on a code fragment from Michael Altmann <>.
  • Ptplot now supports logarithmic axes, which are controlled by the file directives: XLog: on and YLog: on. The pxgraph script now takes -lnx and -lny arguments as well. See the Log Axes demo for more information.
  • Fixed problem with recycling colors and marks. The bug was reported by Lutz Harnisch, <>
  • The changes between ptplot1.0 and ptplot1.1

  • In 1.1, PlotBox extends Panel. In 1.0 PlotBox extended Applet. This makes it much easier to use Plot as an component in either an application or an applet that contains other components.
  • The PlotApplet class is new in 1.1. PlotApplet can be used for applets that use the Plot class, or the PlotLive class. As a result, the html applet tags for the demos now use code="ptplot.PlotApplet". Formerly, they used code="ptplot.Plot"
  • The directory structure has been reorganized so that the plot classes are in ptplot, and the demo classes are in ptplot/demo. This means that the does not contain the demo classes, which is better if anyone actually wants to _use_ the plotter instead of just running the demos.
  • There is a Playing Wave Applet that uses real time audio. Note, this demo was removed, see
  • Edward Lee fixed a bar graph label bug reported by Marc Ellis.
  • A few other minor bugs were fixed.
  • Last Updated: $Date: 2005/07/07 00:17:47 $