SED navigation bar go to SED home page go to Dataplot home page go to NIST home page SED Home Page SED Staff SED Projects SED Products and Publications Search Dataplot Pages

Dataplot GUI: Performance Issues

Commands That Don't Work in the GUI
Command Line Interface Available in the GUI One important feature of the Dataplot graphical interface is the integration of the full command capability within the menu system. That is, you can freely mix typing commands with accessing menus.
Specific Commands That Do Not Work

There are a few command line features that don't work within the Dataplot GUI.

  • The continuation character "..." for extending a Dataplot command to a second line does not work and will in fact hang the GUI.

  • Entering a READ or SERIAL READ command without a file name will hang the GUI. In the command line version, this is used to read data directly from the keyboard. In the GUI, you can do this by entering the data into the spreadsheet. To enter a small number of data points, you can use the command

      LET Y = DATA ...

    to enter a small number of values.

  • Dataplot has a number of "menu macros" for the command line version. These are menu macros in the sense that they prompt the user to input certain values. These menu macros must be run from the command line version. They will hang the GUI when they prompt for input. This is essentially a result of the second item (i.e., the menu macros promot for input by using a keyboard READ). The alternative to writing a menu macro is to extend the GUI menus. That is, add a menu to the GUI to provide a comparable capability.

  • Occassionally, a command that takes a long time to execute may cause the Dataplot GUI to hang (essentially, the Tcl/Tk scripts "time out" waiting for the Dataplot output to return). If this is an issue for a partiuclar analysis, I recommend running that analysis using the command line version of Dataplot.
Turn Off the Data Spreadsheet for Larger Data Files
Convenient, But Significant Overhead The data spreadsheet is quite useful. However, it does impose significant overhead on the Dataplot GUI. Any time the data in Dataplot is modified (i.e, any READ or LET command is executed), the entire data sheet needs to be updated.
"No Update" Button on Spreadsheet Window For even moderately large data sets, this updating of the data sheet can be noticeably slow. For large data sets, it can even cause the Dataplot GUI to hang. To address this problem, there is a button labeled "No Update" on the spreadsheet. To significantly improve the performance of the Dataplot GUI, you can click on this button. This suppresses any future updating of the spreadsheet window. The advantage is that this can significantly speed up the performance. The disadvantage is that you lose the convenience of having the data displayed in the spreadsheet. Note that the data available to Dataplot does not in any way depend on whether you have the "No Update" button turned on or off.

How much of an issue this is will depend on the age of your hardware (faster hardware will lessen the problem to a degree, but not eliminate it), how often you are updating data in your Dataplot session, how large your data set is, and on your personal preference (i.e., are you willing to live with the delays in the data sheet updates in order to have the convenience of seeing the data in the spreadsheet).

Recommendations Although it can be difficult to give precise guidelines (due to vast differences in the underlying hardware, how often your data is being updated, etc.), we offer the following rough guidelines.
  • My personal critierion is turn off the spread sheet if there are more than 1,000 rows of data. If you know in advance that your data set is this large, I recommend clicking the "No Update" button before reading your data.

  • For less than about 500 points, the updating of the data spread sheet does not typically impose an undue performance penatlty.

  • If the number of points is between 500 and 1,000, it is a more borderline call. You will probably notice the lag when the spread sheet is updated, but the time will probably not be too excessive. Basically, if the performance starts to seem a little too slugish, then it should help to turn off the updating.
Again, the above are simply rough guidelines based on my own experience, not definitive rules.
Some Additional Suggestions

A few additional things that may help.

  1. If you running a version of Tcl/Tk older than version 8.3, then I etrongly recommend upgrading to version 8.3 (or newer). Tcl/Tk was essentially rewritten at version 8.0. The intial 8.0 release was basically intended to "get everything working". Subsequent Tcl/Tk releases have had significant performance enhancements. In particular, the string handling (which is quite relevant for the updating of the spread sheet) has significantly better performance.

  2. If your data has a consistent format, you can use the SET READ FORMAT command to speed up the initial reading of the data. This does not speed up the updating of the spread sheet, just the initial reading of the data. Again, if you have less than 500 or so points, the unformatted read is probably quick enough that this isn't necessary. On the other hand, if you have serveral thousand rows of data, you can actually read the data quite quickly by turning off the spread sheet (i.e., the "No Update" button) and using a formatted read.

  3. If you have turned the spread sheet off, you can obtain a current variable list by entering a STATUS VARIABLES command (or select the "File" menu and then select the "Status Variables/Parameters" menu). You can also use the PRINT command to view the contents of a particular variable. For example, to view the first 20 rows of the variable Y, enter the following command:

      PRINT Y FOR I = 1 1 20

    Alternatively, you could use the Plot menu to generate a run sequence plot of the variable.

Privacy Policy/Security Notice
Disclaimer | FOIA

NIST is an agency of the U.S. Commerce Department.

Date created: 09/20/2001
Last updated: 09/20/2019

Please email comments on this WWW page to