Release notes



  • Changes required to maintain compatibility with R2021b and later to account for the new 'Interactions' property that text objects now have.
  • Small adjustments in positioning for a few of the text objects in the plot (for newer Matlab versions)
  • The pltpub command now enables the file menu since that will normally needed to print or create PDFs of the resulting figure.
  • In previous releases there were four demo programs (pub, pub2, pub3, xChart) to demonstrate how to use plt to create plots intended for publication. With this release, a fifth program was added for this purpose called pub1.m (and pub.m was renamed to pub0.m)
  • Changes in several of the demo programs to fix minor bugs, improve readability, etc.
  • Added a new cursor command: plt('cursor',CurID,'TraceIDs') which returns a cell array containing the TraceIDs associated with the specified cursor. For an example, see the Cursor commands section
  • Added a new plt command: plt('hideTID') which toggles the visibility of all TraceID boxes in the current figure. Also added an item in the plt menu called "Hide/Show TraceID box" which does the same thing.
  • Fixed a problem with the background color for the delta cursor button.


  • Further improvements to the screencfg.m function. Previously, a full screen figure window was created as an aid to determining the screen configuration. Although this was done only the first time plt was run after Matlab was restarted, the slight flicker as the full screen figure was created could be noticed by some users. With the new version the creation of the full screen figure is no longer required for Windows based systems. (It's still required for non PC systems.)
  • For versions of Matlab with the new graphics engine (i.e. R2014b or later), the trace labels inside the traceID box were slightly to low. This has now been corrected.
  • The source code was cleaned up in several areas for readability.
  • All uses in plt of Matlab's built-in function findstr were replaced by strfind for speed and for compatibility with future Matlab versions. (findstr is being deprecated.)


  • Changed the way screencfg.m works. Previously, after determining the screen layout, it would create a file containing this information. But this caused confusion since plt figure windows would not be positioned properly after the taskbar position or size was adjusted. With the new method the screen layout is determined once every time Matlab is restarted (the first time plt is run). Also a new auxiliary function has been included called workingArea.m which is used by screencfg to determine the area of the screen available where figure windows may reside without covering the taskbar. This new function is only used for Windows based systems. (Different methods are used for other operating systems). This new function is described in the Auxiliary functions section.
  • When panning by dragging the mouse along the X axis, often the Y axis limits would also change in an attempt to keep the trace data in view. But this is often unexpected or not wanted, so this has been changed so that the Y axis limits are always held constant when sliding the mouse along the X axis. You can also pan the X axis by sliding the mouse left and right inside the plot area. As before, when using that method, the Y axis limits will change if necessary to keep the trace data visible.
  • Some users found that using an expansion box (the easiest way to zoom the display) was confusing, so the Zooming and panning section of the help file has been rewritten for clarity.


  • Substantially rewrote the editz.m demo program to allow for the editing and quantizing of the numerator and denominator polynomials (which also provides a good example of the use of the pseudo edit object). Also now the x-axis limits of the pole zero plot automatically adjusts to maintain the proper plot aspect ratio when the figure is resized. This new section of the help document was added to describe the editz graphical interface.
  • Several enhancements where made to the edit pseudo object. The older calling sequence still works, but now a somewhat shorter calling sequence can be used. (This change applies to the popup pseudo object as well). A new property called 'border' has been added. A new way of disabling the increment/decrement feature was added that allows the edit pseudo object to be used as an editable button. The 'num quant' object in the editz.m demo program is an example of this. See details at The pseudo edit object
  • Added the funcStart.m auxiliary function to provide the facility for starting functions and returning immediately to the calling function. This function is fully described in the Auxiliary functions section. The following demo programs have been modified to use the funcStart function: bounce, circles12, curves, dice3, movbar, pltmap, pltsq, and wfall. The advantage of this change is that (for example) when you type pltsq run at the command prompt, the pltsq figure appears with the figure continuously updating and yet pltsq has returned so that you are able to enter more commands in the command window. Previously (with earlier plt releases) you would have had to hit the stop button in the pltsq figure before you got the command prompt back.
  • Generalized the calling sequence for the plt('rename',...) command to make it more flexible. This is described in the description of the TraceID parameter in the Trace properties section.
  • A bug was fixed that prevented data editing, multiCursors, and xView slilders from working on subplots. (This bug first appeared in the 03Jan20 version.)
  • Corrections and improvements to the help documentation


  • Several changes to the image pseudo object used to plot two dimensional data:
    1. Added a data editing feature allowing you to modify image points or region with multi-level undo. Editing of image data is described near the end of of the Data editing section under the heading 3d data editing
    2. The image cursor now changes color depending on its location so it is always visible with good contrast.
    3. Fixed a bug which cause a crash when an Image pseudo object was created without the optional 'edge' and 'mid' sliders. Other more minor bugs were also fixed.
    4. Any axis limits included in the pltinit call are honored but if they are not specified, the default x or y axis scaling is set to show the entire image with a 2% margin at each edge.
  • It became clear from questions from plt users that the two example programs demonstrating the use of the image pseudo object (pltmap.m and julia.m) were to complex to convey the basics of using that pseudo object. So I added a simple 8 line example program to the demo folder (drawgray.m) that reads in a jpg image, converts it to gray scale and displays the result using the image pseudo object.
  • Improvements to demoplt.m including changing the button colors to make it more clear which demo is currently running. Also added a message box that appears during the first demo to make it more clear how to use the "All-Demos" feature.
  • A few adjustments were made to the default trace color sequence. (The improvements are pretty noticeable when looking at the subplt16.m example program.)
  • Improved the figure position (screencfg.m) routine so that the deprecated JavaFrame is no longer called for newer versions of Matlab.
  • Fixed a bug related to editing line and cursor properties when subplots are being used.
  • Support for the form of the dataread function that I was using (which worked in R2020a or older) was deprecated in R2020b. I replaced the dataread function with the textread function to gain compatibility with Matlab R2020b.


  • Changes to allow compatibility with Matlab R2020a. (compatibility remains with older versions of Matlab going as far back as Matlab 6.1)
  • Rewrote pltt.m to include the ability to delete traces. Also added the ability to specify the trace data with a single argument. For details, see the Adding traces section.
  • Revised the xChart.m example program to include more comparisons and to make the chart more readable. Also now the fontsize of the help text is adjusted based on the size of the figure window making the chart usable even on computers with smaller screen sizes.


  • Added a new example program to the demo folder called xChart.m which demonstrates using pltpub() to create a publication quality bar chart displaying performance testing results comparing several Matlab versions. This example is more fully described in the Programming examples section.
  • Properties of the TraceIDs and the axis containing them may now be changed from the plt argument list. For details, see the table under the "Property prefixes" heading in the Axis properties section.
  • Improvements to the pltpub auxiliary function.
  • Renamed the demo program dice.m to dice3.m to avoid a collision with a file of the same name in the image processing toolbox


  • Added a new example program to the demo folder called gpsLog.m which simulates and analyzes GPS data and is described in more detail in the Programming examples section.
  • Improvements to the ColorPick pseudo object.
  • Added a new routine pltpub.m oriented toward publication quality plots (located in the main plt folder). This function is fully described in the Auxiliary functions section and the example programs pub.m and pub2.m demonstrate its use.
  • Added two demoplt startup options:
    1. demoplt Go - for code verification
    2. demoplt go - for performance testing
    The use of these options are described in the Programming examples section.
  • Fixed some minor bugs in the cursor behavior especially for subplots.
  • Coding improvements to improve clarity of some of the demo programs.
  • Various improvements to the plt help file.


  • The Matlab releases of the last few years do not allow some of the property names to be abbreviated as much as in the older Matlab versions. This caused problems with plt since it used some of these abbreviations. Now plt has been updated to use the full property names when needed to be compatible with the latest Matlab releases.
  • The true source code for plt is now being supplied for the first time! While it is true that the complete .m code for plt (plt.m and pltinit.m) has been supplied starting with the 11Aug09 version, those files don't actually represent the true source code. The true source code consists of the two files plt.mi and pltinit.mi which have not been supplied until this release. These .mi files are run thru a preprocessor (called MPP) which creates the .m files. (This preprocessor has been designed specifically for Matlab and is also included in the plt release for the first time.) While it has been possible for users of earlier versions to edit the plt.m code, in general this was not practical because the code was too cryptic. The biggest reason is that the preprocessor strips out all the comments making it difficult to understand the code. Also the preprocessor makes many substitutions (numeric and otherwise) that make the code more concise but less readable. The source code for plt (.mi) was designed to be readable but the .m code (MPP output) was designed to be concise and efficient. So this is the first release of plt that is useful for those users who want to understand how plt works, and even possibly to modify and/or improve it. The two additional (.mi) files that are included for the first time in this release will not be of interest to the vast majority of plt users since most users don't need to know or are not interested in knowing how plt works and are not interested or capable of modifying the code, but even they may appreciate that the true source code is available should they want it at some future time.
  • A new section of the manual was added: MPP (Matlab Preprocessor) that describes how to use MPP to process the plt source code .mi files. Also the new subfolder MPP was added under the main plt folder which contains the c source code for MPP (MPP.CPP) as well as example files demonstrating the use of MPP. For windows based systems an executable file is also included (in base64 format) but for other operating systems (in the unlikely event that you want to modify the plt source code) you will need to create the MPP executable by compiling MPP.CPP source code.
  • Renamed the gui2.m demo program to afilt.m to better represent the program's function (classic analog filter design). Also this program was enhanced by the addition of a pole/zero plot showing the locations of the roots for the prototype filters. A simplified version of this program afiltS.m is still used as the 2nd example in the GUI building with plt guide.
  • Added the noButton flag to the Options parameter to disable the cursor button group (of four buttons).
  • When the precision of the numeric color triples are not needed, plt has always allowed trace colors to be specified with character arrays such as ['red  '; 'blue '; 'black'] or the equivalent ('rbk')'. However a bug which first crept in with the 08Nov15 version prevented these character arrays from working properly. That bug has now been fixed.
  • Fixed a bug in pltt.m (adding traces) that caused it not to work properly when the TraceMK parameter was used.
  • Fixed several bugs related to the Fig parameter (for adding more than one plt object to a single figure) when used with several other plt features (such as plt('hidecur') the xView slider, helptext, and repositioning mode).
  • Fixed a bug in the repositioning mode relating to several object types (including helptext and slider pseudo objects).
  • Fixed a bug in plt that rendered edit pseudo objects poorly in repositioning mode
  • Fixed a bug that prevented the pseudo edit object from accepting keyboard input if another uicontrol had focus.
  • Added a help button to the demoplt.m program which opens the "Programming examples" section of the plt help file.
  • General improvements to the plt help documentation.


  • The data editing feature has been substantially rewritten to make data editing more natural. This is especially noticeable in applications such as the editz.m demo program which is now far easier to use and allows the help text to be much shorter. See the Data editing section for details.
  • Previously you could define a MotionEdit function which is called when a data editing operation is in progress. Now in addition to MotionEdit, you may also define a functions which get called when a data editing operation is initiated (MotionStart) or terminated (MotionStop). See the details in the Cursor commands section
  • The right click action of the image object's "view all" button has been changed. See details in the Image pseudo object section.
  • Added a vector pretty printing feature to the prin.m function. For a description of this feature, type prin at the command prompt (i.e. without any arguments) and view the last two pages of the prin help file which will appear.
  • Fixed a bug in pltt.m that prevented the updating of the axis limits when new traces were added.
  • Many improvements and corrections to the plt help file.


  • New features have been added to the image pseudo object which also has been generalized so that it now allows the use of more than more than one image object in a single figure window. The default positioning of the optional components have been improved. The number of colormap selections has been increased (from 7 to 10). A new meaning has been added to the Edge parameter. (Specifying "Edge=0" indicates that the complete data range of the input should be used.) A new demo program called julia.m was added to demonstrate some of these new features and also demonstrates several mouse driven gui programming techniques.
  • plt.m was a mere 1440 lines of code for its first release back in 2004, but now it has grown to about 4900 lines which is pretty large for a single function. To make this function more manageable it has been split this into two parts. The first part (pltinit.m) includes the code which creates a new plot (a new plt pseudo object ... if you will). The second part (plt.m) contains everything else, i.e. the code to create, access, or modify all the other pseudo objects. This change also makes plt applications clearer, although you can continue to call plt the same way you used to with previous releases if you prefer. This is explained more clearly in the Calling sequence and line styles section.
  • A simpler and more natural method of using the mouse to adjust the size of an expansion box was added. (The older method is still available). See "Adjusting the expansion box" in the Zooming and panning section of the help file.
  • All eight of the demo programs that display moving traces now also show the number of updates per second. Also programs that include automatic sequencing (curves.m and demoplt.m) display the elapsed time required for the sequence to complete. These measures are useful for comparing GUI speeds between different computers and different Matlab versions. demoplt.m was enhanced, to allow all the demos to be run in sequence without having to click "continue" for each program. This is useful for the above mentioned speed measurements, as well as providing a way to quickly check that no errors where introduced by changes to plt.m or pltinit.m.
  • Many of the cursor commands have been simplified
    1. Commands of the form: plt('cursor',cid,'set','param')
      have been shortened to: plt('cursor',cid,'param').
      The only exceptions to that are that 'set','position' changes to 'setObjPos'
      and 'set','activeLine' has been changed to 'setActive'
      and 'set','expHist' has been changed to 'exRestore'
    2. Commands of the form: plt('cursor',cid,'get','param')
      have been shortened to: plt('cursor',cid,'param').
      The only exceptions to that are that: 'get','position' changes to just 'get'
      and 'get','activeLine' was changed to: 'getActive'.
    3. The 'axisCBaux' cursor command was changed to 'axisCBr'
    4. A new option was added to the 'xlim', 'ylim', and 'xylim' commands to allow bypassing the axis change callback.
    5. All the cursor commands used to be case sensitive, however now they are case insensitive.
    6. The use of the MotionEdit and MotionZoom parameters has been slightly simplified. Also a similar parameter called MotionZup has been added. The julia.m demo program demonstrates the use of this new parameter.
    These new parameters and the simplified cursor command structure are all described in the Cursor commands section
  • The slider pseudo object commands have been simplified by allowing the 'set' argument to be optional.
  • A new optional modifier (j or k) is now allowed with the %w and %v formats in prin and Pftoa. Also cell array arguments are now allowed in the input parameter list. This is described fully in the prin help file (prin.pdf) which you can view by simply typing "prin" (i.e. no arguments) at the Matlab command prompt.
  • Added a new item to the plt menu in the menu bar (Hide/Show cursor controls)
  • The enable parameter of the edit and pop pseudo objects was changed from a two way switch to a three way switch (hide/disabled/enabled).
  • When you click on the menubox Help tag, plt used to search for just two possible help files (plt.chm and plt.htm). This list has been expanded to search for three other possible help files all having the same name as the application followed with the extension .chm, .htm, or .pdf. Also when a chm help file is specified, you now have the ability to specify that the chm file be opened starting at a particular topic. Details are found in the description of the HelpFile parameter in the Options section.
  • Several improvements were made to the HelpText pseudo object. The 'text' command was added to the pseudo object. Also a new option was added for how the text properties are applied. HelpText objects sometimes interfered with the axis callback function, but this problem was solved by assigning the axis callback to the helptext as well.
  • A bug was fixed that prevented you from moving some axes in the mouse driven repositioning mode.
  • Other minor bug fixes.
  • Improved the formatting of the help file, and corrected several documentation errors.
  • A compiled version of demoplt.m is now available (for Windows computers only) which allows you to run all the demo programs without having to install plt (and in fact Matlab doesn't even need to be installed). This may be useful if you are unsure if you want to install plt, but still want to investigate its features. It's also useful so that you can run the demos with signal processing educational value on computers that don't have Matlab. This is not included in the file exchange submission since the file exchange does not permit executable files, but you can download it from my web site here: Amazingly enough it's only a 5 MByte zip file. Nothing to install. Simply unzip the file to the folder of your choice and start it by clicking on the demopltC.exe file.


  • The editz.m example program was improved by combining the two figures into one, both to demonstrate the use of the 'Fig' parameter and to make the application easier to use.
  • The pltsq.m example program was rewritten to make it clearer and more concise. A new checkbox was added (called "Live cursor") which when checked allows the cursor to follow its trace as it changes amplitude. Also a smoothing function was applied to the update rate readout to make it easier to read.
  • The bounce.m example program was enhanced so that it also can display arrows representing the velocity of each marker. This was to demonstrate the use of the Pquiv.m auxiliary function as well as the use of the super button mode of the popup pseudo object (used to control the length of the velocity arrows).
  • Enhanced the gauss.m example program to alternatively display the error terms instead of the convolution functions. A checkbox was added to select whether the error terms should be displayed. These error terms are stored in the lines' Zdata property and shows the value of this technique for storing alternative plot values.
  • Added comments and made other minor changes to several of the other example programs.
  • Added a new OID code of -3. These OID (Object ID) codes are used by the 'xy' parameter and this new code allows control of the position of the main axes as well as its associated cursor controls. Unlike the other OID codes, the position argument may be complex. The complex component adjusts the scaling of the cursor controls. The editz, plt50 and pltvar examples were modified to take advantage of the flexibility provided by the complex position parameter. A full description of the new OID code can be found under the 'xy' parameter in the Axis properties section. Actually this OID code was added for the October release, but I forgot to document it.
  • Some of plt's components and pseudo objects operate repeatedly when the mouse button is held down. The repeat rate of these objects were controlled globally, but now each of these objects may be controlled individually, so that different objects can use different rates. Also a means of disabling the repeat feature is now available. This is explained fully in the description of the edit pseudo object in the Pseudo objects section. (Look for the description of the repeat application data property.)
  • Added an option to the cursor ZoomOut command to control the zoom amount (formerly fixed at 40%).
  • Fixed bugs in pltwater.m which could cause a crash when stopping an updating plot or when closing a figure while the plot is updating.
  • Fixed a bug which created a small memory leak when closing a window that was created using the 'Fig' parameter.
  • Clicking on the "x" or "y" labels in front of the cursor readouts is used allow the use of the edit readout boxes for modifying the axis limits. There was a bug preventing that from working, however that bug has been fixed in this release.
  • Fixed a bug related to using HelpText along with the 'Fig' parameter.
  • Fixed a bug related to using the 'xstr' or 'ystr' parameters along with the 'Fig' parameter.
  • Fixed a bug in pltwater.m relating to its close request function. (This could have caused a crash when exiting a program while the water fall plot was running.)
  • Added help text to the top of the pltmap.m example program.
  • Added the use of the Link to the circles12.m example program so that closing any one of its four figure windows will close all of them.
  • Substantially rewrote the Zooming and panning section to describe these features more clearly and to update it to agree with some minor recent changes in the way these features work.


  • In earlier releases, the 'Fig' parameter existed, but plt could not be called more than once using the same figure. That restriction has now been lifting making this parameter far more useful. The expanded use of the 'Fig' parameter is described at the end of the Labels and figure properties section. That section describes how the 'Fig' parameter may be used to create multiple plots in a single figure and contrasts that with the 'Subplot' parameter which is used for the same purpose. (Each method has different advantages.)
  • The plt50.m example program was rewritten to demonstrate the new use of the 'Fig' parameter. Since that example is focused on data exploration, both of its plots support the full generality of the plt cursoring system with none of restrictions imposed by the use of the 'Subplot' parameter. A new example program called pub3.m was also added to demonstrate the use of the 'Fig' parameter for plots focused on publication quality. The ability to create multiple plots each containing both left and right hand axes made the 'Fig' parameter the right choice for that example. Both examples are described in more detail in the Programming examples section.
  • The use of color selection files has been generalized. A new section of the help file (Default colors) has been added to describe the default color scheme and the use of the color selection files.
  • The default trace color order has been modified somewhat (although the first 13 colors remain the same as before).
  • The cursor behavior when a number is entered into the Ycursor edit box has been changed to be more useful and also more consistent with the behavior of the Xcursor edit box. This behavior is described under "Typing in a cursor location" in the Cursoring section.
  • As before, the dual cursor may be enabled using the "Set dual cursor" submenu of plt menu in the menu bar. However now the "Set dual cursor" submenu acts as a toggle, i.e. if the dual cursor was already enabled, selecting this submenu again will disable it.
  • Enhanced the pltn.m' example program by adding a pseudo popup menu to control the trace thickness.
  • Minor bug fixes and documentation corrections.


  • The reach of the plt toolbox has been dramatically extended from its historical 2D roots into the domain of 3D function plotting by including a new pseudo object called image (primarily for displaying intensity maps) as well as a new auxiliary function called pltwater.m (for waterfall plots). Matlab already has many tools for 3D plotting (mesh, meshc, meshz, waterfall, surf, shading, surfc, surfl, surfnorm, ezsurf, contour, contour3, contourf, plot3, slice, isosurface, smooth3, isocaps, isonormals, ribbon, quiver, quiver3, fill3, stem3, sphere, cylinder), yet when you need to scroll thru slices of a massive 3D data set in detail and use the cursors to identify or mark particular values or features, plt now offers something that those other plotting tools can't provide. For now plt only supports 3D plots of single valued functions, i.e. z = f(x,y). The image pseudo object is fully described in the Pseudo objects section. pltwater.m is fully described at the end of the Auxiliary functions section.
  • A new example program pltmap.m was added to the demo folder to demonstrate the use of the new image pseudo object. Because this example and its underlying pseudo object have such a wide variety of features, a tutorial of sorts is available to help you learn about these features. For the other examples, this information is included as comments in the program header, but this was not done for pltmap.m because of its length. So to find this tutorial, please see the description of pltmap.m in the Programming examples section.
  • A new example program wfalltst.m was added to the demo folder to demonstrate how to use the pltwater.m function mentioned above. Note that all of the controls on the screen were added by plt & pltwater, so wfalltst only had to supply the data to plot. Some help text is added to the plot to get you started, but eventually you will want to read the full pltwater.m documentation at the location mentioned above. The previous plt release included a demo program called wfall.m which demonstrates the basic ideas involved with creating a waterfall plot, and this demo is still included in the demo folder. However, unlike pltwater.m, wfall.m doesn't have the control, cursoring, scaling, scrolling, and annotating options needed to serve as a general-purpose plotting tool.
  • A new auxiliary function pltt.m (which stands for "plt trace") has been added to the plt folder. This function can be used to add traces to an existing plt figure, which makes it the moral equivalent of the hold on and hold off commands that are used with Matlab's native plot command. pltt.m spares you from having to type these extra hold on/off commands and alleviates the confusion that can result from forgetting the hold status. The pltt function is described fully in the new Adding traces section. Related to this new auxiliary function is a new plt parameter, concisely named '+' which allocates space in the TraceID box for traces that are added later with the pltt function. The '+' is the last parameter described in the Trace properties section.
  • A new auxiliary function figpos.m has been added to the plt folder to aid in figure window positioning. The main advantage of figpos is that one can position figures relative to the free space available on the screen. The traditional Matlab positioning coordinates don't take into account the taskbar position, the figure borders, and the title bar size. This makes it difficult to avoid overlapping figure windows with the taskbar when you are trying to take advantage of the entire screen real estate. When you supply a position vector to plt (with the 'pos' or 'position' parameter), plt automatically runs these coordinates through figpos. figpos.m calls on screencfg.m (also in the plt folder) to determine the screen coordinates of the area that is available for the figure windows. Both of these new functions are fully described in the Auxiliary functions section. Many of the demo routines were simplified by taking advantage of this new feature.
  • Quite often you will want to add annotations to the figure (permanent, temporary, or toggleable) to identify certain elements of the plot, list equations used, or to provide the user some help in determining how to control or interpret the plot. To avoid having to repeat similar code for this purpose in many of your GUIs, a new pseudo object was added called 'HelpText' which provides these functions. This pseudo object is summarized in the GUI building with plt section and described more fully in the Pseudo objects section. Many of the demo programs (including curves, editz, gauss, gui2, pltquiv, subplt, tasplt, trigplt, and wfalltst) make good use of this feature.
  • With previous versions, once you drew an expansion box you only had two choices - either left-click to accept the result (i.e. expand the axis to the limits indicated by the zoom box) or right-click to cancel the zoom box, probably to begin again in an attempt to draw the desired zoom box. With this release, you may also choose to make fine adjustments to either the size or the position of the zoom box ... which is usually far easier than simply starting over again. To see exactly how to make these adjustments, consult the paragraph titled "Adjusting the expansion box" in the Zooming and panning section.
  • A few alternative methods of specifying the position and shape of the slider pseudo object were added which provide more flexibility as well as a more compact form for the pseudo slider (in both vertical and horizontal formats). Details can be found in the Pseudo objects section. The bounce.m example program was substantially rewritten to show the use of the new pseudo slider forms (both vertical and horizontal) as well as to demonstrate more sophisticated plotting techniques. Also the new pltmap.m uses many of the vertically oriented pseudo sliders. So many in fact that there would not have been room to fit them all using the full original horizontal style.
  • A simplified method of using the 'TIDcolumn' parameter was added. For full details, see the description of this parameter in the Trace properties section. The pltn.m example program was simplified by taking advantage of this new method.
  • In the prin command, two optional modifiers (+/-) for the W format were added that allow the output to be padded with blanks. Also an easier way to view the prin help file (prin.pdf) was added - simply type prin (i.e. without arguments) at the Matlab command prompt, and the help file will appear.
  • The ability to change the name of the trace (as it appears in the TraceID box) after the initial plt call that specified these trace names. See "Right-clicking on the Cursor ID Tag" near the end of the Cursoring section.
  • A new cursor command ('updateN') was added which has the same effect as the 'updateH' command except that the cursor callback (defined by 'MoveCB') is not executed. Details in the Cursor commands section
  • The default figure name (if none was specified with the 'FigName' parameter) used to be plt but now the name of the function that is calling plt is used as the default name.
  • plt('pop',H,'get') which is already an abbreviation for plt('pop',H,'get','index') may now be further abbreviated as plt('pop',H).
  • plt('edit',H,'get') which is already an abbreviation for plt('edit',H,'get','value') may now be further abbreviated as plt('edit',H).
  • plt('slider',H,'get') which is already an abbreviation for plt('slider',H,'get','value') may now be further abbreviated as plt('slider',H).
  • The argument for the 'HelpFile' and 'HelpFileR' parameters normally specifies document to display, however, now the parameter may also be a Matlab command to be executed.
  • Many improvements to the demoplt.m program including:
    • Added a string (lower right corner) that shows the number of (uncommented) lines of code used in the currently-selected example program. At a glance, this number gives you an idea of the complexity of the example relative to the other demos.
    • Added a modal dialog on exit to control whether changes to the setup should be saved in the demoplt.mat configuration file. (If no changes were made to the configuration, the modal dialog is skipped.)
    • A history of the changes to the color configuration is displayed at the top of the listbox. This is partly done just to demonstrate the use of the ColorPick callback function.
    • The size of the figure window is preserved in the configuration file, but the figure window is always placed in the far lower right corner of the screen to minimize the overlap between the demoplt figure and the example programs being displayed.
  • Many improvements to the curves.m example program including:
    • Added four additional interesting curves to the collection.
    • Greatly enhanced the program's educational value by adding annotations to the plot area describing many details of the currently displayed set of curves.
    • Added a way to reset the curve parameters to the default settings. (Default button)
    • Improved the way functions may be defined in complex or parametric form.
  • Fixed a bug introduced a few years ago causing plt to crash when improperly editing an edit pseudo object. Also fixed a dozen or so other minor bugs in plt and the demo programs.


  • Major enhancements to the subplot capabilities:
    • Previously you were limited to two columns of plots. As of this release any number of columns are allowed. A new example program called subplt16.m was added to demonstrate this new flexibility.
    • A way of altering the default vertical spacing between plots is now provided. (Previously only the horizontal spacing was adjustable.)
    • Previously the cursors and x-axis limits for all the plots within a column were synchronized. With this release, this synchronization is optional and is referred to as "linked" mode. The new alternative mode is called "independent" mode, and as the name implies, all plots may have different x-axis limits and different cursor locations. A new example program called subplt20.m was added to demonstrate this new mode. Note that the independent mode allows you to pack even more plots into a given area.
    • Since subplots were added late in the development of plt, many plt features did not work appropriately when subplots were enabled. For example the peak/valley finder and marker select button did not work. Also 5 of the tags in the menu box did not work for subplots (LinX, LinY, Mark, Zout, XYrotate). I'm happy to report that all those problems are now fixed. The delta cursors now also work when subplots are enabled, however you can only use them on the (lower left) main plot since there isn't enough room to display the delta cursor readouts for all the subplots.
    • A few enhancements to the subplt8.m example program, which now uses the default Matlab color scheme with a modified trace color order (accomplished using plt's 'ColorDef' argument).
    • The order of the y-axis cursor readout edit boxes was swapped (left to right) as that felt more natural. In any case, the color of the cursor readout edit boxes are linked to the color of the trace that is being cursored making confusion unlikely.
  • Trace data may now be included in the plt argument list using cell arrays. Full details on how to use this are included in the Calling sequence section. The gauss.m demo program was modified (and simplified) by taking advantage of this new option.
  • When the multiCursor is enabled, plt previously added a cursor marker to every trace. Now however, cursor markers are not added to disabled traces or to traces whose Xdata differs from the currently active trace. The full details are in the Cursoring section.
  • The trace color order was modified slightly. To see what the new trace color order looks like for the first 99 traces, see the section called Selecting traces. To see a list of the trace colors in terms of the RGB triples, see the description of the TRACEc parameter.
  • The 'Position' or 'Pos' argument specifies the [xleft ybottom width height] position of the plt figure window as before, however now you may specify just the size by using a 2 element vector in which case the xleft and ybottom values will be set to their default values. For example 'Pos',[500 600] would be equivalent to 'Pos',[9 55 500 600] since the default values of xleft & ybottom are 9 & 55 respectively.
  • A new option (replace vs. append) was added to the 'ColorDef' argument. Also the default changed from append to replace. See the details in the Colors section.
  • The FigBKc, PltBKc, TraceC, xyAXc, xyLBLc, GRIDc, and TraceC parameters continue to accept standard Matlab color triples as before (i.e. a row vector of 3 numbers all between zero and one). But now there are two additional color specification formats allowed. The first is "percent", meaning that [15 35 92] is equivalent to the Matlab color triple [.15 .35 .92]. The 2nd alternative method is to use a single number to represent all three colors. Using that method the color above would be represented by the number 153592. Of course if you prefer the standard Matlab style, you can ignore all this, but otherwise, check out the full description in the Colors section.
  • Various improvements to the curves.m demo program. These improvements don't demonstrate any additional plt features, however the new curves that have been added rounds out this collection of classic and unusual plane curves ... perhaps providing some educational or recreational value.
  • Fixed several problems relating to the screen positioning of objects when using the new graphics engine of R2014b or later.
  • Fixed errors in the documentation describing the Cursor commands, the xy parameter, and the Options parameter. Also made other minor documentation corrections and improvements.


  • Enhanced the pltquiv.m example program to demonstrate data editing on quiver plots, the use of the MotionEdit parameter, and real time Hermite polynomial interpolation.
  • Added a default for the Cursor ID, simplifying many of the demo programs.
  • Simplified data editing routines by adding the cursor index to the 'Dedit' figure application data. Added a full description of the Dedit array in a table at the end of the Data editing section.
  • Minor improvements to the grid pseudo object.
  • Multi-line titles are now allowed. See the Title parameter in the Labels and figure properties section.
  • Added the title property prefix (^) which is described in Axis properties section.
  • Added right click actions to the "pub" button of the pub2.m example and to the "Delete P/Z" button of the editz.m example
  • Improvements in the plt('datestr') function
  • Fixed bugs relating to the use of the 'Fig' parameter.
  • Fixed a bug which caused the right click action to be executed when double clicking on the LinX/LogX or LinY/LogY menubox tags.
  • Fixed a bug in the xView slider feature that caused it to interfere with the graph title.
  • Fixed a bug in the 'Nocursor' option that unintentionally left the cursor marker visible.
  • Fixed bugs causing error messages when cycling quickly thru demoplt.
  • Many corrections and improvements to the help file especially in the Pseudo objects section which was substantially rewritten to include the motivation behind these objects.


  • Added the "multiCursor" feature which allows you to cursor all plot traces simultaneously. Usually this cursoring mode is enabled from the Yedit menu, but sometimes you may want to have this mode enabled at startup. This can be done using the new "multiCursor" Options item. (As with all the other option items, only capital letters are significant so if you want to be concise just the letter C is sufficient). The trigplt.m demo program was modified to use this new options item to enable the multiCursor feature. The multiCursor feature is more completely described in the Cursoring section.
  • Added the "xView slider" feature that offers yet another way to pan and zoom the display horizontally. It is especially useful with long time records because of how easy it is to use and how well it gives you feedback about where and how much of the data you are viewing. Usually this feature is enabled from the Yedit menu, but sometimes you may want to have the xView slider visible at startup. This can be done using the new "xView" Options item. (As with all the other option items, only capital letters are significant so if you want to be concise just the letter V is sufficient). The pub2.m demo program was modified to use this new options item to enable the xView slider. The xView slider feature is more completely described in the Zooming and panning section.
  • Modified the plt50.m demo program to demonstrate how to modify the cursor size and shape.
  • Fixed a bug in the implementation of the Link parameter (with pre-R2014b versions)
  • Fixed a bug in the initialization of the cursor data window (with R2014b only)
  • Fixed a bug which caused plt to behave improperly when given an empty 'Right' parameter.
  • Various documentation improvements


  • Although plt retains all its previous capabilities plt has been expanded and refocused as a GUI building tool, primarily for applications which include one or more 2D plots. This was accomplished by enhancing the pseudo objects and by adding the plt move command to allow you to move or resize all the graphical objects using the mouse. When you reposition or resize an object, its new coordinates are displayed in the command window so that you can make the new locations permanent by embedding these coordinates into your program. These operations are described in a new section of the manual: GUI building with plt
  • In addition to the plt move command, you may also enter the repositioning mode by right-clicking on the cursor delta button. When you do this, the delta symbol on the button changes to a double right arrow to indicate that you are now in repositioning mode. Also the uicontrols will be grayed out to indicate that these controls may be repositioned/resized. Right-clicking on this button a second time cancels the repositioning mode, changes the button symbol back to delta, and restores all the controls to their original functions.
  • Two new example programs (gui1.m and gui2.m) where added to help you learn how to use the new plt GUI building features. An alternate version of gui2.m called gui2ALT.m is also included in the demo folder to demonstrate an additional approach to the problem that may be instructive. Both of these new examples use Matlab features not found in Matlab v6.1 so alternate versions (called gui1v6 and gui2v6) are available for running on that version. demoplt queries the Matlab version and automatically runs the appropriate version of gui1 and gui2.)
  • Support for the latest version of Matlab (R2014b) has been added. The plt options related to the line erasemode are ignored when running R2014b since The Mathworks has abandoned support for the erasemode line property. The erasemode options continue to work as before for all older versions of Matlab (dating back to Matlab 6.1). The defaults for the grid style and color have changed somewhat because of this, and this is described in the default section of the GRIDc parameter. As before right-clicking on the Grid tag in the menu box toggles the grid style between solid and dashed lines.
  • Reorganized the plt item in the menu bar. (Also plt Hardcopy was moved from the file menu to the plt menu.) The new plt menu now shows the mouse shortcuts (in blue) for most of the submenus. These shortcuts are often more convenient since the menubar is hidden by default.
  • The AxisPos parameter which provides a way to reposition/resize the main plotting axis and/or the TraceID box is still supported for backwards compatibility, but for new programs a more versatile xy parameter was added. It serves similar functions but also allows you to reposition the menu box as well as any plotting axis inside the plt window. The xy method of specifying the axis size and positions is simpler and easier to use and is also compatible with the new repositioning mode mentioned above. (All the objects that can be moved and resized via the xy parameter may also be moved and resized using the mouse.) The demo programs that used the AxisPos parameter were modified to use the xy parameter instead. A complete description of the new xy parameter may be found at Axis properties
  • Several enhancements to the Edit pseudo object:
    • Edit objects may be incremented or decremented by a fixed value as before, but now may also be incremented or decremented by a percentage of the current value.
    • The value property was split into two different properties (value and val). They differ only in that when you set the latter one (val) the edit object's callback does not get called.
    • An option was added to allow a label to be associated with the edit pseudo object.
    • A more concise form for creating the edit pseudo object was added for convenience.
    • Several get commands where added allowing you to query the current setting for any of the edit pseudo object parameters.
    • Edit objects now come in two types, type 1/2 using figure/axis coordinates respectively. Type 1 is usually the most convenient. (Previously only type 2 was supported). See details at Pseudo objects
  • Several enhancements to the Popup pseudo object:
    • The right click operation of Popup pseudo object (which advances the popup without opening it) was enhanced so that holding down the right mouse button continues to advance to the next selection for as long as you hold down the button. The repeat rate may be altered by the same method used to control the edit pseudo object repeat rate.
    • An option was added to allow a label to be associated with the popup pseudo object.
    • An option was added for swapping the role of the left & right buttons (super-button mode).
    • A method for opening or closing the popup from a program was added.
    • Setting the index of the popup using the 'index' parameter used to call the popup's callback function after the index was set, just as if you had clicked on that selection from an opened popup. Now the callback will not be called. However if you want the callback to be called in this circumstance, specify the negative of the index as the index parameter.
    • A more concise form for creating the popup pseudo object was added for convenience. See details at Pseudo objects
  • Several enhancements to the Slider pseudo object mostly related to the log increment mode. Also the calling sequence was altered to allow easier use of the optional parameters.
  • A new mode was added to the DualCur parameter that allows specifying the dual cursor trace as an offset from the primary cursor. See the demo program gui2.m for an example showing the utility of using this mode. Also the ability to select the DualCur trace interactively was added to the plt menu. See the Dual Cursor section for more information.
  • A new parameter (CloseReq) was added which allows you to specify a function to be executed when the plt window is closed. Details about this new parameter may be found at Labels and figure properties. The plt50.m, wfall.m, and gui2.m example programs where modified to demonstrate the use of this new parameter.
  • A new parameter (TIDc) was added which allows you to choose the background color for the TraceID box. Details about this new parameter may be found at Colors Also the solid patch used in the TraceID box to indicate that the trace is on the right hand axis is now optional. To see how to do that, look at the details of the TraceID parameter here: Trace properties
  • The demo program pltsq.m was rewritten to use pseudo popups in place of the uicontrol popups of the previous version. Also the two buttons (start & stop) were replaced with a single pseudo popup in the "super button" mode. The older version was renamed to pltsqALT.m and is also included in the demo folder so you can compare the relative merits of these control types.
  • A new example program (pub2.m) was added which demonstrates how to create a plot optimized for publication by first setting up the desired viewing window using the cursors on a data exploration mode plot. Another goal of this particular example was to demonstrate as many unusual plt parameters and programming techniques as possible.
  • The cursor mainCur command was renamed to update and the cursor updateH (update hold) command was added (similar to the update command except that y-axis limits are not permitted to change.
  • The showTrace command was renamed to show. Also new is that this command may now be used for both setting and reading which traces are currently visible. The example program gui2.m demonstrates both uses of the show command. See details at Calling sequence
  • All the pseudo objects that accept a 'position' argument will also now accept the more concise 'pos' form of this parameter.
  • Several enhancements and bug fixes to the various example programs.
  • Many improvements and corrections to the plt help file.


  • Enhancements to edit pseudo object: Values can now be continually incremented or decremented by holding down the mouse button. Absolute incr/decr values may be specified (as before) or now they may be specified as a percentage of the current value. incr/decr values may now be used with floating point edit pseudo objects as well. (Zero increment disables this feature.) Position may be specified in normalized units (as before) and now data units may be used as well. The slider in the circles12.m demo program was changed to an edit pseudo object to illustrated its use.
  • Improved log grid lines. Now includes subdecade grids for 6 decades or less
  • HardCopy figure window now defaults properly for bmp files
  • Improved appearance of the menu box (background and border colors)
  • Added right click action to "LinY/LogY" tag. It now brings up the hard copy dialog.
  • Added 'Link' parameter to force groups of plt figures to close together. The demo programs editz.m and tasplt.m were modified to take advantage of this new parameter
  • Enhanced a few of the functions plotted in curves.m
  • Added images & thumbnails of all the example programs to the help file
  • Fixed various bugs related to log axis scaling and panning
  • Fixed LinX/LogX switching bug for subplots
  • Fixed bug which prevented data editing of subplots
  • Fixed bugs with the subplot parameter and in the weight.m demo program
  • Fixed bug occurring when using the 'MoveCB' parameter with subplots
  • Fixed bug occurring when right-clicking on the grid tag using default colors
  • Other minor bug fixes.


  • Renamed vbar.m, ebar.m, quiv.m, and ftoa.m to Pvbar, Pebar, Pquiv, and Pftoa to reduce the probability of name collisions (since these files typically reside in the plt folder on the Matlab path).
  • Added Linesmoothing to the list of strings that may appear in the Options parameter. When this option is specified, the Linesmoothing property of the traces is set which tells Matlab to use anti-aliasing techniques to make the traces look smoother. You can also toggle the Linesmoothing property by right-clicking on the marker button (labeled with "o"). See important details about this property in the Cursoring section
  • Changed the default characteristics of the grid lines. The new default is solid lines instead of dashed lines and the default color has changed from dim grey (30%) to very dim gray (13%). Also the default erase mode for the grid lines has changed from 'norm' to 'xor', The grid linestyle may now be selected by using the new GridStyle parameter. The Linestyle parameter was also added to the 'init' action of the grid pseudo object. The grid lines used to update only when a zoom or pan operation was complete, but this has been changed so that the grid lines are now updated during the pan and zoom operations. The color file format was updated to include the grid lines erase mode as well as the new GridStyle parameter
  • Left-clicking on the Grid tag in the menu box has the same meaning as before (i.e. toggling between grid lines and ticks) however now you can also right click on the Grid tag. The effect of this right click is to toggle back and forth between the current default grid style and something similar to the older grid style (i.e. slightly brighter grey dashed lines in normal erase mode).
  • Left-clicking on the Menu tag in the menu box has the same meaning as before (i.e. toggling the menu bar visibility) but there is a new meaning to right clicking on the Menu tag. The effect of this right click is to open a new figure window containing a textual view of the trace data. See Cursor Data Window in the Menu box section
  • Replaced the "Color/Lines" heading in the menu bar (which included 4 submenus) with the "plt" heading containing the original 4 submenus and 4 additional ones. Three of the new menus mirror right click actions of the GUI objects, but the menu bar makes the actions easier to discover and remember. The 4th action (Delete Cursor Annotations) is a new feature which allows you to quickly delete all annotations entered using the Mark tag. (Previously these annotations could only be deleted one at a time.)
  • Added the swap x/y action which swaps the x and y data of all traces (i.e. displays inverse functions). This action is available from the menu bar (plt menu) as well as by right clicking on the LinX tag
  • The installation has been simplified by always including both the compiled help file (plt.chm) as well as the all individual html files used to create it. By default PC systems will open the plt.chm compiled help file and Unix based systems will open plt.htm (the top level html file). However you can change these defaults. See the Installation instructions for details.
  • As before the HelpFile parameter modifies the help tag left click action. In a similar manner, the new HelpFileR parameter modifies help tag right click action. For a full description of these parameters see Options.
  • Enhancements to the ColorPick pseudo object.
  • Improvements to the example programs include:
    • Fontsize popup added to demoplt.m
    • # of lines control added to pltn.m
    • Cycle button added to curves.m
    • The upper plot in editz.m now demonstrates the use of Dual Cursors.
    • Other more minor enhancements.
  • Y-axis metric prefixes are now disabled when using the SubTrace parameter
  • Fixed a bug which sometimes prevented you from being able to close the plt window.
  • Many other bug fixes and documentation improvements.


  • Removed the plt('ftoa') and plt('vtoa') commands and replaced and expanded on this functionality with the separate functions prin.m and ftoa.m. (ftoa is called by prin and is not usually called directly) See the new file prin.pdf  for a description. Modified demo\pub.m as well as several of the other example programs to take advantage of the new features provided by the prin() function.
  • The cursor control buttons (a group of buttons in lower left corner) previously consisted of 3 buttons (peak finder, valley finder, and delta cursor). As of this release a 4th button is included in this group (called the marker button) and is labeled with the letter "o". The function of this new button is described in the Cursoring section but if you click on this button 3 times you will already know all it does.
  • Left/right-clicking on the x-axis label still moves the cursor left/right one data element as it did before, but now this has been enhanced so that the cursor continues to move as long as you hold down the mouse button. The default repeat rate is 33 times a second, but this is adjustable. See the full description in the Cursoring section. This gives the x-axis label nearly all the features of the optional x-axis slider without taking up any extra space.
  • Including the letters H or Hidden in the options string now instructs plt to leave the plt figure hidden until the figure visibility property is latter set to 'on'.
  • Fixed a bug that appeared only on MACs that caused incorrect displays of some floating point numbers in edit boxes.
  • Other minor bug fixes.


  • Changed the focus of plt somewhat (in the Introduction) from plotting to GUI tools although many users will still think of plt primarily as a substitute for plot and plotyy.
  • Added the ColorPick pseudo object.  (See Pseudo objects). The demoplt.m function was modified to demonstrate how to use this new pseudo object.
  • The data editing capabilities of plt (See Data editing ) were completely revamped, both to make it easier to use and to allow its use with subplots. The demo\editz.m demo routine  was substantially rewritten to take advantage of the new data editing interface.
  • Modified the demo\trigplt.m demo routine to show how to create a "clipboard" button as well as how to modify the position and appearance of the traceID box.
  • Modified the demo\pltvbar.m demo routine to show how to use the Grid pseudo object to display some tabular character data.
  • The plt('ftoa') function was enhanced to include an additional formatting code ( 'c' ) which is useful for displaying color triples.
  • Many minor bug fixes.


  • Added the 'SubTrace' parameter to allow more flexibility on how traces are assigned to the various subplot axes. (See SubTrace Parameter)
  • Added a new interpretation of the 'SubPlot' parameter which allows you to adjust the spacing between two columns of subplots. (See Subplot Parameter)
  • The demo program demo\pub.m was expanded to include yet one more plot to show how subplots can be used when formatting plots for publication and to show how the SubTrace parameter is used.
  • Fixed bugs which were causing the delta cursor and peak/valley finder features to work incorrectly when using Matlab 2009b or newer.
  • Fixed bugs which caused the AxisPos parameter to be interpreted incorrectly when used with subplots.
  • Added the 'MotionEdit' parameter which allows you to specify a function to be executed while the mouse is being moved during a data edit operation. (See Mouse Motion Functions.) The demo\editz.m  program was updated to take advantage of this feature. If you have used previous versions of editz (which updated the plots only after you have selected the final root location), you will recognize the benefit of seeing the transfer function plot update in real time as you drag a root to a new location.
  • In a similar vain to 'MotionEdit' the 'MotionZoom' parameter was added which allows you to specify a function to be executed while the mouse is being moved during a display zoom operation (i.e. while the zoom box is being dragged). (See Mouse Motion Functions.) The demo\gauss.m function was updated to take show how to use this feature.
  • Fixed a bug which caused the display to flicker while a plt window was being initialized.
  • Added more useful information to the "Calling sequence" section of the documentation.


  • The demo program demo\pub.m was expanded to include an additional plot (bar chart).
  • A bug was fixed that caused an error when null strings were specified in the TraceID parameter.
  • The cursor ID (cid) is now saved in the axis user data even for subplot axes.
  • Changes for compatibility with Matlab ver 2009b


  • Added a cursor mode to show distance from cursor to the origin or to the marked location, i.e. abs(x+iy). See Average, RMS, Slope, & Distance readout section in Cursoring.
  • Improvements and bug fixes to the "plt hardcopy" function (from the file menu or optionally in the menu box). Defaults are now saved in pltHcpy.mat in the folder containing plt.m.
  • Fixed a bug that caused the cursor to misbehave when cursoring non-monotonic traces on the right hand axis.
  • Fixed a bug that caused annotations added with the "mark" feature to sometimes be associated with the incorrect axis.
  • Fixed a bug that sometimes caused the grid lines to not initialize properly until the first time you clicked on the figure window.
  • Fixed some bugs related to grid lines on subplots (turning on/off via the menu box tag or via the 'Ticks' options argument).
  • Fixed bug in setting x-axis limits for right hand column of subplots ('Xlim' parameter).
  • Improved cursor hiding feature (right click of y-axis label) to work with subplots as well.


  • Added a new example (pub.m) to the demo folder to show how to optimize a plot for publication (instead of the typical data exploration uses of plt). Also demonstrates the use of the new property prefix characters described below.
  • Previously there were two property prefix characters ('+', '-') which refer to the left and right axis properties. (Without the prefix characters plt assumes properties are to be applied to the line objects.) Now three additional prefix characters have been added ('<', '>', '.') which refer the properties to the left y-label, right y-label and x-label respectively. A property may be preceded by more than one prefix character.  For example '>.-FontSize',14  will change the font size of the right y-label, the x-label and the tick marks of the right hand axis. See Axis properties for details.
  • Improved demoplt.m so that it is easier to tell which demo is currently running.
  • Fixed a bug with the workspace plotter that occurred when the workspace contained a large number of variables.


  • Fixed a bug in plt's Edit line selection from the color menu.
  • Fixed a bug in demoplt.m that would sometimes cause an error if you clicked in the listbox window.
  • Fixed a bug in the plt('open') command for non Windows systems
  • Significant enhancements to the winplt.m demo program including the use of an application specific help file as well as the use of a popup control to edit a vector (the window kernel in this example).
  • Added the plt hideCur command. Equivalent to right-clicking on the y-axis label. See Cursor commands.
  • Added the plt('showTrace',e) command. For details see the "DIStrace" section at Trace properties.
  • Documentation updates


  • All the example routines in the demo folder (except the scripts) were substantially rewritten for improved clarity.
  • The winplt demo now demonstrates how to include two help tags in the menu box (one for plotting help and the other for application specific help). The files winplt.chm and winplt.pdf were added both to demonstrate this feature and to provide more extensive information about the winplt demo program.
  • The demoplt.m program was rewritten to make it easier to run the individual examples as well as auto-sequence thru them. A listbox was added to allow easy viewing of the demo programs help text.
  • In addition to pure strings to be evaluated, the plt callback functions now allows you to specifying a function handle of the form @func as well as the cell array form {@func, arg1, ar2, ... argn} which lets you provide arguments to the callback function. This applies to the plt parameters moveCB, axisCB, TIDcback, Xstring, and Ystring as well as the callbacks for the auxiliary plt functions edit, pop, and slider. Note that you can't take advantage of the string substitution features of these callbacks when using the function handle forms. This form is now used in many of the Programming examples.
  • Added the ability to modify properties of the left or right axis using plt parameters. (See +AxisProp, -AxisProp). This feature is demonstrated in the demo\pltvbar.m example program.
  • Enhanced the data editing features to include the ability to add or remove data points from a trace. Also added a more natural way of entering the data edit mode. See data editing for details.
  • Added a new set command ('val') to the plt('slider') pseudo object. See Pseudo objects
  • Added the plt('save',file) command. See menu box for details.
  • Fixed a bug that caused the right hand axis to be missing from getappdata(gcf,'axis'), as well as a minor bug fix in the data editing mode and a bug fix relating to a rare crash when saving a file from the menu bar.


  • This is the first release which includes the full .m  source code. The pcode or dll versions are no longer needed.
  • Added the TraceMK parameter to allow you to include the line types in the trace selection box. See the demo programs demo\trigplt.m and demo\subplt.m  for examples of using this parameter. See Trace properties for a complete description of the TraceMX parameter.
  • Added a new example to the demo folder (trigplt.m) to demonstrate the use of the TraceMK parameter as well as the use of the slider pseudo object.
  • Added the Fig parameter to allow plt to use an already opened figure window instead of creating a new one. See Labels and figure properties for a complete description of the Fig parameter.


  • Fixed a bug which caused plt to crash when called from a guide application.
  • Fixed a bug which sometimes caused the wrong foreground color in the cursor edit boxes.
  • Fixed a bug which sometimes caused the Xlim or Ylim parameter to be ignored.
  • Improved the operation of the x-axis slider.


  • The SubPlot parameter was added, a major enhancement in plt's ability to place multiple plots in a figure window. This is more flexible and far easier to use than the subplot method introduced in version 19Aug08. The demo\subplt.m and subplt8.m examples were rewritten to use the new SubPlot parameter. The weight.m example (which was also simplified by using the new parameter) also demonstrates a trick for allowing multiple traces in each subplot. See Axis properties for a complete description of the SubPlot parameter.
  • The Xlim and LabelX parameters now allow cell array inputs so that they may specify values for the right hand column of subplots. The LabelY parameter now allows a cell array input so that you can specify labels for all the subplots as well as for the right hand axis of the main plot, and Ylim parameter can take a cell array input to specify limits for both the left and right hand axis of the main plot.
  • Added an easier way to remove cursor objects for production plots. See the -All and the Nocursor items under the Options parameter. (The last figure of the circles12.m example demonstrates this usage.)
  • right-clicking on the Menu tag in the menu box will now toggle the line style used for of all traces. (See Menu box)
  • Added the Lhandles, axis, and cid cid figure application properties. (See Calling sequence)
  • Added the 'tag','MenuBox' property to the menu box axis to make it easier to find.
  • Added a new parameter to the plt('grid','init',... command (the erase mode). (See Auxiliary plt functions). Also the default erase mode for the grids has changed from xor to normal. You may select the exclusive-or erase mode for the grids by specifying a grid color containing a negative value (e.g. 'GRIDc',[0 -.2 .4]). The actual grid color used in this example is [0 .2 .4]).
  • Added a special case to the plt('cursor',cid,'set','activeLine',a,k) command for when a is zero. (See Cursor commands)
  • Added a special case for null trace ID strings. (See Trace properties)
  • Fixed bug that could cause a crash when selecting logarithmic y-axis.
  • Fixed bug that caused a crash when using the color selection box to edit plot colors.


  • A zero is now allowed for the 3rd or 4th element of the 'position' parameter to indicated that the width or height of the window should be chosen so that circles will look symmetric. However after stretching the figure size with the mouse, the circle will then look like an ellipse. If you want the circle to look symmetric even after the figure window is resized, you should follow the plt command with the command axis('equal').
  • The example programs circle12.m  and  editz.m  were enhanced to demonstrate the feature mentioned above.
  • The TraceID box has been made wider in situations where it will not run into the y-axis label.
  • The file plt.dll is now compressed into a zip file called This replaces a different type of compression used in earlier releases that caused some errant virus protection programs to flag this file as a virus. (For a description of this file, see the installation instructions or see the last item in the 12-Mar-08 release notes).


  • Added two new example programs (demo\subplt.m and subplt8.m) which show how to put several plots (each with its own cursor) in a single figure window. The cursor move callback (moveCB) and the axis callback (axisCB) are used to keep the plots synchronized.
  • The way that plt.chm is opened when you click on the help tag has been improved. Previously plt and any application calling plt would hang until the help window was closed. Now you can continue to use plt while the help window is open.
  • The axis change (axisCB) callback is now called (as it should) when you click on the Zout or XY<-> tags in the menu box.
  • Now when you right-click on the y-axis label, the menu box and all cursor objects disappear. Right-clicking again causes the objects to reappear. This is useful for making screen captures of the plots since these objects are used for data exploration and are normally just a distraction in a hardcopy. See cursoring.
  • The cursor('get','obj') call was added so that one can easily get the handles of the cursor objects.
  • The cursor('set','VISon') and  VISoff calls were improved so that they now include control of the xstring and ystring objects, the x-cursor slider and the cursor id string.
  • A bug was fixed which caused plt to render some text improperly when the default text interpreter was changed.
  • A bug was fixed which sometimes caused the plt cursor to change shape after the data editing feature was used.


  • Added a new example program (demo\movbar.m) which shows a simple way to start and stop a moving plot as well as demonstrating the use of the xstring parameter.
  • Added the ability to set properties of the main axis from within the plt call. (Just add a "+" in front of the axis property name. For example +FontSize will set the axis font size property. For an example of how you might use this feature, see the demo\pltvbar.m demo program.
  • Added a cursor function to call the user defined cursor callbacks. (See the mainCur function and demo\movbar.m)


  • Added the ability to link the left and right axes for panning and zooming. This option is enabled by default. Use the new AxisLink parameter to turn off linking by default. Regardless of the status of the default you may toggle the axis linking by clicking on the right-hand y-axis label. The divide sign indicates the axes are unlinked (i.e. divided).
  • Improved the demo\editz.m demo program, which now displays phase as well as magnitude. It also demonstrates the use of the new AxisLink parameter
  • Previously although a plt figure could be saved (.fig), when the figure was reopened the usual plt cursor controls would not be available. In this release, plt save and plt open items have been added to the file menu. Figures saved via the plt save menu are saved with a .plt extension (although like .fig files they are actually ordinary .mat files). You can reopen the figure from a file browser dialog box by selecting the plt open menu or by typing plt open at the command prompt. Or at the command prompt you can type plt open filename.
  • Fixed a bug relating to metric prefixes on the y-axis. (The scaling was improperly applied to the right hand axis where as the intention was that it should be applied only to the left hand axis.)
  • Fixed a bug relating to the modification and saving of color schemes when a right hand axis was being used.


  • Changed the method of rendering the right-hand axes to avoid the problem when plotting overlapping or very dense data sets.
  • Changes for compatibility with Matlab ver 7.5
  • Previously data editing only worked on traces on the left axis. Now it works on the right axis as well.
  • Renamed the "COLORc" parameter to "COLORdef" for clarity.
  • Eliminated the flicker and window movement you used to see when starting plt.
  • Fixed bug in plt('datestr') and other minor bug fixes.
  • Added the plt.d  file to this release. This dll is only useful for compiled applications using the older Matlab compiler (ver 2.2) that shipped with Matlab 6.1. Feel free to delete this file if you are not using that compiler. (To use this file, rename it to plt.dll)


  • Many of the example programs where modified to improve clarity.
  • A new example program (demo\dice.m) was added that shows how to plot a function as it is as it is being computed (i.e. the plot shows the function growing in length).
  • A new feature was added to the x-axis label. Now when you left/right click on this label the cursor x-axis position increments/decrements by one data index. See the cursoring section for details.
  • The x-axis slider now provides a more natural functionality. See the cursoring section for details.
  • The cursor 'maincur' call now changes the axis limits if necessary to keep the cursor in view.
  • Modified the default trace color ordering. The most significant change is that yellow is now used as the color of the 13th trace instead of the 7th. This means that yellow will be used less often (which is good since yellow doesn't normally print well).


  • Expanded the pltsq.m example to show how all the traces can be cursored at once
  • Several of the demo examples were edited to improve readability
  • Removed the 'noshift' option that was added in the previous version. (This proved to be misguided).


  • The plt('datestr') function has been modified slightly. For dates between 2000 and 2099, it now uses two digits for the year instead of four. For example "12-Jan-2007" becomes "12-Jan-07". This only applies to date string formats 0 and 1.
  • A new method of drawing a zoom expansion box is provided ... hold both mouse buttons down, and drag. (Actually this method was previously available as an undocumented feature.)
  • The demo\tasplt.m example program was updated and simplified. It now shows how to use a right hand or top axis to plot in more than one unit.


  • The plt('slider') function has been reworked to be easier to use. Several arguments were reordered with improved defaults. See winplt.m and the new wfall.m for examples of how to use the slider object.
  • A new example program (demo\wfall.m) was added to demonstrate waterfall plotting as well as extensive use of the plt('slider') function.
  • Now the callback function defined by 'moveCB' is not called by events initiated from outside the figure window containing the cursor. (For example a button push that moves the cursor in another figure window would not activate the callback.) The reason for this change was to prevent infinite loops when figure A modifies figure B's cursor and visa versa. If you do want to enable the callback for external events, insert an extra semicolon as the first character of the moveCB callback string.
  • Fixed bug causing the cursor to move to the wrong y-axis position for traces on the right hand axis (only a problem when clicking in the axis area). Also improved the ability to select the desired line when several right hand traces are close together.
  • Removed the 'NewLimit' parameter. (It had the same function as 'axisCB'.)


  • Removed the 99 trace limitation for cases where the TraceID box is not used.
  • Added the 'moveCB' and 'axisCB' parameters to plt as an alternate to the equivalent plt('cursor',...) commands. The editz.m example was modified to take advantage of this.
  • Added a new example (demo\bounce.m) showing how to use matrix arguments to create many line objects at once. Also shows how to avoid plt's 99 trace limit by disabling the TraceIDs.
  • Modified the pltn example to allow displaying an unlimited number of traces.
  • The colors specified by TRACEc are now used in a cyclical fashion to allow specifying fewer colors than traces.
  • The ENAcur and DIStrace parameters are now extended if they contain fewer elements than the number of traces.
  • Added TIDcolumn to the documentation (inadvertent omission).
  • Fixed a bug causing the "Mark" function to crash when TraceIDs are disabled.
  • Fixed a bug causing incorrect colors when choosing COLORc,'default'.


  • The 'Xstring' and 'Ystring' parameters where added to provide additional textual information related to the plotted data including customized cursor readouts. The pltn.m, tasplt.m, editz.m examples now use this feature to good advantage.
  • The callback functions defined by 'TIDcback', 'Xstring', 'Ystring', 'moveCB', and 'axisCB' can now contain strings within strings defined using a single double quote character on either side of the string, instead of the usual and more cumbersome method using two single quote characters on each side.
  • The 'pltquiv.m' example was updated to demonstrate the use of the 'TIDcback' parameter.
  • Added a right click action to the XY (XYrotate) tag in the menu box.
  • Improved the avg and rms cursor readout so that NaN values are ignored.
  • Added an additional plot to the circles12.m example program.
  • Added the @CID tag to the 'moveCB' cursor callback function. The weight.m and tasplt.m examples now make use of this tag.
  • The xy output from plt('cursor',cid,'get','position') is now complex.
  • Improved the look of the cursor peak/valley buttons and delta cursor button by removing the rectangular dotted line around the string.
  • Fixed bug in Y/X cursor value
  • Added "HardCopy" as the fourth item of the File menu. (See "print" under "Menu box").
  • Many documentation improvements and updates


  • Added the capability of assigning different line property values for each trace
  • A new parameter (TIDcolumn) was added to allow you to arrange the trace IDs in multiple columns.
  • Added a new demo program (circles12.m)
  • Fixed a bug that prevented assigning a color to two different traces.
  • Fixed a bug that caused incorrect positioning for the "Mark" function (right hand axis).
  • Added a default to the color property of the 'pop' and 'edit' objects ([1 1 .4]). Fixed the default color for the background of an open 'pop' menu to agree with the documentation.
  • Added the Fresnel function to curves.m demo so that the symbolic toolbox is not called.
  • Modified the editz.m example so that the signal processing toolbox is not required.
  • Modified the winplt.m example program so that it can run without the signal processing toolbox, however in that case it will not be able to display all the window types.


  • The way plt handles complex arguments was changed. Now including w in the argument list (where w is complex) is equivalent to including the two arguments "real(w),imag(w)". In earlier revisions this was only true sometimes.
  • The delta button is now highlighted whenever the delta cursor mode has been selected.
  • Left-clicking on the up/down arrow buttons moves to the next peak/valley respectively as before. Also as before, clicking on the trace resets the peak or valley finder so that the next click of the up/down arrow brings you to the largest peak or smallest valley. Now, the resetting of the peak or valley finder may also be accomplished by right clicking on the up/down arrow button.
  • Added files:
    vbar.m - for displaying functions as vertical bars
    ebar.m - for displaying error bars
    quiv.m - for displaying vector fields (arrows)
  • The functionality of quiv.m is similar to Matlab's quiver.m although unlike quiver, quiv doesn't call plot. Therefore you must call plot or plt with the data generated by quiv. In earlier versions of plt, the code in quiv.m was inside plt.p, but I extracted it to a separate function to provide more flexibility and a cleaner user interface.
  • In the previous release, all the files were in the same folder. In this release a new folder named "demo" was added to contain all the example programs.
  • A new program named demoplt.m was added (in the demo folder) which runs all 12 example programs in succession. Every time you press <Enter> demoplt will close the current example and start up the next one.
  • A new example program named pltvbar.m was added to demonstrate the use of vbar.m and ebar.m .
  • The pltquiv.m example program was modified to use the new quiv.m function.


  • A new parameter ('Right') was added to specify which traces should be on the right hand axis. In earlier plt versions, only one trace was allowed on the right hand axis and it had to be the last trace. Now you may place any or all of the traces on the right axis. For example, in the argument list you could specify 'Right',[1 4:2:10 17]. Then plt would put trace numbers 1,4,6,8,10, and 17 on the right axis and all other traces on the left axis. A slight shading is used behind the Trace IDs associated with the right hand axis so you can tell at a glance which traces belong to which axis. You can also tell which axis a trace is on by the shape of its cursor (+/o for left/right axis). As with earlier revisions, a right axis is created if you include the 'LabelYR', or 'YlimR' parameters in the argument list. For clarity, you should also include the 'Right' parameter in that case, however if omitted, plt will put the last trace on the right axis.
  • A new parameter ('DualCur') was added to control a feature I now call a dual cursor. The usual cursor can only show the value of one of the visible traces on the plot. With a dual cursor, two such values can be shown at the same time - especially useful when displaying two tightly linked values (for example, the magnitude and phase of a complex quantity). In earlier versions of plt, a dual cursor was provided, however it was forced to be on the last trace only which was also forced to be on the right hand axis. (Moreover the dual cursor was not optional. If you wanted to use a right hand axis, you automatically got a dual cursor). As of this version, you specify a dual cursor for the Nth trace by including 'DualCur',N in the parameter list. This means that trace N will never be the active trace and so its value will never appear in the usual y value readout location (immediately to the right of the "y:" cursor label). However when you cursor any other trace, a cursor will also appear on trace N at the same x-axis location and the value of trace N will appear just to the right of the value for the active trace. The dual cursor is easily distinguished from the usual cursor by its shape - an asterisk if the dual cursored trace is on the left axis or a square if it is on the right axis.
  • A new parameter ('TIDcback',fcn) was added to that one can define a callback function to be executed whenever the user clicks on a Trace ID (i.e. a trace is enabled or disabled).
  • The winplt example program was updated to show comparisons between previous window time shapes as well as the previous frequency shapes. (In the earlier revision, only the previous frequency shapes were saved). This takes advantage of plt's new ability to put multiple traces on the right hand axis.


  • Added the Color menu to the menu bar providing the ability to change any of the colors used by plt and optionally to make those changes permanent.
  • Enhanced the ability to edit strings created with the plt('edit') command by using the left and right arrow keys.
  • Enhanced the functionality of the winplt example program.
  • Changed the default alignment of  plt('edit') strings to 'center'.  (Required to make the increment/decrement feature to work.)
  • Set foreground (text) color of x/y cursor readout objects to white or black, whichever enhances contrast.
  • Swapped execution order of MoveCB and MoveCB2 callbacks. This appears to fix the problem of mouse button up events getting lost (which was only a problem with Matlab ver 2006a or later).
  • Swapped viewing order of the menu and TraceID boxes. This fixed the problem where the top menu box item was inaccessible.
  • Fixed bug with '@VAL' substitution in plt('slider').
  • Fixed bug in plt('slider') relating to the '%d' format.
  • Fixed bug relating to accidentally redefining the exp() function
  • Fixed bug relating to finding the help file.


  • Added a new option plt('Options','Slider',... to create a slider used for changing the cursor x position
  • Added a dialog box (via a right click on the Mark tag) that allows the editing of line and cursor properties
  • Fixed delta cursors so they can work between different traces
  • Extended plt('ftoa',...) to work with vectors as well as scalars and added a delimiter option. The plt('vtoa',...) function was also enhanced.
  • Added the [TexOff] specifier in the 'title' option.
  • The slider now replaces '@VAL' in the slider callback with the current slider value.
  • Biased 'metricp' call to favor no prefix between .1 and 9999
  • Changed order of ancillary cursor readout functions (now Avg, RMS, Y/X)
  • Added the plt('rename',s) function
  • Added the plt('cursor','set','activeLine') function
  • Enhanced the  plt('cursor','Maincur') call by allowing optional parameters
  • Added the  plt('cursor','init' ...) call to the documentation
  • Added a new example program called weight.m


  • Changed default color order for better hardcopy results
  • Fixed minor bug in the workspace plotter


  • Added the Zout and Print tags to the menu box
  • Minor bug fixes and documentation updates


  • Minor improvements to the pseudo slider object


  • Added support for plotting vector arrows (quiver)
  • Added the option to use cell arrays of strings in place of character arrays in argument lists
  • Extended the use of the 'AxisPos' parameter (position of TraceID)
  • The workspace plotter recognizes the new TraceIDlen parameter
  • Added  plt close as an alternative to plt closefigs
  • Added a new programming example (pltquiv.m) to demonstrate quiver and several other plt features
  • Minor bug fixes and documentation updates


  • Added the auxiliary function plt('edit') for creating edit text objects
  • Added the auxiliary function plt('pop') for creating popup text objects
  • Added a new programming example (curves.m) to demonstrate the use of the plt('edit') and plt('pop') commands.
  • Fixed a bug in the data editing capability that caused it to work only with large fonts selected in windows.


  • Two new programming examples have been added (tasplt.m and winplt.m).
  • Added the slider component plt('slider',...). See winplt.m for an example of its use.
  • Added auxiliary functions plt('ftoa'), plt('vtoa'), plt('closefigs'), plt('help'), and plt('version').
  • The workspace plotter now can plot vectors contained inside structures.
  • The default figure window position was changed so it doesn't overlap the start menu.
  • Minor bug fixes and documentation updates


  • A new programming example (editz.m) has been included to demonstrate the utility of the data editing capability.


  • Eliminated the commercial version of plt and integrated the enhanced features into the free version. The public domain version of plt now supports delta cursors and up to 99 traces (an increase from five traces).
  • The workspace plotter has been added, which allows you to interactively select the vectors in your Matlab workspace that you want to plot. This is activated by calling plt with no arguments. A new sample script (pltvar.m) was added to demonstrate this feature. It simply creates several vectors in the workspace and calls plt with no arguments.
  • The cursor ID tag is now always to the left of the cursor y label. Changing the cursor ID tag to Avg or RMS is now accomplished by clicking on the cursor ID tag itself to rotate among the options. Also an additional option (Y/X) has been added to this selection, which displays the ratio of the y and x cursor values. (In delta cursor mode, this can be used to display the slope of a trace segment.)
  • Data editing has been added. The data editing mode is entered by right-clicking on the x or y cursor edit boxes. See the documentation for additional details.


  • Modified the plt5 and pltn examples so they didn't use interp (interp requires the signal processing toolbox)
  • Renamed PLT.p to plt.p in the zip file (unix is case sensitive)
  • Added the release notes section to the documentation


  • Added a more obvious way to restore zoomed axis limits
  •  Fixed minor bug with the Styles argument
  • Improved the Options argument and made it less cryptic
  • Supply documentation as html in addition to chm
  • Provided an easy way to use Matlab's default colors
  • Improved the organization of the help file


  • First public release of plt