# The CoPlot Manual

Just getting started with CoPlot? Please read the quick introduction.
See also: the Index, the list of Commands Not On The Menus, the list of Topics, and the CoStat Manual (costat.htm).
CoPlot and CoPlot Pro Manual, Version 6.311, Copyright © 1998-2005 CoHort Software.

## Menu Tree

    File
    New Window
    New
    Open
      Insert
    Save
    Save As
    Page Setup
    Print
    1-9
    Exit
    Datafile
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Create
    Big Text
    Dimension
    Ellipse
    Graph
      Graph Array
    Image
    Path
    Text
      Rectangle

    Bar Graph
    Pie Chart
    Table
    Edit
    Pick One

    Any Type
    Big Text
    Dimension
    Ellipse
    Graph
      Graph Array
    Image
    Path
    Text

    Objects
    Points Move
    Points Boxed Move
    Change Color
    Exchange B&W
    Drawing
    Background Color
    Coordinates
      Draw Grid
    Groups
    List Of Files
    Load Fonts
    Other
    Zoom Box
      Zoom 1
    Screen
    Redraw
    Automatic Redraw
    Dialogs Inside
    Fix MenuBar
    Font Size
    Language
    Path Aliases
    Show CoText
    Slash Date Format
    Text-Only Buttons
    Tool Tips
    Use System File Dialog
    Macro
    Record
      Stop Recording
      Pause Recording
      Resume Recording
      Delay
    Play
      Stop Playing
      Resume Playing
    Edit
    Button Bar 1/2/3/4 Visible
    Clear All Buttons
    Help
    Lesson 1
    Lesson 2
    Lesson 3
    Lesson 4
    Lesson 5
    Lesson 6
    Switching From DOS
    Mac OS X
    Online
    Register
    View Error Log
    About

Menu Tree / Index

## Topics Related to CoPlot

- Copyrights, Disclaimer, and License
- Contacting CoHort Software
- Technical Support
- Acknowledgments
- Getting Started (including Installation)
- Known Bugs
- Commands Not On The Menus
- Frequently Asked Questions
- Frequently Asked Questions Related To Graphs
- Suggestions
- Switching From DOS CoStat, CoPlot, and CoDraw
- CoStat - the datafile editor.
- CoText - the text editor used in many places in the program.
- Speed
- Colors
- Embedded Text Tags
- Character Entities
- The Drawing (.draw) File Format
- Java Programs, Batch Files, Shell Scripts, Pipes, Perl, Python, Rexx, and Tcl
- CoCalc (CoCalc.html) - a free RPN scientific calculator that you can use within your browser. CoCalc2 (CoCalc2.html) - a large-text version of CoCalc.
- References
- Index

## Topics Related to CoPlot in the CoStat Manual (costat.htm)

- System Requirements
- Differences on Different Operating Systems
- Entering Numeric Values
- "Bad News" Error Messages
- General Problem-Solving Suggestions
- Memory
- Preference Files
- Using Macros
- The Macro Language
- Using Equations
- Built-in Functions

Menu Tree / Index

## Copyrights

Beyond meeting the legal requirements below, we also wish to thank the non-CoHort individuals and groups which have contributed to this software by making their graphics and Java code available. Their efforts and generosity have greatly improved this software.

The PPM image encoder and the basis of the GIF image encoder in CoPlot are from the JPM package, and are copyright (C) 1996 by Jef Poskanzer (contact jef@acme.com or www.acme.com). All rights reserved. Redistribution and use of JPM in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

The GIF image encoder and the Animated GIF image encoder are by J.M.G. Elliott (tep@jmge.net) and are based on Jef Poskanzer's GIF encoder. J.M.G. Elliott put his source code into the public domain.

The PNG encoder in CoPlot is from J. David Eisenberg of www.catcode.com and is distributed under the GNU LGPL License (http://www.gnu.org/copyleft/lesser.html). To meet our obligation to that license, we hereby let everyone know that they can get the source code for the PNG encoder from www.catcode.com. We recommend one change to the code to dramatically speed up the encoding: on the line that sets "`nRows =`", change the constant "`32767`" to "`1000000`" or some other larger number. The disclaimer below also applies to the PNG encoder.

The JPG image encoder (and its associated classes) in CoPlot are Copyright (c) 1998, James R. Weeks and BioElectroMech (James@obrador.com or www.obrador.com). The disclaimer below also applies to the JPG image encoder.

The JPG image encoder in CoPlot is based in part on the work of the Independent JPEG Group (jpeg-info@uunet.uu.net), which is copyright (C) 1991-1996, Thomas G. Lane. All Rights Reserved except as specified below: the accompanying documentation must state that "this software is based in part on the work of the Independent JPEG Group". The disclaimer below also applies to the IJG code.

Toolbar Icons: The images used for most of the icons for the toolbar buttons in all the CoHort programs are copyright (C) 1998 by Dean S. Jones (contact deansjones@hotmail.com ) and are part of the Java Lobby Foundation Applications Project jfa.javalobby.org/projects/icons/index.html.

Icons: Most of the icons in CoPlot which are accessed via `Create : Image : Browse : Icons` were originally public domain icons, but we have revised many of them and created some original icons. If you know that one of the icons was not public domain and can't be redistributed, please let us know and we will remove it from the collection. The icons that we created and the `Icons*.gif` files are copyright (C) CoHort Software, 2000. We grant licensed users of our software permission to use the individual icons for any purpose when accessed via CoPlot, but we do not grant anyone the right to modify or redistribute the `Icons*.gif` files. If you need icons for some purpose other than use in CoPlot, please go to the public domain icon collections on the web (for example, www.MediaBuilder.com).

The external Windows program `DATALOAD.EXE` which is used by CoStat's `File : Open : MS Windows` procedure was written by and put in the public domain by David Baird (BairdD@AgResearch.CRI.NZ). Thank you, David Baird.

The remainder of CoText, CoStat, CoStat Pro, the CoStat manual, CoPlot, CoPlot Pro, and the CoPlot manual are copyright (C) 1998-2005 by CoHort Software (contact info@cohort.com or www.cohort.com). All rights reserved.

## DISCLAIMER

THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

## End-User License

The Java byte code (in the .class files) used to distribute this software is the property of CoHort Software and its suppliers and is protected by copyright law and international treaty provisions. You are authorized to make and use copies of the byte code only as part of the application in which you received the byte code and for backup purposes. Except as expressly provided in the preceding sentence, you are not authorized to reproduce and distribute the byte code. You are only authorized to use your copy of this software as you would would use a book. Like a book, your copy of this software may be used by only one person on one computer at a time. CoHort Software reserves all rights not expressly granted. You may not reverse engineer, decompile, or disassemble the byte code.

What does the license mean? Here are some examples of legitimate uses of the software:

- You may use the software as a standalone program (for example, CoPlot, CoStat, or CoText) or you may write a program (for your own use) which uses the byte code. A program which uses the byte code may not be further distributed without further licensing (contact CoHort Software).
- One person may install and use it on more than one computer. For example, you can install it on your work computer for when you are at work and on your home computer for when you are at home, but you may not install it on more than one computer if there is even a chance that different people will be using it at the same time.
- You may lend it to anyone, but you can't use it while it is on loan.
- You may install it on a computer shared one at a time by many users, since only one person will be able to use it at once.
- You may run it on a single processor World Wide Web server where it is used for server-side processing (for example, to generate graphs on-the-fly for many clients, but only one client at a time).
- If you install it on a LAN file server, you need to buy a license for each active user, since the active users may be using the program simultaneously. (An active user is a person who uses the program at least occasionally.) It is best if you have software which meters and restricts the number of active or concurrent users.

Please respect the license. Copies of CoPlot can be purchased from CoHort Software (info@cohort.com, www.cohort.com). CoHort Software is a small company whose employees earn a living writing, selling, and supporting this software. This is commercial software. If you like this software and want to use it, please buy a copy. That pays us for the work we have done and allows us to keep working to improve the programs.

Menu Tree / Index

## Contacting CoHort Software

Please feel free to contact CoHort Software with any questions, comments, suggestions. See the contact information below.

## Technical Support

Suggestions - We appreciate information about program bugs or suggestions for improvement. Our software has benefitted greatly from user and beta tester comments. Our thanks go out to all who have made suggestions in the past.

Free support - CoHort Software continues to offer free technical support by email. This encourages us to make good software and manuals.

Before you contact us about a problem, please:

1. Look through the manual to see of you can find the solution there.
2. Ask a friend who also uses the program. There are definite advantages to having a knowledgeable user sitting right beside you to help you work through a problem.
3. Try to find a solution by experimenting with the software.
4. If possible, make sure you can precisely describe and reproduce the problem.
5. Use `Help : About` to determine the version number of your copy of the program.

Contacting CoHort Software for technical assistance (or any other reason):

- Visit our World Wide Web (WWW) site at www.cohort.com. At the web site, you can:
  - Get the latest information on the programs:
    - see if there is a newer version of the program which fixes the problem,
    - see if the bug is a known but not yet fixed bug,
    - see if there is a work-around for the bug/problem, etc.
  - Download optional data files and utility programs related to CoHort programs.
  - Send email with technical support questions. Please include as complete a description of the problem as you can.
- Send email to info@cohort.com.

Upgrade notices: Registered users will be emailed information when new versions are available. Information about our programs is always available at our web site: www.cohort.com.

Menu Tree / Index

## Acknowledgments

Thanks to my son, Nathan Simons, and to Nancy Melton, both of whom bring so much joy to my life.

Thanks to all of the users who have sent comments and suggestions. The programs are vastly better because of the changes made as a result of those comments and suggestions.

Thanks to the translators who edited the machine translated help messages.

Thanks to the people outside of CoHort Software whose code or graphics is included in the programs (see the Copyrights section).

Thanks to all of the computer scientists, statisticians, authors, etc. for the work which has formed the basis of these programs. We "stand on the shoulders of giants".

Menu Tree / Index

## Getting Started

Welcome to CoPlot. This is the quick introduction. There are also lessons built into CoPlot (see `Help : Lesson 1`).

What is CoPlot? CoPlot is a program for making drawings, notably drawings with graphs. To use it, you create different types of objects (lines, filled areas, markers, text objects, graphs, etc.) and then edit the attributes of the objects till they look like you want them to look.

Installation - If you have a CoPlot CD, follow the installation instructions that came with the CD. Otherwise, download and install the trial version of CoPlot from www.cohort.com; it is actually the same as the CD version. The download pages at the web site also have information about command line options.

Importing Data (or typing it in) - Datafiles are the source of data to be plotted on graphs. CoPlot has slots to hold up to 15 datafiles. Choosing one of the slots on the `Datafile` menu lets you edit the datafile in that slot. The datafile editor that is built into CoPlot is called CoStat -- see the CoStat Manual (costat.htm). CoStat also has many options for editing and transforming the data and for doing statistical procedures (like regressions) with the data.

To load data into a datafile slot, choose the slot (`Datafile : x`), then use CoStat's `File : Open` to load data from an existing data file, or `File : New` to set up a new, empty, datafile (so you can type in the data).

After you have loaded data from a datafile, you can use CoPlot's `Create : Graph` to create a graph. The data will be available for plotting on the graph.

To clear a datafile slot, choose the slot (`Datafile : x`), then use CoStat's `File : Close`.

Create Drawing Objects - Use the options on the `Create` menu to create different types of drawing objects:

- `Create : Big Text` - Big Text objects let you enter and display big blocks of text. They are virtually identical to Text objects. The only difference is that you will edit the text of Text objects in a simple textfield (one line for entry, although the text can have paragraph and linebreak tags). When you edit the text of Big Text objects, a text editor will appear so that you can edit lots of text on more than one line.
- `Create : Dimension` - A dimension object is a piece of text with arrows extending from the left and right of the text to the two points that you specify. In addition to the standard embedded text tags, the text can include a special tag (`<dimension g>`), which displays the distance between the two points (in `Drawing Coordinates`).
- `Create : Ellipse` - Ellipse objects have a large number of attributes which allow them to be drawn many ways, for example: as circles, arcs, ellipses, pies, pie slices, doughnuts (torus), etc. Ellipses can have text to identify the ellipse. In addition to the standard embedded text tags, the text can include a special tag (`<arcdimension d g>`) which displays the arc angle.
- `Create : Graph` - creates a Graph object with a standard XY graph. You can change the attributes of the graph to make it into any of several types of graphs. You can plot data and equations on a graph.
- `Create : Graph Array` - creates a 2D array of graph objects. This is useful when you want to make what appears to be a graph with 2 Y axes, a graph with multiple Y axes, an n Channel graph, a Correlation Matrix, or a 2D array of separate graphs. After creating the graph array, you can edit the graphs as you would edit any other graphs (individually, or simultaneously).
- `Create : Path` - A path is basically a series of points and a set of attributes describing how the path should be drawn. The attributes allow paths to be drawn many ways, for example: as simple lines, curved lines, curved lines with arrows, a series of markers, filled areas, etc.
- `Create : Image` - An image stored in a file can be manipulated (for example, scaled, rotated, and cropped) and then displayed.
- `Create : Text` - Text objects are actually text drawn within shapes (for example, rectangles, triangles, circles), although you can draw the text alone (the default), or the shape alone. The size of the shape is (usually) automatically adjusted to accommodate the text.
- `Create : Rectangle` - This is a simple way to create a Text object with a (usually) rectangular shape.

All of the objects except Path and Image objects have text labels. The text can include embedded text tags (which control bold, italics, underlining, font changes, size changes, etc; see the '`<>`' button on the dialog boxes) and character entities (HTML-like names for accented characters, Greek characters, and mathematical symbols; see the '`&`' button on the dialog boxes).

Edit Objects - There are many ways to edit existing objects, many of which are listed on the `Edit` menu:

- Click on the `Edit` button on a `Create Xxx` dialog right after you create an object - You can then edit that object's attributes. You can also pick additional objects of the same type to edit simultaneously.
- `Edit : Pick One` (and the `Pick One` icon button) - lets you pick an object by clicking on or near the points that you used to create the object You can then edit that object's attributes. You can also pick additional objects of the same type to edit simultaneously.
- `Edit : Any Type` - lets you pick one or more objects of any type and edit them simultaneously. Because different types of objects have different attributes, you can't edit their attributes, but you can move, copy, or delete the objects simultaneously.
- `Edit : Big Text`, `Dimension`, `Ellipse`, `Graph`, `Image`, `Path`, `Text` - these options let you identify the type of object you want to edit and then pick objects you want to edit by clicking on them. Or use one of the `Pick` buttons at the bottom of the dialog box to pick objects that you want to edit: `Pick One, Unpick One, Pick Box, Pick List, Pick Color, Pick All, Unpick All`. You can then edit the object's attributes. These options are useful when two objects of different types are near each other and it is hard to use `Edit : Pick One` to identify the object that you want.
- `Edit : Objects` - lets you quickly move, copy, delete, hide, or show individual objects.
- `Edit : Points Move` - lets you move the individual points used to define the location of an object.
- Right click on an object to edit it - If no dialog box is active, you can edit an object by right clicking on or near the points that you used to create the object (just like `Edit : Pick One`, above). (on some Macs: hold down the `Apple` key and press the mouse button.) You can then edit that object's attributes. You can also pick additional objects of the same type to edit simultaneously.

The `Drawing` Menu has options that affect the entire drawing, including:

- Changing the `Background Color` of the drawing.
- Changing the drawing's `Coordinates`.
- Listing the data and image files used by this drawing.
- Loading other `Fonts`.
- Changing several other settings on the `Other` dialog box, including:`
  - Use system fonts
  - Minimum Line Width
  - Draw bold markers
  - Draw lines through markers
  - Draw error bars through markers
  - Draw caps on error bars
  - Missing values make gaps
  - Enable Undo All
  `

- Zooming in or out.

  The `Screen` Menu has options which affect the appearance of the program and the drawing on your computer's screen. These preferences are automatically saved (in a file called coplot.pref) for the next time you use CoPlot. Some of the options are:

  - `Redraw` - redraws the screen when the screen image has been damaged.
  - `Automatic Redraw` - specifies whether the drawing should be redrawn every time a change is made.
  - `Dialogs Inside Main Window` - controls where the dialogs appear (inside the main window or outside).
  - `Font Size` - lets you change the size of the system fonts used for menus, dialog boxes, and the help line.
  - `Language` - lets you choose the language used for most of the one-line help messages displayed on the main window's status line and for the text of the lessons on the `Help` menu.

    Some of the translations are far from perfect. We will continue to work on improving the translations.

  - `Text-Only Buttons` - lets you switch between toolbar buttons that have images and text, or text only.
  - `Tool Tips` - lets you enable or disable the tool tips system.

  The `Macro` Menu has options to let you record and play a macro (a series of user actions stored in a file so they can be replayed later).

  The `Help` Menu provides different types of information about the program and lessons to help you get started using the program.

  Hints

  - The Key To CoPlot - To use CoPlot, you create different types of objects (Path objects, Text objects, Graphs, etc.) and then edit the attributes of the objects till they look like you want them to look.
  - Picking Objects - When you create an object, you identify its location by marking one or more points. When you want to pick an object (with `Edit : Pick One`) for editing, you need to click on or near those points (or the lines between them). Thus, you need to click at the center of a graph, but you can click anywhere along a path object.
  - Typing an Attribute? Press `Enter` or `Tab`. When you change an attribute of an object, the change is made right away. For example, when editing a text object, if you choose a different font from the list of fonts, the text object is immediately redrawn with the new font.

    For many attributes (like the `Text Height` attribute of a text object), you have to type a new value. In this case, you must press `Enter` or `Tab` when you are through typing, so that CoPlot knows you are done and can proceed with making the change.

    Default Value - For numeric attributes that you type in (for example, `Text Height`), you can return the attribute to the default value by erasing the current value and pressing `Enter`.

  If you can't figure something out, try to find and read the relevant section of the manual (see the Menu Tree and the Index). If that doesn't work, ask a knowledgeable coworker or contact technical support.

  Menu Tree / Index

  ## Known Bugs

  Garbled Menu Bar Words - Sometimes, when the program first loads, the headings on the menu bar are wrong (the text is from other places in the program and garbled). When the problem occurs, use `'Screen : Fix Menubar'` to fix the menubar. In extreme cases, you need to use `'Screen : Fix Menubar'` two or three times.

  Menu Tree / Index

  ## Commands Not On The Menus

  Listed below are the commands (often called shortcuts) which are not listed on the menus.

  Right click on an object to edit it.
    If no dialog box is active, you can edit an object by just right clicking on or near the points used to create the object (just like `Edit : Pick One`). (on some Macs: hold down the `Apple` key and press the mouse button.) You can then edit that object's attributes. You can also pick additional objects of the same type to edit simultaneously.
  Move the '`+`' cursor.
    The '`+`' cursor appears when the grid system is in effect (see `Drawing : Coordinates`). It indicates the location of the nearest grid point. When it appears, you can move it with your mouse or the arrow keys on your keyboard. You can also press `Enter` (like the left mouse button) or `Esc` (like the right mouse button). If you use the arrow keys and then move the mouse (even a tiny bit), the '`+`' will jump back to near the mouse's cursor.
  Scroll bar scrolling:
    Scroll a little up, down, right, or left.
      Click on the arrow buttons at the ends of the scroll bars.
    Scroll up or down a screenfull.
      Press the `PgUp` or `PgDn` keys. Or, click above or below the vertical scrollbar's active-area-bar.
    Scroll to the top or bottom of the drawing.
      Press the `Ctrl PgUp` or `Ctrl PgDn` keys. (on some Macs: `Home` or `End`.) Or, drag the vertical scrollbar's active-area-bar to the top or bottom of its range.
    Scroll left or right a screenfull.
      Press the `Home` or `End` keys. (on some Macs: `Alt Left` or `Alt Right`.) Or, click to the left or right of the horizontal scrollbar's active-area-bar.
    Scroll to the far left or far right of the drawing.
      Press the `Ctrl Home` or `Ctrl End` keys. (on some Macs: `Apple Left` or `Apple Right`.) Or, drag the horizontal scrollbar's active-area-bar to the far left or right of its range.
  `+` `-` Buttons
    Many dialogs have a textfield widget for entering a number and a '`+`' and a '`-`' button to the right. The buttons provide a fast way to increase or decrease the value. In most cases, if you click on the buttons, the program will change the value in the textfield to be a nice number (one with few significant digits) that is 10 - 20% larger or smaller.
  . Buttons
    Some dialogs have a textfield widget for entering a number and a "." button to the right. These buttons provide a fast way to return to the default value for that attribute.
  Press `Esc` to close any dialog
    Press the `Esc` (Escape) button to close any dialog box just as if you had clicked on the dialog's upper right close-window icon.

  Keyboard Shortcuts in Dialog Boxes

  You can use various keystrokes to navigate and manipulate the widgets in a dialog box:

  - Press `Tab` to move the focus to the next widget.
  - Press `ShiftTab` to move the focus to the previous widget.
  - When a button has focus (denoted by an orange line), pressing `Space` has the same effect as pressing the left mouse button.
  - When a checkbox has focus (denoted by an orange line), pressing `Space` has the same effect as pressing the left mouse button.
  - When a choice widget has focus (denoted by an orange line), pressing `Space` has the same effect as pressing the left mouse button -- it drops down the list of choices. Then you can use the arrow keys, `Home, End, PgUp, PgDn,` and finally `Space` to select one of the options. Or, press `Esc` or click on the original choice widget to close the list window without making a selection.
  - Press `Esc` to close the dialog box.

  In textfields, you can use:

  - `Enter` to let the program know you are finished making changes.
  - `Home` (on some Macs: `Apple Left`) to move the cursor to the beginning of the text.
  - `End` (on some Macs: `Apple Right`) to move the cursor to the end of the text.
  - `Ctrl Left` (on some Macs: `Alt Left`) to move the cursor one word to the left.
  - `Ctrl Right` (on some Macs: `Alt Right`) to move the cursor one word to the right.

  In textfields, you can select text and do various things with the selected text. To select a block of text, drag with the left mouse button, or use the shifted arrow keys (`Shift Left, Shift Right, Shift Home, Shift End`). As you extend the selection, the caret moves, too. To select all of the text, press `Ctrl A` (on some Macs: `Apple A`). After selecting text:

  - Typing a printable character deletes the selected text and inserts that character.
  - `Ctrl C` (on some Macs: `Apple C`) copies the selected text to the system clipboard.
  - `Ctrl X` (on some Macs: `Apple X`) cuts (deletes) the selected text and copies it to the system clipboard.
  - `Ctrl V` (on some Macs: `Apple V`) or `Shift Ins` deletes any current selection, pastes text from the clipboard at the caret position, and puts the caret at the end of the imported text.
  - `Del` deletes selected text and doesn't put it on the system clipboard.
  - `Ctrl Del` extends the selection to the end of the line. It then deletes the selected text and doesn't put it on the system clipboard.
  - Pressing other keys (for example, `Left`) turns off the selection without deleting the text.

  Menu Tree / Index

  ## Frequently Asked Questions

  How do I install CoPlot? If you have a CoPlot CD, follow the installation instructions that came with the CD. Otherwise, download and install the trial version of CoPlot from www.cohort.com; it is actually the same as the CD version. The download pages at the web site also have information about command line options.

  How do I get started using the program? I don't understand how this program works. Please read the lessons which are built into the program (start with `Help : Lesson 1`). It may be useful to read the lessons again after you have been using CoPlot for a few weeks or months; you will probably notice things you didn't notice the first time you read them.

  Where is the 'cohort' directory? The cohort directory is the directory on your hard disk where you installed the CoHort program files.
  On Windows, this is often `c:\Program Files\cohort6`.
  On Mac OS X, this is often `(Macintosh HD)/Applications/CoHort/cohort6`.
  On Linux and UNIX, this is often `/usr/local/bin/cohort6`.

  What were the design goals of CoPlot? CoPlot was designed to be a very flexible, easy-to-use program for making publication-quality scientific graphs and technical drawings. Given limited resources, we have put our efforts towards these goals and less effort toward fancy looking menus, etc. While CoPlot is very good for creating many other types of drawings (for example, flow charts, chemical symbols, and electrical schematics), CoPlot probably won't ever have all the features of programs dedicated to those purposes. So if you make flow charts all day long, every day, you might consider getting a program dedicated to that purpose. CoPlot can't be everything to everybody, but it can strive to be the best for making scientific graphs and most types of technical drawings.

  How do you set your prices for CoStat and CoPlot? We have always tried to set a low price to encourage more people to use our programs. Also, we hope that low prices discourage people from using pirated copies - legitimate owners get printed manuals, technical support, notices of upgrades, and free minor upgrades. Although our software is more expensive than academic books, we consider our software to be a good deal: you get software (which is a lot of work to make, even if copying the disks is cheap), you get a manual, and you get technical support. The earnings from each version are used to fund the development of new versions and new programs.

  Why don't you have an academic or government discount? We knew ahead of time that we would be selling the programs mostly to academics and the government, so we tried to set a low standard price.

  Why is technical support free? This encourages us to write good manuals and good software and to offer efficient technical support. But more than that, we don't like it when we have to pay a small fortune for technical support for the software that we use at CoHort Software. We didn't want to do that to our customers.

  How should I cite your programs in my paper/book? We appreciate it when you cite our programs and when you send us copies of papers and books created in part with our programs. Citation formats vary, but you can use variations of:

  CoHort Software, 2005. CoPlot. www.cohort.com. Monterey, California.

  We also appreciate it when you mention our software and have link to www.cohort.com on your web site.

  What are the advantages to HTML-based online documentation?

  - CoHort Software can release new versions of the documentation frequently. This lets us make big and small changes and release the new version immediately.
  - Registered users can easily retrieve the latest version from our web site for free, anytime (24 hours a day, 365 days a year).
  - Most people already have a browser (a program for viewing HTML files) and are familiar with it.
  - Browsers have many features which are useful for online documentation, including: hypertext links, a text search procedure, support for graphics, resizable windows, user-specified colors, user-specified fonts, and user-specified font sizes.

  Unfortunately, there are disadvantages, too:

  - For lengthy passages, most people prefer reading a book to reading a computer screen.
  - Some characters (notably alpha, beta and Sigma) and symbols are currently not available.
  While you may print a copy of the online manual for your own use, we discourage it. The printed manuals from CoHort Software are printed on both sides of the paper, are nicely bound, cost the same or less than the online manuals printed on your printer, and, most important, have page number references instead of hypertext links (which are useless on paper).

  We offer both printed and online documentation. We encourage you to use the online version whenever possible, since it is more up-to-date. If you use the online version often, you might want to add a bookmark to coplot.htm in the cohort directory.

  What is CoPlot Pro? CoPlot Pro is a separate software program which is very similar to CoPlot, but which includes some additional procedures for subset selection in multiple regression. Contact CoHort Software for licensing information.

  Raster vs. Vector: Why is there no Fat Bits option? Because CoPlot is an object-oriented (vector) drawing program, you will not find some of the procedures commonly available in pixel-based paint programs - notably block moves of pixels, "fat-bits" editing, and "paint bucket" fills. These options are replaced by superior features for an object-oriented system:

  - Block Moves Of Pixels should be accomplished by moving groups of objects (see `Edit : Objects : Move` and `Edit : Points : Boxed Move`).
  - "Fat Bits" editing is replaced by the `'Zoom +'` button on the toolbar. Paint programs just enlarge what is already there, while CoPlot will redraw a portion of the drawing magnified up to 100-fold, with increased resolution to match.
  - "Paint Bucket" fills for filling within a boundary are replaced by the Fill attributes of Path and Ellipse objects.

  Does CoPlot come with any clip art? No, but you can import clip art from a variety of sources. The best clip art is vector-based (for example, .cgm and .eps files), since the images can be scaled to different sizes without degradation of quality. (Although some "vector" files were originally scanned images, so they do degrade when scaled.) These can be imported into the current drawing with `File : Insert`. For image clip art, use `Create : Image` to display the images.

  How do I get a drawing on paper (for example, a map) into CoPlot? There are two approaches:

  1. Use a digitizer to digitize it. This is the traditional way. Digitizers are boards (12x12 inches up to 4x5 feet) with a stylus or puck. You mount the drawing on the digitizer and then use the stylus/puck like a mouse to trace the drawing. If you already have a digitizer and the drawing isn't too complex, this is a good approach.
  2. Scan the image and display it with CoPlot's `Create : Image`. Then create other drawing objects (mostly Path and Text objects) to recreate the important features of the image. This works very well. And more people have access to a scanner than to a digitizer. And it is easier to have someone scan a drawing for you (it takes about 1 minute) than to borrow a digitizer for a few hours.

  Doesn't CoPlot support freehand drawing? Freehand drawing (also called streaming mode and used for tracing) is where you move the mouse (or digitizer) and the program saves all mouse movement as a line. Sorry, no. Freehand drawing is easy to use, but dutifully records all of the little jiggles in your hand's movement. The result is very hard to edit. We think it is easier to create a Path object and mark just the important points. That way, it is all under your control. By setting the `Path Type` to `Spline`, you only need to mark a few points to get a complex, smooth curve. Later, that curve can be edited easily with `Edit : Path : Move One Point` -- moving any of the original points will adjust the line near that point.

  What can I do about the dialog boxes obscuring the drawing? We recommend that you don't make the main window full screen. Leave it where it is and the size it is when it is first shown. Then, the dialog boxes will appear to the right of the main window and not obscure the drawing.

  How do I change the xxx attribute of a yyy object? In almost every case, you need to pick the object that you want to change (via `Edit : Pick One` or some other means) and the desired attribute will be on that dialog box. The exceptions are:

  - For parts of a graph, you need to further identify the part of the graph that you want to change (for example, pick the desired graph then select `X Axis : Labels`).
  - Some graph attributes are set on the `Graph : Overview` dialog box.
  - Attributes that apply to the entire drawing are on the `Drawing : Other` dialog box.

  Why are nearby parts of the drawing damaged when I make changes to this object? When you make changes to an object, CoPlot erases the old version of the object and then draws the new version. When the old version is erased, other parts of the graph that overlapped the old version will also be erased. Thus the drawing may appear to have imperfections after a change. To redraw the drawing perfectly, use the `Redraw` button on the toolbar.

  These objects are right on top of each other. How can I pick the object I want to edit? Each of the `Edit : Xxx` dialog boxes has several `Pick` procedures. Different pick procedures are useful at different times. `Pick One` is fast and easy to use when the objects are separate and therefore easy to pick.

  The pick option which is best at handling difficult situations is `Pick List`, which shows you a list of objects which a checkbox beside each object to indicate if it is picked or not. There is also a `Make Invisible (Make Visible)` button at the bottom of the `Pick List` dialog box which makes the currently picked objects temporarily invisible (or visible again).

  This new object partly obscures this older object. How can I change that? Objects in a drawing are stored in a list. Initially, they are stored in the order in which they are created. When the drawing is redrawn, the objects are drawn in the same order as the list. To move an object to the beginning of the list, so it will be drawn first and be partially hidden by other objects (if they overlap), pick the object and then use the `Hide` button on the `Edit : xxx` dialog box.

  There is also a button labelled `Show` which moves the picked objects to the end of the list, so that they will be drawn last and (possibly) hide other objects (if they overlap).

  Related topic: You can change the order in which the parts of a graph are drawn.

  How do change the drawing's position on the page? There are two approaches:

  1. Move the drawing area. This approach is more appropriate when the drawing area is small relative to the size of the page. This will not change the coordinates of the objects.
     - Press the `'Zoom -'` button on the toolbar four times.
     - Select `Drawing : Coordinates`.
     - Move the drawing area by dragging the block at the lower left corner of the drawing area.
  2. Move all of the objects within the drawing area. This approach is more appropriate when the drawing area is large relative to the size of the page. This will change the coordinates of the objects.
     - Press the `'Zoom -'` button on the toolbar four times.
     - Select `Edit : Any Type`.
     - Click on `Pick All`.
     - Click on `Move All`.
     - Drag the block that appears.

  Can I change the drawing object defaults? Currently, no. But for graphs, we recommend that you make a drawing with a graph in the style that you like. Then, whenever you want to make a new drawing with a graph, load that drawing file and rename it (so you don't overwrite it).

  Can I combine two drawings? Yes. Use `File : Insert`.

  How can I export a drawing to another program? Use CoPlot's `File : Save As` to save the drawing file in some other file format. That section of this manual also includes recommended file types for exporting to different programs. Sorry, there is currently no mechanism to place the drawing on the clipboard.

  When I export the drawing to Word, it takes up a whole page. Why? Press the `'Zoom -'` button on the toolbar four times. This allows you to see the entire drawing area. The drawing area is the (usually) white area on the screen within a light gray area (the piece of paper). When you use `File : Save As : WMF` (or most other file types), the entire drawing area is stored in the .wmf file. Clearly, you need to make the drawing area smaller, so that it tightly crops the objects on the drawing. Select `Drawing : Coordinates` and drag the blocks at the edges of the drawing area inward, so that the drawing area is no larger than is necessary to contain the drawing objects.

  How do I change the background color on the screen? Use `Drawing : Background Color`. Other attributes which apply to the entire drawing can be found on the `Drawing` menu.

  Why do I have a white background on the screen but not when I export the drawing to a different program? Use `Drawing : Background Color` and select white. If the color labelled '`nd`' (notDrawn) is selected, you will see white on the screen but no color information will be saved in a file saved with `File : Save As`. You must explicitly specify white to get a white background in the other program; otherwise, the background will be transparent.

  When I have several changes to make to a drawing, do I have to wait for CoPlot to finish each revision? No. Choose `Screen : Automatic Redraw : No`. Then, changes will be shown on the screen only when you press the `Redraw` button on the toolbar. This is preferable when you have numerous changes to make and/or when you work with large datasets or maps, which redraw slowly.

  Why is this x not being drawn?
  Why aren't my changes being shown on the screen? If an object is not being drawn and you think it should be, here are some things to check.

  1. Make sure the `Color` of the object is something other than `notDrawn`.
  2. Make sure the position of the object is within the drawing area (try pressing `'Zoom -'` four times to see if it appears).
  3. Make sure the object's `Group` is visible (use `Drawing : Groups : Visible Groups : All`).
  4. If data are not being plotted, make sure all the necessary variables have been specified and that the data file actually has valid data within the range shown on the graph.
  5. When none of your changes result in changes to the drawing on the screen, make sure `Screen : Automatic Redraw` is set to one of the `Yes` options. Or press the `Redraw` button on the toolbar.

  The graphics cursor moves in big jumps, can I change that?
  How do I align objects?
  What is that '+' cursor (a horizontal and a vertical line) near the main cursor? CoPlot drawings have a grid -- an array of points. When you create an object or move an object, it can only be positioned on a grid point. When the '+' cursor is visible, it tells you that the grid system is active for the current operation and shows you where the nearest grid point is. You can move the '+' cursor with the arrow keys. You can make the grid points visible (or not) with `Drawing : Coordinates : Draw Grid`. You can change the distance between grid points with `Drawing : Coordinates : Grid Size`, or by pressing the '`Grid +`' or '`Grid -`' buttons on the toolbar. If you make the grid size really small, it is as if the grid isn't there; you can position points anywhere. If you make the grid size somewhat coarse (0.1 inches or 0.5 cm), it makes it easy to line up objects by sight on the screen.

  I select a Fill pattern but all I get is solid fill. Why? It is likely that the `Fill Size` attribute has been set too small and/or the line `Fill Linewidth` attribute has been set too big. The resulting lines that make up the hatch pattern are so close together that it looks like a solid fill. Change the `Fill Size` to a larger number (for example, 0.1) and/or line `Fill Linewidth` to a smaller number (for example, 0.003).

  How can I set the default directory for my drawing files? You probably can't. The default directory is simply the directory of the most recently used drawing file (see `File : 1`).

  Oops! I just overwrote an important drawing file. Can I recover it? Probably. Whenever CoPlot saves a drawing, it saves the old version of the drawing file as 'backup.draw' in the cohort directory. Here are two ways to recover it:

  - Use a file manger (like Windows Explorer) to change the name of the 'backup.draw' file in the cohort directory to some other, new name.
  - In a command line window, move to the cohort directory (in Windows, type `cd "c:\Program Files\cohort6"`, but substitute the correct cohort directory name). Then rename the file (in Windows, type `ren backup.draw newName.draw`).
  You should then be able to use CoPlot's `File : Open` to open the renamed file.

  How can I change the size of the entire drawing? There are two approaches:

  1. If you want to make the objects be printed bigger but not change their coordinates, the easiest method (and least likely to cause trouble) is to reduce the `Drawing : Coordinates : Scale`.
  2. If you want to leave the objects the same size and with the same coordinates but you want to increase the size of the drawing area so that you can draw other things at the edges, the easiest method (and least likely to cause trouble) is to press the `'Zoom -'` button four times and then choose `Drawing : Coordinates`. Then you can drag the blocks at the edges of the drawing outward to expand the drawing area (you are graphically changing `X Min Bound, X Max Bound, Y Min Bound, Y Max Bound`).
  3. If you really want to change the coordinates of all the objects:
     1. Use `Edit : Any Type : Pick All : Move`.
     2. Set the `X Scale` and `Y Scale` as desired.
     3. Specify the `Origin X,Y` carefully, since the expansion will be relative to that point.
     4. Specify the `Destination X,Y` (usually the same as the `Origin X,Y`).
     5. Press `OK`.
     The danger with this approach is that the coordinates of the objects may no longer be on grid points, and that may make future editing awkward.

  Can I make a drawing "to scale" (for example, 1 inch = 1 foot)? Yes. See `Drawing : Coordinates`.

  How do I get a mirror image of an object?

  1. Use one of the `Edit : Xxx` procedures and pick the object(s) you want a mirror image of.
  2. Choose `Move` or `Copy`.
  3. Set the `X Scale` to `-1` if you want to flip the object in the x direction. Or set the `Y Scale` to `-1` to flip it in the y direction.
  4. Specify the `Origin X,Y` and `Destination X,Y` carefully. If you want to flip it in place, the `Origin` and `Destination` should be at the center of the object.
  5. Press `OK`.

  How can I save part of a drawing for use in other drawings? To save part of a drawing:

  1. Use `Edit : Any Type`.
  2. Use the Pick options to pick the desired objects.
  3. Use `Save In File`.
  To load a different drawing into the current drawing, use `File : Insert`.

  How can I get a hole in an object? For Path objects, see the `Make Subpath` button on the `Create : Path` dialog box. For Ellipse objects, see the `Inner Size` attribute on the `Edit : Ellipse` dialog box.

  How can I find out which .draw files use a certain .dt file or have a certain piece of text in them? Since .draw files are ASCII files, you can use any file search tool to search them.

  - In Windows, use `Start : Find (or Search) : Files or Folders` to search for all *.draw files which contain the desired text.
  - In Mac OS X, use Sherlock to search the `Contents` of files in a specific folder.
  - In UNIX/Linux, use `grep` to search for all *.draw files which contain the desired text.

  Mysterious file-related problems? Some mysterious file-related problems can occur if your hard disk has problems. Try using a program that checks your hard disk for errors.

  - In Windows, use `Start : Programs : Accessories : System Tools : ScanDisk`. The `Quick Check` is usually sufficient. But every few months you should use the `Thorough Check`.
  - This is less likely in UNIX/Linux and Mac OS X, which tend to automatically check the hard disk. Consult your system administrator for suggestions.
  Problems with floppy disks can usually be traced to dirty heads. Buy and use a disk cleaning kit.

  Colored objects on the screen are being printed as light gray. Can I prevent that? Most printer drivers for black and white printers (like laser printers) convert colored objects (on the screen) into gray objects (on the printer). You can prevent this and draw all objects with black by using `Drawing : Other : Draw Colors As : Black`, which changes colors to black on-the-fly (not permanently).

  What can I do to speed up the program? See Speed.

  Is the program frozen? The program will appear to be frozen if you hide a file dialog box with the main window. The solution is to move the main window to uncover and then close the file dialog box.

  A CoHort program will sometimes also freeze for a few seconds (more, in extreme cases) when you are running a lot of programs on a computer with a modest amount of memory, especially when you are working with large image files or when you have been using some other program and return to the CoHort program. In these situations, your computer's disk light will be on. The program will become unfrozen when the disk light goes off.

  Why did the buttons stop working? Very, very rarely the buttons in the dialog boxes stop responding to mouse clicks (thereby making the program look frozen) but the program still responds to other user actions (like the keyboard). Try clicking the right mouse button. Then see if clicking the left mouse button works correctly.

  Why is the current time reported by CoPlot off by one hour? On some computers, Java programs report Standard Time when they should report Daylight Savings Time. To fix this problem on Windows computers, make sure "Start : Control Panel : Date and Time : Time Zone : Automatically adjust clock for daylight savings changes" is checked.

  What if I still can't figure out something? If you can't figure something out, try to find and read the relevant section of the manual (see the Menu Tree and the Index). If that doesn't work, ask a knowledgeable coworker or contact technical support.

  Menu Tree / Index

  ## Frequently Asked Questions Related To Graphs

  How do I get started with graphs? I don't understand how this program works. Please read CoPlot's `Help : Lesson 6`. It may be useful to read the lessons again after you have been using CoPlot for a few weeks or months; you will probably learn things you didn't learn the first time you read them.

  How are CoPlot's graphing capabilities different from spreadsheet/business graphing programs? CoPlot has several features which business/spreadsheet graphing programs do not, including:

  - Different kinds of graphs: 3D graphs, contour graphs, triangular graphs, nchannel graphs, true 3D bar charts (viewable from any direction), polar coordinates graphs, etc.
  - Curve-fitting (linear and non-linear).
  - Error bars, even asymmetric and horizontal error bars.
  - Any number of levels of subscripts and superscripts.
  - The full Greek alphabet.
  - Easy user-positioning of titles and comments.
  - Multiple graphs on a page.
  - Extensive drawing capabilities.
  - Extensive data manipulation and statistical analysis capabilities.
  - Unlimited datafile size (not just 8,192, 32,000, or 64,000 rows).
  - Plotting different datasets with different x columns (not just one x and many y columns).
  - Plotting user-defined functions.
  - Plotting user-defined marker types.
  - Different kinds of axes: log, log log, natural log, square root, probability, date, time, etc.
  - Fonts, markers, and line widths of any size, not just a few sizes.
  - Control over the size and shape of the graph.

  Why do parts of graphs have two part names? It is a fairly simple way to organize all of the attributes for all of the parts of a graph. Hierarchical systems are a good way to organize a large number of objects; that's why scientists give genus and species names to plants and animals.

  How should I arrange the data in the datafile for plotting? Often, there are a couple of formats which could be used. The simplest approach is: for each dataset (that is, a group of points that will be represented by a line or a set of markers on a graph), make two columns in the data file: one for the x data and one for the y data. In the `Edit : Graph` dialog box, choose `Dataset : New Dataset` to create a new dataset (which will subsequently be called Dataset 1). CoPlot will show you the dialog box with its attributes (which you can change). If you want to plot another group of data, choose `Dataset : New Dataset` to create a new dataset (which will subsequently be called Dataset 2). CoPlot will show you the dialog box with its attributes (which you can change). If you want to plot more datasets, keep adding pairs of columns to the data file and keep using `Dataset : New Dataset` to make create more datasets.

  Alternatively, you may already have a data file from some other source, and you may want to plot a subset of the rows in one way (for example, with filled square markers) and another subset another way (for example, with unfilled square markers). The solution here is to use the `Edit : Graph : Dataset : 1 : Keep If` to specify an equation which selects the first subset of data and `Edit : Graph : Dataset : 2 : Keep If` to specify an equation which selects the second subset of data.

  For other types of graphs (for example, bar graphs), it should be helpful to read the section of the manual with describes different `Dataset : Representations`.

  Is there a way to plot part of a dataset on a graph? Yes. Use `Edit : Graph : Dataset : x : Keep If` and enter a boolean expression which will be applied to each row of the data file (for example, `col(1)>20 and col(2)+5<col(1)`. This is also a useful technique for plotting part of a dataset with one type of marker and a different part of the dataset with another type of marker.

  Why does CoPlot change my axis titles and ranges after I use the datafile editor or when I load a new datafile? At certain times CoPlot makes various changes to the graph automatically to make sure that the graph always plots all of the data, that the axes are appropriately labeled, and that the axis titles are appropriate. You can suppress these changes by entering specific values for specific parts of the graph (not just .=default). For example, starting from the `Edit : Graph` dialog box:

  - For the graph title, see `Graph : Title 1`.
  - For the axis range, see `X Axis : Overview : Low` and `High`.
  - For the axis title, see `X Axis : Title 1`.

  The labels on the axis overlap. What can I do? If the labels on the X axes overlap (because you have lots of labels or because the labels are long or because the graph is small), set the `Edit : Graph : X Axis : Labels : Angle` to 270 or 315 degrees and the `X Axis : Labels : H Align` to `Left`. This turns the labels and allows you to put a large number of long labels in a very small area. Another alternative is to change the `X Axis : Overview : Divisions 1` to a number that is larger than the default (for example, twice the default).

  Why are parts of the graph erased when I make changes to a function? When you change a function (or any other part of a graph), CoPlot erases the old function and draws in the new function. When the old function is erased, other parts of the graph that overlapped the old function will also be erased. Thus the graph may appear to have imperfections after a change. To redraw the drawing perfectly, use the `Redraw` button on the toolbar.

  When I have several changes to make to a graph, do I have to wait for CoPlot to finish each revision? No. Choose `Screen : Automatic Redraw : No`. Then, changes will be shown on the screen only when you press the `Redraw` button on the toolbar. This is preferable when you have numerous changes to make and/or when you work with large datasets or maps, which redraw slowly.

  Can I plot a whole bunch of separate lines as one dataset? Yes, but all of the lines will have the same attributes. The basic approach takes advantage of the fact that CoPlot can leave a gap where there is a missing value: make sure `Drawing : Other : Missing values make gaps` is checked. Let's say you have 2 columns in the data file, x and y, and a large number of rows. Put the x,y values for the first line at the top of the column. Then leave a blank row. Then put the x,y values for the next line in the next rows. Then leave a blank row. Etc. When this dataset is plotted, there will be a gap in the line corresponding to every blank row in the datafile.

  How do I make bar graphs? In CoPlot, bar graphs are not different types of graphs. They are just different `Graph : Dataset : Representations` on XY graphs (for example, `BarGraph/100%, BarGraph/Grouped, BarGraph/Stacked`). When Java CoPlot draws a graph, it notices if these representations are in use, looks for all of the datasets which are using each of these, and plots them appropriately. An advantage of this approach is that you can easily mix these representations with other representations on the same XY graph.

  You can make bar graphs by using `Create : Graph` and then using `Dataset : New Dataset` repeatedly. But it is usually easier to use `Create : Bar Graph`.

  If you want other types of bar graphs, or want a variation of one of the standard types of bar graphs, you can use an XY graph and the Dataset Representation called `Bars/2D`. This representation of data takes two data points for each bar, x1,y2 and x2,y2, which are the two endpoints of the bar. You can use this to draw horizontal bars, bars at irregular positions along the x axis, bars which go above and below y=0, bars which float above y=0, etc.

  Can I get a correctly-sized error bar in the legend? It is a common situation to want one error bar to be drawn as a legend for the entire dataset. Sorry, CoPlot does not do this automatically in the legend. There are two work-arounds:

  1. Create a dataset with one data point. This is the preferred method, but you are limited to putting the error bar within the graph, not anywhere in the drawing area. Here is how to accomplish this:
     1. Use `Datafile : 1` to get to your datafile.
     2. Use `Edit : Insert Columns` to create 4 more columns: X, Y, Low, High.
     3. On the first row of the data file, enter X,Y,Low,High values. X,Y defines there the error bar will be based. Low and High define the error values.
     4. Exit CoStat.
     5. Create a new dataset with `Edit : Graph : Dataset : New Dataset`.
     6. Set `Representation: Marker`.
     7. Set the marker `Type` to be Marker Font, character #48 (a blank).
     8. Make sure `Drawing : Other : Draw error bars through markers` is checked.
     9. Use `Edit : Graph : Comment : New Comment` to write a comment next to the error bar.
  2. You can draw the error bar any where in the drawing area with a Dimension object (use `Create : Dimension` and set the `Arrow Angle` to 180°.

  This data representation uses many different colors. Why do only some of the colors show up in the legend? For data and function representations that use many different colors, you can select how many colors appear in the legend with `Edit : Graph : Legend : Grid Colors`

  How can I export data to other programs? CoStat can create ASCII data files in different formats. Or, it put tab-separated ASCII values on the clipboard (if the file isn't too big). Use `Datafile : 1` to get to CoStat. Then use `File : Save As` and select the desired `File Type`.

  Why are there gaps in the line that draws this dataset? CoPlot usually puts gaps in a line where there are missing data points. You can make the gaps go away by un-checking `Drawing : Other : Missing values make gaps`.

  Why isn't my function visible?

  1. Check all of the settings on the `Edit : Graph : Function : x` menu, notably `Color` (it should not be 'notDrawn'), `Representation` (`Line` is a safe bet), `From` (it should be '.') and `To` (it should be '.').
  2. If there is an error message regarding the function, correct the error in the function's text.
  3. Make sure the `Edit : Graph : Y Axis : Overview : Low` and `High` values are both set to '.'.
  4. Calculate a few values with CoStat's `Statistics : Utility : Evaluate a function` (or with a calculator) and see if the equation gives the values you expect.

  Can I plot X, Y, DX, DY vector data? Not directly. You need to convert to the data to X, Y, Size, Angle data before you can use `Edit : Graph : Dataset : 1 : Representation : Vector`.

  1. Use `Datafile : 1 : File : New` to make a datafile with 6 columns: X, Y, DX, DY, Size, and Angle.
  2. Enter the X, Y, DX, DY data.
  3. Use `Transformations : Transform (Numeric)` to transform column 5: `hypot(col(4), col(5))`
  4. Use `Transformations : Transform (Numeric)` to transform column 6: `atanXY(col(4), col(5))`

  Can I change the graph defaults? Currently, no. But for graphs, we recommend that you make a drawing with a graph in the style that you like. Then, whenever you want to make a new drawing with a graph, load that drawing file and rename it (so you don't overwrite it).

  I created some Text objects to annotate my graph. But when I changed the axis ranges, the Text objects didn't move. What can I do? Use `Edit : Graph : Comment` instead. The location of a Graph Comments is specified in graph coordinates, not drawing coordinates. So if you change the axis ranges, Graph Comments will be repositioned appropriately.

  Can I plot distance,angle data? Distance,angle data is generated by surveyors who start at a known point and measure the distance and angle to a second point. From the second point, they measure the distance and angle to a third point. The process is repeated many times. CoPlot can't use this data directly, but you can use the datafile editor to convert it to x,y data:

  1. Use `Datafile : 1 : File : New` to make a datafile with 4 columns: Distance, Angle, X, and Y.
  2. Enter the Distance and Angle data.
  3. Use `Transformations : Transform (Numeric)` to transform column 3:
     `originalX + col(1)*cos(radians(col(2)))`
     (but substitute the numeric value of originalX).
  4. Use `Transformations : Transform (Numeric)` to transform column 4:
     `originalY + col(1)*sin(radians(col(2)))`
     (but substitute the numeric value of originalY).
  5. Use `Transformations : Accumulate` to accumulate column 3.
  6. Use `Transformations : Accumulate` to accumulate column 4.

  I moved my drawing file to another computer. Now CoPlot gives me a `File Not Found` error message for the datafile (or image file)! Data and images are kept in separate files, so you need to move them, too. CoPlot will automatically find the datafile or image files if they are in the same directory as the .draw file in the new computer; otherwise, you may need to reload the data and image files.

  If you routinely move files from one computer to/from another computer, CoPlot has a system for dealing with the problem (see `Screen : Path Aliases`).

  Why are datafiles and image files separate from drawing files? Two reasons:

  1. If a .dt file is used by more than one drawing, you save space on the disk. If the .dt file is large or you have many drawings which use it, the savings are large.
  2. If you detect and fix an error in the .dt file (for example, a mis-typed number), the correction can be made cleanly and will apply to all graphs which use that data.
  Because of this, we are reluctant to change things so that the data is kept within the drawing file. We do encourage you to use a file naming system which make it obvious which data file belongs with which graphs: the first few characters of the file name should be the same. For example, wheat.dt might be used by wheat.gra, wheatcol.gra, wheat1.gra, and wheat994.gra. This also makes it easier to copy the necessary files to another directory or another computer.

  How do I make changes to a graph that CoPlot's Graph objects can't make? Graph objects are very flexible, but there are a few things they can't do. (For example, you might wish that you could change where the city, state, or country names appear on maps.) In these cases, consider using `Edit : Graph : Graph : Save As Drawing Objects` which save the picked graph as large number of drawing objects, mostly Path and Text objects. You can then edit these drawing objects as you would edit other drawing objects.

  How can I get bar graphs with horizontal bars? Use `Edit : Graph : Graph : Overview : Angle : 270`.

  How can I get the numeric data from an already printed graph? (For example, from a graph printed in a scientific journal.) See Digitizing Data From An Image File With A Graph

  The Y axis range is [a] to [b]. Why doesn't the label for [a] show up?

  - Ensure that the end of the range really is at [a] (for example, 0) by choosing `Edit : Graph : Y Axis` and changing `Low` to [a] (even if it already say [a]).
  - Make sure that `Edit : Graph : Y Axis : Labels : Draw First Label` is checked.
  - In unusual cases, it may be necessary to enter a slightly lower value, for example, [a]-0.001.

  I have a nice graph. Can I now make it the basis for a series of graphs by using Graph Array? Sorry. No. Graph Array makes it's own graph objects and can't incorporate existing graph objects.

  However, you can use `Edit : Graph : Copy` and make multiple copies of you graph, setting the `Origin X,Y` and `Destination X,Y` values so that the new graphs are arranged in an array. This is almost as good as a Graph Array. Afterwards, you can use `Edit : Graph : Pick One` to edit one graph at a time. Or, you can use `Edit : Graph : Pick All` to edit all of the graphs simultaneously.

  How do I get different axes and plot different datasets on the left and right Y axes? There are two approaches:

  - If you haven't already started, you can use `Create : Graph Array`. Set `Type` to `2 Y Axes`.
  - If you already have a graph with one dataset plotted on the left Y axis:
    1. Use `Edit : Graph : Copy` to make a copy of the first graph at the exact same location (`Origin X,Y` equals `Destination X,Y`). The new graph is now the currently picked graph.
    2. Use `Y Axis : Overview` and change `Visible` to `Opposite Axis`.
    3. Choose `Dataset : 1` and change the `Y` variable to some other column.

  How do I get broken axes? (For example, 0, then a break, then 1 to 1000 on a log scale.) There are two approaches.

  - The Proper Way: Create two graphs: Create the first graph. Then use `Edit : Graph : Copy` to make a copy of the first graph to the left or right. The new graph is now the currently picked graph. Edit it till it looks like you want it to look.
  - The Quick and Dirty Method for a single value on the left graph: Use the datafile editor to change the x value from 0 to 0.1 in the data file. Then make a single graph with the x axis range from 0.1 to 1000. Then change the first label on the X axis to "0" with `X Axis : Labels : Text`.

  How can I plot data from 2 (or more) datafiles on 1 graph? Use `Datafile : 1` and `File : Open` to open the first datafile. Use `Datafile : 2` and `File : Open` to open the second datafile. When editing the graph, you can use `Dataset : x : Datafile` to specify which datafile should be use for which dataset.

  How do I get hollow markers to erase what is beneath them? This isn't built into the program, but you can do it. Create two datasets. For the first one, set `Representation` to 'filled circle', set the `Color` to white (or whatever background color you want), and set `Legend` to nothing. For the second dataset, set the `Representation` to 'hollow circle' and the color to black.

  How do I get tick marks and labels at specific, unevenly spaced locations? Use `Edit : Graph : X Axis : Overview` and set `Divisions 1` to be a comma-separated-value list of where you want the labels and primary ticks to be.

  Can I identify a data point on a graph or get other information from a graph? Yes. Use `Edit : Graph : Graph : Get` and set `Get What` to `Data points`. Then click on the data point you want more information about.

  Can I plot functions over a limited X range? Yes. Use `Edit : Graph : Function : x : From` and/or `To` to specify the low and high ends of the range for the function.

  How do I plot parametric equations? Parametric equations are representations of functions in which X and Y are each functions of an independent variable, e.g., T. For example, you could make a circle by plotting X=cos(t), Y=sin(t) over the range t=0 to 2pi. To do this,

  1. Use CoPlot's `Datafile : 1 : File : New` to create a datafile with 3 columns, T, X, and Y.
  2. Use CoStat's `Transformations : Regular` to transform column 1 into a series of values from t=`0` to `2pi` with an increment of `0.05`.
  3. Use CoStat's `Transformations : Transform (Numeric)` to convert column 2 to be `cos(col(1))`.
  4. Use CoStat's `Transformations : Transform (Numeric)` to convert column 3 to be `sin(col(1))`.
  5. Use CoStat's `File : Save As` to name and save the data file.
  6. Use CoPlot's `Create : Graph` to create a graph.
  7. Use CoPlot's `Edit : Graph : Dataset : New Dataset` to create a new dataset which plots X=column #2 and Y=column #3.

  Can I plot a slice of a 3D surface on a 2D graph? Yes. Let's say you have a gridded dataset with the gridded x,y,z data in columns 1, 2, and 3, respectively, and you want to get the slice where Y=3.

  - Pick the graph you want to work with (for example, use `Edit : Pick One`).
  - Choose `Graph : Overview : Type : XY`.
  - Choose `Dataset : New Dataset`.
  - Set the `X: 1) X`.
  - Set the `Y: 3) Z`.
  - Set `Keep If: col(2)==3`.
  To get a slice in the other direction (for example, where X=5), set `X: 2) Y` and set `Keep If: col(1)==5`.

  Can I identify data points with labels? Yes. There are two approaches:

  1. If you want to label most or all of the data points, use the dataset representation called `Markers/labels` to put a label beside each marker. The text for the labels comes from one of the columns in the datafile.
  2. If you want to label just a few of the data points, use `Edit : Graph : Comment : New Comment` to create comments which positioned in graph coordinates. One advantage to this approach is that the comments can have boxes (or other shapes) around them.

  Can I calculate the volume of a 3D surface? It is often useful to know the volume defined by a 3D surface or the area of the surface which falls within a given range of elevations. While CoPlot does not yet have a feature to calculate these values automatically, you can do the calculation using existing procedures. To calculate the volume of a gridded data set:

  1. Use CoPlot's `Datafile : 1 : File : Open` to open the datafile.
  2. Use CoStat's `Edit : Insert Columns` to insert one double column (at the end) for temporary use. (Call it temp.)
  3. Use `Transformations : Transform (Numeric)` to calculate the volume associated with each data point. For example, if the gridded Z data is column #3 (measured in feet), and the new variable is column #4, and the distance between grid points on the X and Y axis is 300 feet, you would use an equation like column #4 = `col(3)*300*300`.
  4. Use `Transformation : Accumulate` to accumulate the values in column 4.
  5. Scroll to the last row of the spreadsheet in order to read the accumulated volume in column 4.

  This is a pretty good estimate of the volume. To get a less good approximation of the surface area within a specific elevation range (for example, z=700 to 800), use `Transformations : If Then Else (Numeric)` in step 3 and use `If col(3)>700 and col(3)<=800 Then 300*300 Else 0`.

  How can I create X and Y values for already gridded Z data? If you already have the Z values from a regular grid (but not the X and Y values), you need to create 2 columns of data with the appropriate X and Y values. You can do this with `Datafile : 1 : Transformations : Make Indices`.

  Why isn't one of my datasets (or functions) appearing in the legend?
  How can I make a dataset (or function) not appear in the legend? Check `Edit : Graph : Dataset (or Function) : x : Legend`. If it is set to nothing, there will be no entry for that dataset (or function) in the legend.

  Can I change the order in which parts of the graph are drawn? Yes. See `Edit : Graph : Graph : Drawing Order`.

  Related topic: You can change the order in which the drawing objects are drawn, in order to control which drawing objects are partly obscured by other drawing objects.

  Can CoPlot draw part of the graph, then draw some drawing objects, then draw the rest of the graph? No. All parts of a graph are drawn together. But there is another approach: make two graphs and `Hide` one of them. You can edit the 'hidden' graph so that it will draw part of the original graph and not the rest (set the Color for those graph parts to 'NotDrawn'). You can edit the second graph so that it will draw the other parts of the original graph (set the Color for the other graph parts to 'NotDrawn').

  Related topic: You can change the order in which the drawing objects are drawn, in order to control which drawing objects are partly obscured by other drawing objects.

  How do I set up a drawing for A4 paper? There are several attributes on CoPlot's `Drawing : Coordinates` dialog box which let you select A4 paper (`Common Sizes : A4`), change the drawing bounds to fill A4 paper, and change the units to cm. But the easiest thing to do is use `File : Open : CoPlot (.draw)` to open the metric.draw file in the cohort directory. This is a drawing file in which all of the changes have already been made to `Drawing : Coordinates` so that you can work in cm on A4 paper. Then, use `File : Save As` to give the file a new name.

  Is there a way to jitter the data points, so that identical data points are plotted slightly offset from each other? There isn't a built-in jitter feature, but it is easy to do:

  1. In CoPlot, select `Datafile : 1` so that you see CoStat and your data.
  2. In CoStat, use `Edit : Sort` to sort the data based on two keys: column 1 and column 2 (assuming those are the OldX and OldY columns).
  3. In CoStat, use `Edit : Insert Columns` to insert 2 new columns, NewX and NewY (but you can specify better names) which store `Double` values. Usually, `Insert Where` should be set to `End` (the far right of the spreadsheet).
  4. In CoStat, use `Transformations : If Then Else (Numeric)` to describe an equation which will be used row-by-row to fill column 3, the NewX column; something like `
     If col(1) == col(-1) and col(2) == col(-2)
     Then col(3) = col(1) + 2 * (random() - 0.5)
     Else col(3) = col(1)`
     where `col(-1)` refers to the value in column 1 in the previous row. `random()` produces a number (0 ... 1). `0.5` converts 0 ... 1 into -0.5 ... 0.5. `2` converts that into -1 ... 1, but you could use some value other than 2 to get more or less jitter.
  5. In CoStat, use `Transformations : If Then Else (Numeric)` to describe an equation which will be used row-by-row to fill column 4, the NewY column; something like `
     If col(1) == col(-1) and col(2) == col(-2)
     Then col(4) = col(2) + 2 * (random() - 0.5)
     Else col(4) = col(2)`
     The same comments about the equation apply here.
  6. In CoStat, use `File : Save`.
  7. Close CoStat, so that you again see CoPlot.
  8. Modify the graph so that it plots NewX, NewY, instead of OldX, OldY.

  What if I still can't figure out something? If you can't figure something out, try to find and read the relevant section of the manual (see the Menu Tree and the Index). If that doesn't work, ask a knowledgeable coworker or contact technical support.

  Menu Tree / Index

  ## Suggestions

  The goal of CoPlot is to provide you with an inexpensive, flexible way to produce your own high-quality scientific graphs and technical drawings. CoHort Software hopes that CoPlot helps you reach that goal.

  General Comments - The most important advice for setting up graphs is: Keep it simple. Don't put too much on one graph. Make sure everything is as clear as possible. Make sure text is easily legible.

  Try using macros for frequently performed operations. See Macro.

  Posters - The best quality posters are "stats" or "PMT's" from a blueprint store. These are moderately expensive enlargements of your art work. Stats can be any size you want.

  Many photocopy stores can now do a photocopy enlargement of 8.5"x11" drawings to 17"x22" or larger for a very low price, and the quality is quite good.

  Slides - The best way to make slides is with a film recorder, a device specifically made for taking computer-generated images and recording them on film. There are numerous brands of film recorders. All film recorders can create slides from images stored in graphics files. The department in your university or company that maintains the film recorder will know what types of files can be used by the software that drives the film recorder. Many of the graphics file types that CoPlot can create are commonly used to send images to film recorders: WMF, HPGL/2, PostScript, and CGM.

  If you don't have a film recorder, you can take slides directly off your computer screen. If possible, use a telephoto lens (80 to 135mm) to flatten the screen. Pick a slow film (such as ASA 64 or 100). Use a tripod and a cable (shutter) release (or the camera's self-timer if you don't have a cable release). You may need to use a close-up lens (an inexpensive lens that screws onto your regular lens) to be able to focus close enough. Make sure the film plane is parallel to the screen to avoid distortion. Set the screen contrast fairly high, but avoid blurring. Make sure the room is very dark (do it at night with the lights off and curtains closed). The shutter speed should be 1/4 second or slower to make the monitor's scan line invisible. Determine the approximate exposure by doing a test roll; try 1-second exposures at all apertures (although apertures in the middle or high end of the range give the best-quality photos). Do not depend entirely on your exposure meter; it will tend to overexpose graphs that don't have large filled areas. When you decide on an exposure setting, use the same setting for all graphs. (Advice from Allan Fertig, Agricultural Communications, University of Arizona.)

  Slides from a laser printer - Another approach to making slides is to get a good quality printout (from your laser printer or plotter) and make slides from the output with a copy stand. Given the high resolution of commonly available printers, this is an excellent and inexpensive alternative to slide making machines. Many photo-finishing companies now provide 1-hour service for a minimal surcharge.

  Polaroid makes 2 types of instant film that you may find useful. PolaBlue produces instant 35mm white on blue slides from black on white printout. PolaChrome produces instant color slides (good for photographing color screens directly).

  Many copy stores now have special color laser copiers that can make slides directly from any original. The results from the new color printers are especially good.

  Style - Three excellent books about style in statistical graphics are The Visual Display of Quantitative Information (1983), Envisioning Information (1990), and Visual Explanations by Edward R. Tufte. Not only does he show you examples of superb and horrible graphics, he explains the rationale behind his judgments. He believes in minimizing "chartjunk" - the unnecessary lines and fill styles that clutter most graphics. He discusses how to emphasize the data, not the chart. He warns of techniques that compromise the integrity of graphics. We recommend his books highly. We at CoHort Software hope that CoPlot is sufficiently flexible that you can use it to explore non-standard, good graphics design.

  Practical Graph Design - A great book about style in graphs is Elements of Graph Design by Stephen M. Kosslyn (1994). This is a very practical style manual which covers almost all standard types of graphs. The book has page after page of examples of the right way and wrong way to create different kinds of graphs.

  The Elements of Graphing Data is an excellent book by William S. Cleveland. The book reflects his years of experience making technical graphs at AT&T Bell Laboratories. He makes good use of graph arrays.

  False 3D and Perspective - CoPlot does not support adding a false third dimension to 2D text and 2D bars; we at CoHort Software believe it is unnecessary clutter that detracts from the readability of the graph, in addition to being misleading.

  Plot a dataset twice for special effects - It is sometimes useful to plot a dataset twice, that is, to set the `Dataset : 1 : X` and `Y` variables to be the same as the `Dataset : 2 : X` and `Y` variables. You can then choose different representations for each dataset. For example, you could plot `Dataset : 1` with `Representation: Marker`, with no lines between the markers, and `Dataset : 2` with `Representation : Fill zero`. Such combinations are not possible without plotting the dataset twice.

  Height vs. width of a graph - The shape of a graph (set by `Edit : Graph : Graph : Overview : X Axis Size` and `Y Axis Size`) can greatly influence a reader's interpretation of the data. The appropriate width-to-height ratio often depends on the precision of the measurements of the data along each axis. Graphs that are relatively tall emphasize changes in the y variable. Graphs that are relatively wide make changes appear to be slower and more gradual. Graphs should almost never be taller than they are wide. Time graphs with little precision along the X axis should be somewhat narrower, but they should rarely be taller than they are wide. Correlation matrix and scatterplot xy graphs should usually be square. Graphs with a large range of data along the X axis (e.g., a time series) should be wide - perhaps several times as wide as they are high. (Tufte, 1983)

  Consider using tables instead of graphs - Some pie and bar graphs plot few data points and therefore convey relatively little information in a large amount of space. It can be a lot of trouble to read the legend to find out what's what. In many cases, it is more legible and takes less space to put the data in a simple table in a logical order. See `Create : Table`.

  Menu Tree / Index

  ## Switching From DOS CoStat, CoPlot, and CoDraw

  Here are items of interest to people switching from DOS CoStat, CoPlot, and CoDraw to Java CoPlot.
  DOS CoPlot and DOS CoDraw
    The features of DOS CoPlot and CoDraw are now combined in Java CoPlot. Java CoPlot works basically like DOS CoDraw did: it is a drawing program. You create drawings by creating drawing objects and manipulating their attributes. Java CoPlot has a new object type that DOS CoDraw didn't have, Graph. With it, you can create one or more graphs in the drawing. See CoPlot's `Help : Lesson 1`.
  DOS CoStat
    The DOS CoStat is replaced very directly by Java CoStat, which exists as a separate program and as a fully-integrated part of CoPlot. CoPlot's `Datafile` menu lets you load and work with up to 15 data files per drawing. See CoStat's `Help : Getting Started`.
  DOS CoText
    The DOS CoText is replaced very directly by Java CoText, which exists as a separate program and a fully-integrated part of CoPlot and CoStat (where it captures and displays results from statistical procedures). See CoText's `Help : Getting Started`.
  Menus
    The DOS programs had their own unique graphical user interface. Java CoPlot uses a more standard interface with a menu and various dialog boxes with standard widgets. See the Menu Tree.
  What!? The DOS keystroke menu system is gone!
    Yes. Sorry. We liked it, too. You could work very quickly if you knew the programs well and were a touch typist. But most users nowadays want to see a typical Windows/Mac/UNIX graphical user interface, so we have done our best to meld the two styles. Once you get used to it, you will see that all of the features of the DOS programs are still there, often with basically the same names, but with a somewhat altered interface.
  DOS CoPlot's `Graph : File` and DOS CoDraw's `Global : File` Menus
    are replaced by Java CoPlot's `File` menu. For example, DOS CoPlot's `Graph : File : Save` is replaced by Java CoPlot's `File : Save`.
  CoPlot's and CoDraw's `Update Screen` Menus
    are replaced by Java CoPlot's `Drawing` menu (for settings related just to the current drawing) and Java CoPlot's `Screen` menu (for settings related just to the screen and for all drawings).
  DOS CoPlot's and CoDraw's `Update Screen : Coordinates` Menu
    is replaced by Java CoPlot's `Drawing : Coordinates` dialog box. That dialog box also controls the scaling and positioning of the drawing on the printed page (which used to be part of DOS CoPlot's and CoDraw's printing procedure).
  DOS CoDraw's `Line, Arrow, Bezier Line, Marker, Spline, Filled Area, Rectangle, Bezier Filled Area and Spline Filled Area` Objects
    All of those DOS CoDraw object types are replaced by Java CoPlot's `Path` object type. A path is a series of points and a set of attributes describing how the object should be drawn. By changing the attributes, you can draw anything the DOS objects could have drawn, and much more. There is an attribute which specifies if the points should be connected by straight line segments, spline sections, or used as Bezier control and end points. There are separate attributes for the background color, fill (hatch) color, and line (perimeter) color. There are many other attributes.
  DOS CoDraw's `Circle` and `Pie`
    are replaced by Java CoPlot's `Ellipse` object. Like the Path object, Ellipse objects have many attributes so they can be used to draw many different types of objects.
  DOS CoPlot Always Had One Graph
    In DOS CoPlot, there was always one active graph on the screen. But initially, Java CoPlot shows you an empty drawing with no drawing objects, not even a graph. If you want to draw a graph, you must first use `Create : Graph` (or press the graph icon on the left edge of the main window) to create a graph.
  DOS CoDraw's and CoPlot's Menus
    In DOS CoPlot, there was only one active Graph, so the menu system was focused on that one graph. At any time, you could identify a part of a graph (for example, the `X Axis : Title`) and then edit the attributes of that part of the graph. In Java CoPlot, there may be many graphs (and other drawing objects) in the drawing, so you must first pick the graph (identify it as the drawing object you want to edit). Then you can identify a part of the graph (for example, `X Axis : Title 1` on the `Edit : Graph` dialog box) and edit its attributes.
  DOS CoDraw's `Edit` Procedure
    To pick an object by clicking on it, use Java CoPlot's `Edit : Pick One` procedure or the `Pick One` button on the toolbar. Or, if no dialog boxes are open, just right click on the object. (on some Macs: hold down the `Apple` key and press the mouse button.)
  DOS CoDraw's `Variety Edit` Procedure
    To pick a variety of objects of different types, use Java CoPlot's `Edit : Any Type` procedure or the light blue 'E' button on the left side of the main window.
  DOS CoDraw's `Just Edit` Procedure
    To identify a type of object and then click on objects of that type which you want to edit, use one of the light blue 'E' buttons on the left side of the main window.
  DOS CoDraw's `Individual Edit`
    DOS CoDraw's `Individual Edit` offered a quick way to edit individual objects or individual points within an object. Those procedures are replaced by Java CoPlot's `Edit : Objects` and `Edit : Points Move` procedures. Procedures like these which are specific to Path objects (`Insert Point, Delete Point, Break Path, Join Paths`) can be found in the `Edit : Path` dialog box.
  Importing .dra and .gra Files
    Use Java CoPlot's `File : Open : CoDraw DOS (.dra)`, `File : Open : CoPlot DOS (.gra)`, or `File : Open : CoPlot DOS Group (.grg)` to convert .dra, .gra, or .grg files into Java CoPlot's .draw file format. .dra imports work quite well. .gra and .grg imports work pretty well, but there may be small imperfections in the converted graphs that you will need to fix by hand. Java CoPlot's .draw files are ASCII files; so if you need to, you can edit them with a text editor.
  .dt Data Files
    DOS CoStat encouraged you to describe the data file in terms of variables, replicates, and factors with treatments. Java CoStat just has rows and columns. DOS CoStat only stored double precision floating point numerical data. Java CoStat lets you store different types of data, including text data.
  Importing .dt Files
    Use Java CoStat's `File : Open : CoStat (.dt)` to import older .dt files into Java CoPlot's newer .dt file format. The new .dt files support many different data types (not just double precision real numbers), including Strings of any length. Strings are handy in CoPlot because they allow you to plot text labels beside data points.
  DOS CoPlot's and CoDraw's .fnt Font Files
    If you made your own custom fonts with DOS CoDraw, Java CoPlot can use the DOS .fnt font files if you copy them into the new cohort directory. It is best if you have three files for each font family: name.fnt (the regular weight font, for example, `helvet.fnt`), name-l.fnt (the light weight font, for example, `helvet-l.fnt`), name-b.fnt (the bold font, for example, `helvet-b.fnt`). DOS CoPlot and CoDraw's `Update Screen : Font Load` is replaced by Java CoPlot's `Drawing : Load Fonts`. Unfortunately, Java CoPlot does not yet have a character editor to replace the one in DOS CoDraw. Java CoPlot supports system fonts on screen and when saving to some types of graphics files (notably PostScript).
  DOS CoPlot's .mp* Map Files
    Java CoPlot can use the DOS .mp* map files if you copy them into the new cohort directory.
  Saving Java CoPlot's .draw Files As .dra or .gra Files
    Sorry. You can't. Java CoPlot has so many new features that it would be impossible to do even a reasonably good job of generating .gra files. It would be possible to do a simplistic job of generating .dra files, but too much information would be lost and the results would be hard to work with and not what you are hoping for. Please move forward to the new programs, not back to the old programs.
  Saving Java CoStat's .dt Files As DOS CoStat .dt Files
    Sorry. You can't. Java CoStat supports String data (DOS CoStat didn't), so data would be lost. If you really need to get data from Java CoStat into DOS CoStat, use Java CoStat's `File : Save As : File Type : ASCII - Comma Separated`. At least the numeric data can be transferred.
  Colors
    In DOS CoPlot and DOS CoDraw, there were 9 palettes of 16 colors each. In Java CoPlot, there is one palette of 142 colors. And you can also create and use any custom color that you want.
  CoPlot's `Top X Axis` and `Right Y Axis`
    If you just want to have the same ticks and labels on the Top X axis or the Right Y axis, use Java CoPlot's `Edit : Graph : X (or Y) Axis : Overview : Visible : Both Axes`. Or you can use the `Visible : Both Axes` setting for individual parts of the graph, for example the `X Axis : Labels`.

    If you want a different axis range, different ticks, different labels or you want to plot a dataset with the Right Y axis, you need to make two graphs.

    1. Create one graph which plots one of the datasets and uses the left Y axis only.
    2. Press the `X Axis` button and set `Low` and `High` to specific numeric values.
    3. Use `Copy` on the `Edit : Graph` dialog box to make a copy of the graph without moving it.
    4. Now that the second graph is the picked graph, change the Dataset's Y variable and press the `Y Axis` button and set `Visible` to `Opposite` axis.
    5. For future editing, remember that you can use the `Edit : Graph : Pick List` procedure to pick either or both of the graphs.
  DOS CoPlot's `Graph : File : Group` and `Quick Switch`
    Now that Graphs are just another type of drawing object, it is easy to have multiple graphs in a drawing. There is no longer a need for DOS CoPlot's `Grouped Graph` (to sort-of get multiple graphs on the screen) or `Graph : File : Quick Switch` (to quickly switch between several different graphs). In Java CoPlot, you can get multiple graphs in a couple of different ways:
    - Use `Create : Graph` repeatedly.
    - Use `Edit : Graph : Copy` to make copies of an existing graph.
    - Use the new `Create : Graph Array` to make an array of graphs in one step.
  DOS CoPlot's `Graph : File : Save As Draw`
    In DOS CoPlot, if you wanted to draw something other than a graph, you had to use `Graph : File : Save As Draw` and then use DOS CoDraw. In Java CoPlot, the graph is already part of a drawing, so you can use the various `Create` options to draw other things on the drawing. See `Help : Lesson 1`.

    In DOS CoPlot, you also had to use `Graph : File : Save As Draw` to edit the parts of a graph in unusual ways in CoDraw. In Java CoPlot, you can use `Edit : Graph : Graph : Save As Drawing Objects` to convert a graph into a collection of drawing objects and immediately edit them.

  DOS CoPlot's `Origin` Graph
    In DOS CoPlot, this was a separate graph type. In Java CoPlot, use an XY graph, but set `Edit : Graph : Graph : Overview : Draw XY Graph As Origin Graph`.
  DOS CoPlot's `Histogram` and `3D Histogram` Graphs
    In DOS CoPlot, these were separate graph types. In Java CoPlot, `Histogram` is just one type of dataset representation on XY graphs, and `3D Histogram` is just one type of `Dataset Representation` on 3D graphs.
  DOS CoPlot's `Grouped Bars, Stacked Bars, 100% Bars` Graphs
    In DOS CoPlot, these were separate graph types. In Java CoPlot, they are just different `Dataset Representations` on XY graphs. When Java CoPlot draws a graph, it notices if these representations are in use, looks for all of the datasets which are using each of these, and plots them appropriately. An advantage of this approach is that you can easily mix these representations with other representations on the same XY graph.
  DOS CoPlot's `N-Channel, Matrix, Multivariate Bar` Graphs
    In DOS CoPlot, these were a separate graph types that were plotted as what looked like an array of XY graphs. In Java CoPlot, they are all replaced by `Create : Graph Array` which helps you set up and manage a 2D array of XY graphs. An advantage of this approach is that you can make different Y Axis ranges for each of the graphs. Or, you can put two datasets in one of the graphs.
  DOS CoPlot's `Data Indicates`
    - For the dataset, select `Representation : Markers/Labels`.
    - Set `Labels` to the column with the values you want to display. You might want to use CoStat's `Edit : Insert Columns` and `Transformations : Indices To Strings` to make a new column with values derived from some other column.
    - Select `Position: 5) Center Center`.
    - Set `Marker Type` to one of the unused markers (#48?).
  CoPlot and CoDraw's Embedded Text Commands
    DOS CoPlot's and CoDraw's embedded text commands which generated unusual characters are replaced by Java CoPlot's HTML-like character entities, which all start with '`&`' and all end with ';'. For example, `&Aacute;` generates '`Á`'. In every situation where character entities can be used, Java CoPlot has a '`&`' button which pops up a window to help you pick the characters from lists. Or, you can just type the names into the textfields. All of the characters which were available in the DOS programs are available in Java CoPlot, and more.

    DOS CoPlot's and CoDraw's embedded text commands which were formatting commands are replaced by Java CoPlot's HTML-like embedded text tags, which all start with '<' and all end with '>'. For example, '`<b>`' makes subsequent text bold and '`</b>`' makes subsequent text not bold. In every situation where tags can be used, Java CoPlot has a '`<>`' button which pops up a window to help you pick the tags from a list. Or, you can just type the tags into the textfields. All of the formatting commands which were available in the DOS programs are available in Java CoPlot, and more.

  DOS CoStat's and CoPlot's Equations
    Java CoStat and CoPlot support equations which are very similar to DOS CoStat's and CoPlot's equations (see Using Equations in the CoStat Manual (costat.htm)), but the new equations support a much larger number of built-in functions and can be used for String processing as well as numeric processing. See also Differences from the DOS CoHort Equation Evaluator in the CoStat Manual (costat.htm).
  Macros
    Macros in Java CoPlot and CoStat are just as easy to use as macros in the DOS programs (start recording with `Macro : Record`; later play them with `Macro : Play`). But the new macros can be greatly extended because they stored named commands (not just keystrokes) and because they use a language (see The Macro Language in the CoStat Manual (costat.htm)) which supports variables, control structures (`if, else, for, while` etc.), procedures, etc.

    Because the DOS macros just stored keystrokes, there is no way for Java CoPlot or Java CoStat to automatically convert them for use in Java CoPlot or CoStat. We recommend you open the old macro files in a text editor (like CoPlot's `Edit : Show CoText`) so you can view them while recording replacement macros in Java CoPlot.

    The DOS macros supported a feature called `Display Yes/No/Off`. Currently, there is no comparable feature in the new programs.

  Technical Support
    Technical support remains the same - free. You can call, email, fax, or mail your questions to CoHort Software (note our new address and fax number as we have moved).

  Menu Tree / Index

  ## CoStat

  CoStat is the datafile editor which is built into CoPlot. It can also do statistical procedures with the data. CoStat is run when you choose `Datafile : x`. With it, you can open a data file, view the data, transform the data, do regressions, etc. See the CoStat Manual (costat.htm) for more information. Results from the statistics procedure are put into a text editor called CoText. See CoText's `Help` menu for more information about using CoText.

  CoPlot, CoStat, and CoText share the same memory allocation (in the CoStat Manual (costat.htm)).

  Menu Tree / Index

  ## CoText

  CoText is the text editor which is built into CoStat and which captures and displays statistical results. It pops up automatically when needed. With it, you can view results, annotate results, print results to a file, etc. The commands are similar to Microsoft Word. See CoText's `Help` menu for more information.

  CoPlot, CoStat, and CoText share the same memory allocation (in the CoStat Manual (costat.htm)).

  CoText in CoPlot - You can also create and use a separate instance of CoText from within CoPlot with `Screen : Show CoText`. Sometimes it is handy to have easy access to a text editor. This is a different instance of CoText than the one used by CoStat to capture and display statistical results or CoStat's `Screen : Show CoText`.

  Menu Tree / Index

  ## File

  The File menu has all of the options related to opening, saving, and printing the drawings stored in CoPlot's .draw files.

  Menu Tree / Index

  ## File : New Window

  In the stand-alone version of CoPlot, this option opens a new, empty, .draw file in a new CoPlot window. The original window and file are not affected.

  In some ways, the windows act like independent programs:

  - CoPlot doesn't check if another window is already editing the same file, so there is no synchronization.
  - You can close the windows in any order.

  In other ways, the windows act like part of the same program:

  - All CoPlot windows share the same memory allocation (in the CoStat Manual (costat.htm)), so the individual file size limit will be reduced.
  - If one window crashes or freezes, they will all crash or freeze. Hopefully, all serious problems will be handled and crashes won't be a problem.

  Menu Tree / Index

  ## File : New

  If the current document isn't empty, this first asks if you want to save the current file. Then it removes all drawing objects from memory and returns to the default `Drawing Coordinates` so that you have a new, empty, .draw file.

  Menu Tree / Index

  ## File : Open

  1. `File : Open` has a sub-menu which lets you specify the type of graphics file to be loaded (for example, CoPlot's native .draw files, .gif files, .jpg files, Adobe Illustrator .eps files, Windows MetaFile .wmf files, DOS CoDraw's .dra files, DOS CoPlot's .gra or .grg files, etc.).
  2. After selecting the file type, if the current document isn't empty, CoPlot asks if you want to save the current file.
  3. `File : Open` then shows you a dialog box that lets you specify the file you want to load.
  4. CoPlot opens the file that you specified.

  The `'File : Open'` Button on the toolbar right below the menu allows you to open any supported type of file. It is an alternative to all of the `'File : Open'` menu options. Initially, it shows you the "*.draw" files, but you can change that to see other file types (for example, "*.gif" or "*.wmf" or even "a*.wmf"). If you specify a file name without an extension, it appends ".draw" to the file name. After you specify the file's name, it tries to open the file. It guesses the type of file based on the extension of the file's name (for example, ".draw" or ".gif").

  Error Messages - If errors occur while opening a file, the program tries to continue processing the file. Only the first error is reported. CoPlot also prints some diagnostic information to the console window (the text-only window associated with CoPlot). The diagnostic information can be useful to employees of CoHort Software when trying to track down problems.

  Can I import graphs from Excel, SigmaPlot, Axum, Origin, SAS, ...? Sorry, CoPlot can't directly import the graph descriptions from these other files. The best you can do is use `File : Save As` in the other program to save the graph in a .wmf or .cgm file and import that into CoPlot with `File : Open : Windows MetaFile (.wmf)` or `CGM`.

  File Types -

  CoPlot (.draw)
    This is CoPlot's native file format. Files can be opened and saved very quickly, with no loss of information.

    The names of CoPlot's drawing files always end in ".draw". If you choose to open a .draw file and type in a file name that doesn't end in ".draw", CoPlot will add the ".draw" for you.

    If you load a .draw file that has a graph which uses a data file and the data file is not found in the specified directory, the .draw file's directory will also be searched.

  GIF (.gif)
  JPG (.jpg)
  PCX (.pcx)
  PNG (.png)
  PPM (.ppm)
    All of these procedures open an image file and make a drawing that has one image object (the file you specify). The drawing will be the exact size needed to hold that image.

    To do this, these procedures create a drawing with one image object (see `Create : Image`). Then, they set several items on the `Drawing : Coordinates` dialog box:

    - `X/Y Max Bounds` are set to match the original size of the image.
    - `Units Name` is set to "`pixels`".
    - `Scale` is set to `100` pixels per inch.
    The resulting drawing is like any other drawing: you can create new drawing objects (Path objects, Text objects, etc.) and you can edit existing drawing objects. For example, you could edit the image object that displays the image file you opened, changing its `Contrast` or `Brightness` setting.

    These procedures are useful for loading an image, optionally annotating it, and saving it (perhaps in a different type of image file), while keeping the original size. For example, you could load a .pcx image and save it as a .gif image.

    If you just want to use an image as smaller part of a drawing, use `Create : Image` instead.

  Adobe Illustrator (.eps)
    CoPlot can correctly read in most, but not all, Adobe Illustrator .eps files. Many clip art libraries are in this format. Some clip art libraries are scanned in -- they often have problems and look crude when imported. Other clip art libraries have pictures that have been drawn -- they tend to import well and look good.
    - Adobe Illustrator files are a subset of the EPS specification. CoPlot can only read in EPS files made by Adobe Illustrator, or files which follow that standard. If CoPlot doesn't think the file is compatible, you will get the error message telling you so.
    - If you have a file that is plain PostScript (not the Adobe Illustrator subset), you may be able to use some other program to convert the file into an Adobe Illustrator file. For example, `pstoedit`, `GhostScript`, and `GhostView` are open source programs available on the web (http://www.cs.wisc.edu/~ghost/) which can accomplish this task.
    - Adobe has stopped publishing the specifications for Illustrator files, so we have done our best to figure out what is in the newer files, with mixed results.
    - Fonts other than Helvetica, Times Roman, and Courier will be converted to Times Roman.
  AutoCad (.dxf)
    CoPlot can correctly read in most, but not all, .dxf files.
    - The .dxf files must be ASCII (not binary). This is the most common type.
    - CoPlot supports most types of entities (objects like lines, fill, and text). But CoPlot does not support most variants of dimension text.
    - Polylines - CoPlot does not support the arc and bulge features of Polylines. Instead, CoPlot treats Polylines as a series of straight line segments. If it is important, you must convert these to splines manually.
    - CoPlot supports 2D entities only. 3D entities are ignored.
    - The most significant potential problem is that CoPlot does not support entities in the Block section of the DXF file. These are objects that are defined once and then replicated many times throughout the drawing. Most drawings do not use these; some do. If you have access to AutoCad and the original drawing, use dxfout's `Entities` option to make a dxf file with just entities.
    - CoPlot supports AutoCad's standard predefined line types, but not user-defined line types.
    - All entities are drawn with black. Color-by-layer information is lost.
  CGM (.cgm)
    Computer Graphics Metafile is an ANSI standard, increasingly common, vector-based, drawing file format. Some clip art libraries are available in this format. CoPlot can correctly read in most, but not all CGM files. CGM is a large specification. Different companies have implemented subsets of it in different ways. This makes it difficult to import them all perfectly. CoPlot tries to follow the specification as closely as possible. Most CGM files will read in correctly.
    - CoPlot reads in binary (not ASCII) cgm files. This is the most common type.
    - CoPlot supports the most common number formats and number precisions.
  CoDraw DOS (.dra), CoPlot DOS (.gra), CoPlot DOS Group (.grg)
    Importing DOS CoDraw's .dra files works well, since the new CoPlot mostly supports a superset of the attributes of the DOS CoDraw (an exception is viewports). Importing DOS CoPlot's .gra and .grg files works well for most files, but does not handle some unusual features.
    - Light Weight (-l) Fonts - References to the light fonts in .gra or .dra files are converted to regular fonts. This isn't strictly correct, but we want to discourage the use of light fonts. The new normal fonts are already light enough, so you shouldn't need to use the light fonts anymore except in unusual circumstances. See embedded text tags for information about using the '`<b>`' and '`</b>`' tags to control the weight of the fonts used in the new CoPlot.
    - Century font - References to Century fonts in .gra and .dra files will be converted to references to Times Roman (TmsRmn), since the fonts are similar and Times Roman is now supported by a system font and therefore looks better. The Century font is still available (see `Drawing : Load Fonts`).
    - Mono font - References to Mono fonts in .gra and .dra files will be converted to references to Courier (Cour), since the fonts are similar and Cour is now supported by a system font and therefore looks better. The Mono font is still available (see `Drawing : Load Fonts`).
    - Embedded text commands - Most embedded text commands convert correctly. A few don't convert correctly, notably '`\>`' and '`\<`'.
    - Multiple spaces in text may be converted in a way the user doesn't want (it is an awkward problem). You may need to do some hand editing (adding '`&nbsp;`' or '`<rt=0.2>`') to get exactly what you want.
    - `Text Spacing` and `Text Width` - The Java version of CoPlot doesn't support the `Text Spacing` or `Text Width` attributes. So if a piece of text used `Spacing` other than 0, or `Width` other than 1, that new text will not have the exact same width as the old text. You may need to do some hand editing to get exactly what you want.
    - Colors - Since .dra palette colors are stored in the cohort.set file, the information is not available to this procedure. Hence, color numbers are interpreted as the colors from the default palettes. But palette 7 colors (since they are stored in the .dra file) are always imported correctly. The colors in the default palettes have been changed slightly to match the standard GUI color scheme: color 0 is now white and color F is now black.
    - CoPlot grouped graphs in different viewports saved as .dra file - If you had a grouped graph in DOS CoPlot with graphs in less-than-full-screen viewports and saved it as a .dra file, the .dra file made use of viewports. But the Java version doesn't support the idea of a unit-sized drawing area, so it can't deal with viewports into that area. Work around: read the old .dra file in DOS CoDraw and save it. That converts the drawing into a drawing without viewports. Then the new CoPlot can correctly import it.
    - Graphs with 2 Y Axes - The DOS version of CoPlot had a good simple system for right/left Y. The new version does not have that exact capability, but has an easy way to get 2 Y axis. Try this:
      1. Create one graph which plots one of the datasets and uses the left Y axis only.
      2. Choose `X Axis : Overview` in the `Edit : Graph` dialog box and set `Low` and `High` to specific numeric values.
      3. Use `Copy` in the `Edit : Graph` dialog box to make a copy of the graph without moving it.
      4. Now that the second graph is the picked graph, change the `Dataset`'s `Y` variable. Also, press the `Y Axis` button and set `Visible` to `Opposite` axis.
      5. For future editing, remember that you can use the `Pick List` procedure in the `Edit : Graph` dialog box to pick either or both of the graphs.
    - CoPlot 3D graphs - If you used DOS CoPlot's `Graph : Size and Shape : Interactive` to specify the orientation of the graph, the graph's orientation will be correctly imported. If you used `Graph : Size and Shape : Move Axis Endpoints`, it will not.
    - DOS CoPlot's `Data Rep: Markers/Variable` - allowed you to specify a column with marker type numbers (markers 1 - 16 or ASCII characters 32 - 127). The new CoPlot only supports 32 - 127. You can get markers by using `Marker Type` and selecting the `Marker` font so that characters 32 - 127 represent different marker types instead of different ASCII characters.
    - DOS CoPlot's `Data Indicates` - has no simple equivalent in Java CoPlot. To simulate that feature, make multiple copies of a dataset, each with a different `Marker Type` setting, and each with a different `Keep If` equation (so each dataset plots only a subset of the datafile) (for example, `col(1)==1, col(1)==2`, etc.)
    - Java CoPlot's Bar3D data representation requires X and Y index values, while DOS CoPlot's Bar3D graph did not. So Bar3D graphs are converted to Grouped Bars on XY graphs. The same information is shown, but in a different format. If you want `Bars 3D`, you need to create the required X and Y columns and values in the datafile, then use `Edit : Graph` to change the `Dataset : x : Representation` to `Bars/3D`.
    - Also see Switching From DOS CoStat, CoPlot, and CoDraw.
  Windows MetaFile (.wmf)
    wmf files are the standard graphics file type for Windows programs. CoPlot can read in most, but not all, wmf files.
    - CoPlot can read vector graphics objects (for example, lines, fills, text) in wmf files, but ignores image objects.
    - Microsoft does not publish the specifications for wmf files. This makes it difficult for us to fully support all wmf features.
    - There are some variants of .wmf files. CoPlot supports the original format and wmf files with placeable headers. CoPlot does not support the clipboard variant or the newer enhanced metafiles.

  Menu Tree / Index

  ## File : Insert

  `File : Insert` lets you insert the graphic objects from some other graphics file into the current drawing. Actually, this is an alias for `Edit : Any Type : Add File`.

  Menu Tree / Index

  ## File : Save

  This saves the current drawing (in CoPlot's native .draw file format) using the current name.

  Datafiles - `File : Save` and `File : Save As : CoPlot .draw` automatically save any datafiles which have been changed. Other `File : Save As` options do not automatically save datafiles.

  Menu Tree / Index

  ## File : Save As

  `Save As` lets you save the current drawing in many different file formats. This is useful when you need to import a drawing in some other program or publish a drawing on the World Wide Web.

  Recommendations - The suggested drivers for different purposes are:

  For reuse in CoPlot...
    CoPlot's native .draw format is by far the best format for saving CoPlot's drawing for future use in CoPlot.
  For importing in Microsoft Word, PowerPoint, etc...
    Use the "WMF Save text as text" driver. In Word and PowerPoint, for example, you can import the wmf file with `Insert : Picture : From File`.
  For importing in Corel WordPerfect...
    Use the WordPerfect .wpg driver.
  For importing in Lotus AmiPro or WordPro...
    Use a CGM driver. See the CGM driver descriptions below.
  For publishing on the World Wide Web in a way that looks good on screen but may be crude when printed...
    Use the "GIF" driver. The images will look good on the screen. When printed, the images will appear a little blocky and crude; it isn't our fault; this is the way image files work. On Mac OS X, use the "GIF CoHort Palette" driver.

    Unless your drawing includes a photo-like JPG or PNG Image object, don't use the JPG or PNG drivers. GIF is much more suitable for the kinds of drawings created by CoPlot than JPG or PNG is. JPG should only be used for photo-like images, since they are lossy (they have small imperfections). PNG is best for drawings with photo-like images, since the files are lossless; but PNG isn't supported by older browsers.

  For publishing on the World Wide Web in a way that looks good on screen and good when printed, but requires a plug-in...
    Use the PDF driver. Users will have to use the Adobe Acrobat plug in (free from Adobe at http://www.adobe.com). The drawing will look great on the screen and when printed.
  To make a standard image file...
    In general, whenever you need an image file, use the "GIF CoHort Palette" driver, not the JPG drivers. GIF is much more suitable for the kinds of drawings created by CoPlot than JPG is. JPG should only be used for photo-like images.
  To make a standard vector file...
    In general, whenever you need a vector file, you can use the PDF or EPS drivers (excellent) or the WMF or CGM drivers (okay). If those doesn't work, you need to compare the list of file types that the other program can import with the list of file types that CoPlot can generate (see below).

  Colors - Unless otherwise specified, these drivers produce color images. In most cases, when the resulting files are printed on black and white printers, the colors are converted to shades of gray using dither patterns (patterns of dots). Or, you can use `Drawing : Other : Draw Colors As` to specify how non-white and non-black colors will be drawn temporarily: as colors, as grays, and as black. This is useful if you want to temporarily force a color drawing to be a grayscale or black and white drawing.

  Quality - The resolution of these drivers is a constant (for example, the .cgm driver makes .cgm files at 600 pixels per inch of the drawing). If you want to increase the quality of the resulting graphics file (especially for vector graphics files), you can temporarily change the `Drawing : Coordinates : Scale` value. For example, making the scale value half as big makes the drawing twice as big, and doubles the apparent resolution of the resulting graphics file.

  Save Text As ... - Some of the drivers have two variations which differ in how they store text. We recommend using the `Save text as text` drivers most of the time. If you have problems with the text being poorly positioned (words may appear too far apart or too close together, particularly on low resolution devices such as screens), use the `Save text as graphics` drivers (which will have coarser looking characters on the screen, but will never have text positioning problems).

  Driver Descriptions - There are three categories of drivers: CoPlot's native format, image file formats, and vector file formats. The drivers are described below.

  Comparisons - The descriptions indicate the time it takes to generate a file and the size of the file, based on a small, moderately complex test file that we use. Although times and sizes will vary for your files, the information should be useful for comparisons.

  CoPlot's Native Format
    This is the best format for saving CoPlot's drawing for future use in CoPlot.
  CoPlot (.draw)
    saves the drawing in CoPlot's native .draw file format, an object-oriented format that saves the information stored in CoPlot's data structures so that you can recreate or edit the drawing with CoPlot in the future. For this option only: using `File : Save As` to specify a new name for the .draw file changes the name for the current drawing. Since this is the native format, the files are generated very quickly (sample=0.1 s) and are very small (sample=2.1 KB).

    When you save a drawing as a .draw file, CoPlot automatically saves any datafiles which have been changed. Datafiles are not automatically saved when you save the drawing in other formats.

    Warning: If you make a change to a datafile which you want to keep but you don't want to save the .draw file, you must use CoPlot's `Datafile : x : File : Save` or `File : Save As` to manually save the changes to the datafile.

  Zip (.zip)
    Since the names of datafiles may change when the drawing is saved, you must save the drawing with the `Save The Drawing` button. Then, this dialog box shows you a list of the data files, image files, and the .draw file which are used by this drawing. If you press the `Create Zip File` button, CoPlot will compress and save these files in a .zip file. The zip file is a handy way to transmit the drawing and its associated files to your coworkers.

    The zip file includes the directory names for the files, but not the drive letters. If you don't utilize the directory names when you unzip the file, CoPlot will still be able to find the data and image files because they will be in the same directory as the .draw file. The drive letters are not included because the .zip standard doesn't support them.

  Image File Formats
    An image file is the best choice if the most important use for the file is viewing it on a computer screen (not printing it on a printer). Along that line, GIFs are currently the best way to put CoPlot drawings on HTML web pages. GIF's compressed image files are very small. When viewed at their original size, the images look great -- exactly like they did in CoPlot. Image files have a couple of disadvantages compared to vector files.
    1. Speed - Large image files take longer to generate than vector files (because of the compression process).
    2. Memory - Large image files require a lot of memory. If you run out of memory, you can increase the amount of memory allocated to the program; see Memory (in the CoStat Manual (costat.htm)).
    3. Quality - Image files only look good at the size they were created. If you try to expand an image (for example, to print it on a printer) it may look blocky and crude. If you try to contract an image, parts of the image may disappear or look crude.
  Animated GIF (.gif)
    This is the only driver in CoPlot that can save a series of images into a movie-like file. To make an animated .gif file, use the options on the `File : Save As : Animated GIF` sub-menu:
    1. `Open File` - Use this to specify the name of the file to be created. This does not add a frame to the movie.
    2. `Add Frame` - This adds a frame (an image of the drawing in its current state) to the animated GIF. Usually, you will repeatedly: make a small change to the drawing, then use `Add Frame` again. Hint: store this command in a CoPlot macro (named "GIFAddFrame"?) and assign the macro to a button on the macro button bar.
    3. `Close File` - This does not add a frame to the movie. Use this to specify a `Comment` (an optional description), `Frames Per Second` (how fast the movie is played), and whether the animation should `Loop Continuously`. When you press `OK`, this information is written to the file and the file is closed.
    Animated GIF files are limited to a total of 256 colors, so this driver always uses the nearest CoHort palette color to avoid problems if your drawings use more than 256 colors. This driver has a "resolution" of 100 pixels per inch, the same as the CoPlot screen driver when you aren't zoomed in (`Drawing : Zoom 1`).

    If you work extensively with animated .gif files, you may want to get another program to manipulate the files you create in CoPlot. For Windows, we use and recommend "GIF Construction Set Professional", a $20 shareware program from Alchemy Mindworks Inc. (http://www.mindworkshop.com). For Mac OS X, a user has recommended "GraphicConverter", a $35 program from Lemke Software GmbH (http://www.lemkesoft.com).

  GIF (.gif)
  GIF CoHort Palette (.gif)
  GIF Web Palette (.gif)
    These save an image of the entire drawing in a gif89a image file. Gif files are limited to 256 colors (usually not a problem if you just use colors from CoPlot's palette) and must be at least 8x8 pixels. Normally, you should use the "GIF" driver. If your drawing has an Image object (and so has >255 colors) and you want to reduce the number of colors (instead of saving as a JPG or PNG file), use "GIF Web Palette" (which reduces colors to a standard 216 color web palette) or "GIF CoHort Palette" (which reduces colors to the CoHort Palette). Similarly, because `Drawing : Other : Smoothing : On` generates lots of extraneous colors, use "GIF CoHort Palette". If you use `Drawing : Background Color : notDrawn`, the file will have a transparent background. Gif files are universally supported by web browsers. This driver has a "resolution" of 100 pixels per inch, the same as the CoPlot screen driver when you aren't zoomed in (`Drawing : Zoom 1`). Gif files take a long time to generate (sample=6.3 s), but are highly compressed (sample=6 KB, the smallest of any driver other than CoPlot's native .draw format and .png files).
  JPG High Quality (.jpg) and
  JPG Small File (.jpg)
    save an image of the entire drawing in a jpg image file. JPG files support any number of colors. JPG files are universally supported by web browsers. This driver has a "resolution" of 100 pixels per inch, the same as the CoPlot screen driver when you aren't zoomed in (`Drawing : Zoom 1`). Both JPG drivers take a long time to generate the file (sample=16.7 s). The `JPG High Quality` driver produces better quality but larger files (sample=50 KB). The `JPG Small File` driver produces lower quality but smaller files (sample=27 KB).

    Unlike .gif, .pcx, .png, and .ppm files, .jpg is a "lossy" format (information is lost). JPG files doesn't store the exact original image; they store an altered version. For photo-like images, the changes are barely noticeable. For drawings from CoPlot, the changes are annoying.

    In general, you should use the "GIF" driver instead of either of the JPG drivers. GIF is much more suitable for the kinds of drawings created by CoPlot than JPG is. JPG is better for photo-like images.

  PCX B&W (.pcx) and
  PCX Color (.pcx)
    save an image of the entire drawing in a pcx image file. PCX files are an older file format once widely used (notably by scanners and fax machines) but still with significant support. They have a simple compression scheme which works well with the kinds of drawings created by CoPlot. This driver has a "resolution" of 100 pixels per inch, the same as the CoPlot screen driver when you aren't zoomed in (`Drawing : Zoom 1`). Both PCX drivers are reasonably fast and produce small files.

    The `PCX B&W` driver produces monochrome images (suitable for fax machines) (4.0 s, 7 KB). This driver uses dither patterns (like halftone dots) to simulate shades of gray.

    The `PCX Color` driver produces color images (4.6 s, 18 KB). Color PCX files are limited to 256 colors so this driver always uses the nearest colors in the standard CoPlot palette.

  .png
    saves an image of the entire drawing in a png image file. png files are an increasingly common lossless image file type on the World Wide Web. This driver has a "resolution" of 100 pixels per inch, the same as the CoPlot screen driver (when you aren't zoomed in -- `Drawing : Zoom 1`). Because png files are lossless, they do a good job (better then .jpg files) at compressing drawings that don't have images in them. Unlike gif files (which are limited to 256 colors), png files allow any number of colors. If you use `Drawing : Background Color : notDrawn`, the file will have a transparent background. The files are generated slowly (sample=16 s) but are very small (sample=6 KB, the smallest of any driver other than CoPlot's native .draw format and .gif files).).
  .ppm
    saves an image of the entire drawing in a ppm image file. ppm files are a commonly used intermediate image file type on UNIX computers. There are free utilities to convert ppm files into many other types of image files; visit www.acme.com. This driver has a "resolution" of 100 pixels per inch, the same as the CoPlot screen driver (when you aren't zoomed in -- `Drawing : Zoom 1`). ppm files are not compressed, so they are generated pretty quickly (sample=3.7 s) but are very large (sample=542 KB)!

  Vector File Formats
    Vector files store instructions for drawing a drawing. They are usually the best choice when you are most concerned about the quality of the drawing when printed, although they look okay on a screen. Vector files can be scaled to any size (tiny or huge) and still look good. In most cases, the files are larger but are created more quickly than image files. Vector files have a few potential problems:
    1. The crude text on the screen problem: Except for the PostScript and PDF drivers, any text in vector files will appear crude when the vector file is displayed on a computer screen by another program. The good news is that when you print the files, the text will look very good.
    2. The colored line printing problem: Only the PDF and WMF drivers have this problem.) If you print a colored (non-black) line on a black and white printer, some programs will draw the lines as solid black instead of with a gray-like dither pattern. This is usually a minor problem, but it can be serious with colored text (which has lines drawn around the edges) and other objects. If this is a problem for your drawing, change the color of all Text objects to be black.
    3. The hollow object problem: If you make a solid filled path object with a subpath (to put a hole in the object) or an Ellipse object with `Inner Size > 0` (to make a doughnut shape), the resulting vector files can be huge. The problem is that (currently) some of the drivers need to draw these shaped by filling in the filled area with lots and lots of lines.
    4. The Image object problem: Image Objects make the files huge. Currently, if your drawing includes a photo-like image file, the resulting vector file will be huge.
  Acrobat .pdf
    This driver creates version 1.0 .pdf files for Adobe's Acrobat program. These files can be viewed and printed with the Acrobat plug-in (available for free for most browsers from Adobe at http://www.adobe.com). The drawings look good on the screen and when printed. This driver uses the values from the `Drawing : Coordinates` : `Page Width/Height` and `Left/Bottom Margin` settings to position the drawing on the page. This driver has a resolution of 1200 dpi. Along with the PostScript driver, this is the fastest driver (sample=0.4 s) and generates very small files (sample=14 KB). Because this driver uses PostScript fonts when possible, text drawn with this driver has the best possible quality. PDF files suffer from the colored line printing problem. If you use `Drawing : Other : Author`, the author's name will be put in the .pdf file.
  CGM Save text as graphics (.cgm)
  CGM Save text as text (.cgm)
    These drivers create version 1 .cgm files in the ANSI standard Computer Graphics Metafile format, which was until recently the only officially standard vector graphics file format. For the difference between the two drivers, see Save Text As .... CGM files can be imported into many other programs, notably all Microsoft programs (for example, Word and PowerPoint). When rendering CGM files, Microsoft programs round the ends of lines; this is not under our control. This driver has a resolution of 600 dpi. The files are produced very quickly (sample=0.5 s) and are moderately sized (sample=50 KB). If you use `Drawing : Other : Author`, the author's name will be put in the .cgm file.

    If you have trouble importing cgm files in MS Word or PowerPoint, you may need to reinstall your Microsoft programs to load the CGM graphics filter. This isn't as bad as it sounds. The installer knows about your current installation, and just needs to know what other features you want installed. In this case: install `All` (not just some) of the graphics filters.

  HPGL/2 B&W
    This driver creates HPGL/2 black and white files which can be printed on HPGL/2 printers, notably HP DeskJet and LaserJet printers and HP raster plotters (not pen plotters). Colors in your drawing are converted to shades of gray. This driver uses the values from the `Drawing : Coordinates` : `Page Width/Height` and `Left/Bottom Margin` settings to position the drawing on the page. This driver has a resolution of 1016 dpi. The files are produced very quickly (sample=0.8 s) and are very small (sample=40 KB).
  HPGL/2 Color
    This driver creates HPGL/2 color files which can be printed on HPGL/2 color printers, notably color HP DeskJet and color LaserJet printers and HP color raster plotters (not pen plotters). This driver uses the values from the `Drawing : Coordinates` : `Page Width/Height` and `Left/Bottom Margin` settings to position the drawing on the page. This driver has a resolution of 1016 dpi. The files are produced very quickly (sample=0.8 s) and are moderately sized (sample=42 KB).
  PostScript (.eps) CMYK
  PostScript (.eps) RGB
    These drivers create Encapsulated PostScript version 2.0 files. They are suitable for printing on PostScript printers (just copy them to the printer with a DOS command like `copy myfile.eps lpt1:` ). These drivers use the values from the `Drawing : Coordinates` : `Page Width/Height` and `Left/Bottom Margin` settings to position the drawing on the page. These drivers have a resolution of 1200 dpi. Along with the Acrobat PDF driver, these are the fastest drivers (sample=0.3 s) and generate very small files (sample=11 KB). Because these drivers use PostScript fonts when possible, text drawn with these drivers has the best possible quality. If you use `Drawing : Other : Author`, the author's name will be put in the .eps file.

    The RGB driver saves colors in the RGB format. These files can be printed on any PostScript printer (even PostScript Level 1). The CMYK driver saves colors in the CMYK format. These files can only be printed on printers with PostScript Level 2 or higher. Publishers sometimes ask for files in this format.

    Many programs (like Microsoft Word) will let you insert an .eps file, but won't show you the drawing on screen and will only print it on a PostScript printer. There is a free (for non-commercial use) pair of programs called GhostScript (the non-graphical engine) and GhostView (the graphical frontend) (available at http://www.cs.wisc.edu/~ghost/) that allow you to view, convert, and print .eps files.

    TeX lets you insert an .eps file in a document. If the drawing isn't square, you have to specify an X Size and Y Size in TeX to match the aspect ratio of the drawing in CoPlot (as specified by `Drawing : Coordinates : Drawing Bounds`).

    By default, the screen size (the coarseness of the dots used to simulate shades of gray) used by eps files is quite fine. You may want to make it more coarse so that your printouts look better when photocopied. You can make the change by editing the .eps file with a text editor: After the line that starts with: "`%%PageBoundingBox:`", add a new line: "`75 45 {dup mul exch dup mul add 1 exch sub} setscreen`", where 75 is the dots per inch (dpi) of the screen (75 is medium coarse) and 45 is the angle (in degrees) of rotation for the screen. You may wish to use a different dpi value.

  SVG Save text as graphics (.svg)
  SVG Save text as text (.svg)
    These drivers create version 1.0 SVG files. For the difference between the two drivers, see Save Text As .... SVG is the new standard from W3C (http://www.w3.org/TR/SVG/) for Scalable Vector Graphics. Someday, you will be able to refer to .svg files in HTML documents just as you currently can refer to .gif and .jpg files. Someday, HTML browsers will display these files without plugins. But right now, you need to get a plugin for your browser. The most common one is available from Adobe (http://www.adobe.com/svg/viewer/install/). Also available is a standalone viewer called Jackaroo (http://www-sop.inria.fr/koala/jackaroo/). Others are available on the web (search for "SVG viewer" with your favorite web search engine).

    The SVG drivers have a resolution of 1000 dpi. The files are produced fairly quickly (sample=0.9 s) and are fairly large (sample=62 KB). The results look good on the screen and when printed. With the current driver, if your CoPlot drawing has an Image object, the .svg file will be huge.

  WMF Save text as graphics (.wmf)
  WMF Save text as text (.wmf)
    These drivers create version 3.0 Windows MetaFiles. For the difference between the two drivers, see Save Text As .... They are an acceptable way of transferring images to many Windows programs (notably all Microsoft programs, for example, Word and PowerPoint), but suffer from the colored line printing problem. When rendering WMF files, Microsoft programs round the ends of lines; this is not under our control. These drivers have a resolution of 1000 dpi. The files are produced very quickly (sample=0.5 s) and are moderately sized (sample=29 KB).
  WordPerfect .wpg
    This driver creates files in the DrawPerfect 5.1 format and is good for moving drawings into WordPerfect. This driver has a resolution of 600 dpi. The files are produced very quickly (sample=0.4 s) and are moderately sized (sample=27 KB).

  Menu Tree / Index

  ## File : Page Setup

  This dialog box lets you set the drawing size (within which you draw things) and coordinate system, the page size (for when the drawing is printed), and the page margins (which position the drawing on the printed page). Actually, it is the same dialog box as `Drawing : Coordinates`.

  Currently, CoPlot ignores the page size setting on the `File : Print` dialog box. You must select the desired page size and orientation here (or with `Drawing : Coordinates`).

  Menu Tree / Index

  ## File : Print

  The `File : Print` dialog box lets you set up a print job. It lets you select:

  - Which printer to use.
  - The properties of the printer (for example, its resolution).
  - The number of copies to be printed.

  Default Settings - Currently, the printer's default settings are not affected by the changes you make on this dialog box, so your changes won't be remembered from one print job to the next. If you want to change the defaults in MS Windows, use `Start : Settings : Control Panel : Printers : your printer : Print : Properties` and make your changes there.

  Page Size and Orientation should be set up with `File : Page Setup` or `Drawing : Coordinates` (they are actually the same dialog box), not with `File : Print`. The settings for `Page Size` and `Orientation` on the `File : Print` dialog box are ignored (sorry, it is a quirk of Java). To print in landscape orientation, specify a `Page Size` where the `Width` is greater than the `Height`.

  Printing Within a Macro - If you use `File : Print` while recording a macro, the macro will not record any changes you make on the file print dialog box. When you play that macro, the file print dialog box will not be shown and the default printer settings will be used for the print job.

  Notes About Specific Printers

  HP LaserJets without PostScript
    You may need to check `Properties : Graphics : Graphics Mode : Use Raster Graphics`, not `Use Vector Graphics`. Some HP LaserJets don't have enough memory to handle printing complex drawings via vector graphics. Printing is also faster with `Raster Graphics`.

    The `Properties : Graphics : Dithering` settings have little effect. All of the settings are too fine (even the `Coarse` setting). This is the driver's responsibility. There is nothing we can do about it. Consider finding a PostScript printer, which offers much better control over what it calls `'Halftoning'`.

  Remote Printing - CoPlot's `File : Save As` offers an alternative route to printing, notably for remote printing, since it can save the drawing in different types of graphics files which can be printed later or on a different printer. This can be useful when you want to send the drawing to other people so they can view and print it. For example, you can print via:

  Adobe Acrobat Reader
    Use `File : Save As : Acrobat PDF` to save the drawing in a .pdf file. Then anyone can use Adobe Acrobat Reader (available for free from Adobe's web site, www.adobe.com) to view and print the file.
  HTML Browsers (for example, Internet Explorer and Netscape Communicator)
    Use `File : Save As : GIF (.gif)` to save the drawing in a .gif file. .gif files can be viewed (good quality) and printed (poor quality) with any HTML browser.
  Microsoft Word or PowerPoint
    Use `File : Save As : WMF` to save the drawing in a .wmf file. Then anyone can use `Insert : Picture : From File` in Word to view and print the file.
  PostScript printers
    You can print to PostScript printers by using `File : Save As : PostScript (.eps) RGB` to save the drawing in an .eps file. Then, in a DOS window in Windows, type `copy myfile.eps lpt1:` to copy the file to the printer (substitute your file name). If your printer is on the 2nd or 3rd parallel port, use `lpt2:` or `lpt3:`.
  HP LaserJets (and compatibles)
    You can print to most HP LaserJets (perhaps not some of the L models) by using `File : Save As : HPGL/2 B&W` to save the drawing in a HPGL (.hp2) file. Then, in a DOS window, type `copy myfile.hp2 lpt1:` to copy the file to the printer (substitute your file name). If your printer is on the 2nd or 3rd parallel port, use `lpt2:` or `lpt3:`.

  Menu Tree / Index

  ## File : 1-9

  Options 1-9 on the `File` menu first ask if you want to save the current file. Then they re-open a recently used .draw file.

  Only files opened or saved as .draw files are placed on the list. Other file types (for example, .eps files) are not.

  The list of recent files is automatically saved in the CoPlot.pref preference file (which is described in the CoStat Manual, costat.htm).

  Menu Tree / Index

  ## File : Exit

  This first asks if you want to save the current drawing file. Then it closes the CoPlot window. If multiple CoPlot windows are open (via `File : New Window`), the other CoPlot windows are not affected.

  Menu Tree / Index

  ## Datafile

  Datafiles are the source of data to be plotted on graphs. CoPlot has slots to hold up to 15 datafiles. Choosing one of the slots on the `Datafile` menu lets you load data into that slot and edit it. It is useful (but not required) to load the data before creating the graph. The data editor that is built into CoPlot is called CoStat. See the CoStat Manual (costat.htm). CoStat can also do statistical procedures (like regressions) on the data.

  If the datafile slot you choose is empty, you can use CoStat's `File : Open` to load data from an existing data file, or use `File : New` to set up a new data file (so you can type in the data).

  After you have loaded data into a `Datafile` slot, you can use `Create : Graph` to create a graph. After creating a graph, the `Edit : Graph` dialog box will pop up so that you can edit the graph until it looks like you want it to look. The `Dataset` options on that dialog box let you specify which columns of which datafile you want to plot on the graph.

  Saving Data - If you make changes to a datafile and want to save the changes, use CoStat's `File : Save` or `File : Save As` to save the changes to a disk drive.

  When you save a drawing as a .draw file, CoPlot automatically saves any datafiles which have been changed. Datafiles are not automatically saved when you save the drawing in other formats.

  Warning: If you make a change to a datafile which you want to keep but you don't want to save the .draw file, you must use CoPlot's `Datafile : x : File : Save` or `File : Save As` to manually save the changes to the datafile.

  Is the data stored in the .draw file? CoPlot's .draw files don't store the data from the data files. Instead, they just remember the name of the data file. Thus, data is always stored in a separate file. It was set up this way so that several graphs in one or more drawings can refer to one data file. Changes to that one data file (for example, fixing a mis-typed data value) will be reflected in all of the graphs which refer to that data file. This promotes data integrity (since there is only one copy of the data to maintain) and saves disk space (important for large data files). So if you want to email a .draw file which references a datafile, you need to email the .draw file and the datafile file.

  A list of files used by the current drawing can be found at `Drawing : List Of Files`.

  Removing a datafile from the list - To remove a datafile from the datafile list:

  1. Use CoPlot's `Datafile : x` to select the datafile.
  2. Use CoStat's `File : Close` to close the file.
  3. Close the CoStat window (`File : Exit` or the CoStat window's upper right '`X`' button).

  Menu Tree / Index

  ## Create

  CoPlot is a program for making drawings, notably drawings with graphs. To use it:
  - You create different types of objects (Big Text, Dimension, Ellipse, Graph, Image, Path, or Text).
  - You edit the attributes of the objects until they look like you want them to look. You can edit an object immediately after you create it or any time afterwards.

  The `Create` menu lets you pick which type of drawing object you want to create.

  See:

  - `Create : Big Text` - a (usually big) block of text.
  - `Create : Dimension` - a piece of text with arrows extending from the left and right of the text to the two points that you specify.
  - `Create : Ellipse` - an ellipse, circle, arc, pie slice, etc.
  - `Create : Graph` - a graph.
  - `Create : Graph Array` - an array of graphs.
  - `Create : Image` - an image from an image file.
  - `Create : Path` - a line, arrow, filled area, etc.
  - `Create : Text` - a (usually short) line of text.
  - `Create : Rectangle` - a (usually) rectangular shape.
  - `Create : Bar Graph` - This is a wizard for creating a bar graph.
  - `Create : Pie Chart` - This is a wizard for creating a pie chart or plasmid map.
  - `Create : Table` - This is a wizard for creating a table to display the data in a datafile.

  Or, you can use the icons along the upper part of the left edge of the CoPlot window, which are shortcuts to the `Create : Xxx` menu options.

  Menu Tree / Index

  ## Create : Big Text

  Big Text objects are actually blocks of text drawn within shapes (for example, rectangles, triangles, circles), although you can draw the text alone (the default), or the shape alone. The size of the shape is (usually) automatically adjusted to accommodate the text.

  `Create : Big Text` opens a simple dialog box. Basically, you just click on the position where you want the Big Text object to be created.

  The `Group For New Objects` textfield lets you specify the group number for new Big Text objects.

  When you create a new Big Text object, it will have the attributes of the last Big Text object that you created (or the default attributes if this is the first one).

  Right after you create a Big Text object, the `Edit : Big Text` dialog box appears so you can edit the object's attributes.

  Try `Text` instead? Big Text objects are usually multi-line blocks of text. When you edit a Big Text object, all editing is done in a text editor. If you want to work with a small piece of text (usually one or two lines), consider using `Create : Text` instead.

  Displaying Preformatted Text (like Statistical Results) - Put the text between the `<PRE>` and `</PRE>` tags. The line breaks and multiple spaces of the original text will be left intact (unlike the normal situation where they are ignored).

  Displaying a Datafile - Although you can use a Big Text object and the `<PRE>` tag to display data in a simple table, consider using `Create : Table` which generates a much nicer looking table of data. Currently, there is no <table> tag in CoPlot.

  Menu Tree / Index

  ## Create : Dimension

  `Create : Dimension` opens a simple dialog box. Follow the directions in the dialog box to create a dimension object. A dimension object is a piece of text with arrows extending from the left and right of the text to the two points that you specify.

  The angle of the text is determined by the two points that you specify. If you turn your head so that the first point is on your left and the second point is on your right, the text will be "upright".

  The '`<>`' button lets you insert embedded text tags (which control bold, italics, underlining, font changes, size changes, etc).

  Dimension objects support a special tag, `dimension`, which displays the distance between the two points, in `Drawing Coordinates`. The most common form of this tag is `<dimension g>` which displays the distance with a 'general' format number.

  The '`&`' button lets you pick and insert character entities (HTML-like names for non-ASCII characters) into the text.

  The `Group For New Objects` textfield lets you specify the group number for new dimension objects.

  When you create a new Dimension object, it will have the attributes of the last Dimension object that you created (or the default attributes if this is the first one).

  `Edit` - If you press `Edit` after creating a dimension object, you can edit the dimension object's attributes until it looks like you want it to look. The attributes include the line color, arrow type, and arrow size, and the initial font, text height, text color, etc.

  Menu Tree / Index

  ## Create : Ellipse

  `Create : Ellipse` opens a simple dialog box. Follow the directions in the dialog box to create an ellipse.

  The `Group For New Objects` textfield lets you specify the group number for new ellipse objects.

  When you create a new Ellipse object, it will have the attributes of the last Ellipse object that you created (or the default attributes if this is the first one).

  `Edit` - If you press `Edit` after creating an ellipse object, you can edit the ellipse's attributes until it looks like you want it to look. Ellipses have a large number of attributes which allow them to be drawn many ways, for example: as circles, arcs, ellipses, pies, pie slices, doughnut (torus) shapes, etc. Ellipses can have text to identify the ellipse. The text can include a special embedded text tag (`<arcdimension d g>`) which displays the arc angle.

  Menu Tree / Index

  ## Create : Graph

  `Create : Graph` opens a simple dialog box. Follow the directions in the dialog box to create a standard XY graph.

  The `Group For New Objects` textfield lets you specify the group number for new graph objects.

  When you create a new Graph object, it will have the default attributes.

  Right after you create a graph, the `Edit : Graph` dialog box will pop up so that you can edit the graph until it looks like you want it to look. There are a large number of editable options which allow you to change the type of graph, specify data and functions to be plotted, and change the appearance of each part of the graph (by specifying line types, line widths, colors, etc.).

  Menu Tree / Index

  ## Create : Graph Array

  `Create : Graph Array` opens a dialog box that lets you create and manage the Graph Array (a 2D array of Graph objects). This is useful when you want to make what appears to be a graph with 2 Y axes, a graph with multiple Y axes, an n Channel graph, a Correlation Matrix, or a 2D array of separate graphs. After creating the graph array, you can edit the graphs individually or simultaneously, as you would edit any other graphs (see `Edit : Graph`).

  The Graph Array isn't a separate object, but rather a convenient way of working with a 2D array of graph objects. There is only one Graph Array per drawing.

  Once the Graph Array has been created, you can use `Create : Graph Array` again to modify it. Or you can use `Edit : Graph Array` if you only want to change the size, shape, or position of the graphs.

  The Red Graph Outlines - as you make changes to the attributes on this dialog box, CoPlot draws (in red) the outlines of the graphs that will result if you press `Apply`.

  The options on the `Create : Graph Array` dialog box are:

  `Type`
    specifies the basic style of the graph array. `Type: Layout Only` manages the size and shape of the graphs, but makes no other changes to the graphs. All of the other `Types` make more changes to the graphs, including:
    - Setting up 1 Dataset per graph, using the X and Y columns of data that you specify.
    - Making sure that various X and Y axis parts are visible (black) or not notDrawn, as appropriate.
    - Turning off the legends for all graphs. The axis titles for the individual graphs are sufficient to identify the X and Y variables.
    The `Type` options are:
    - `Layout Only` - manages the size and shape of the graphs, but makes no other changes to the graphs.
    - `2 Y Axes` - manages two superimposed graphs which have a common X variable and X Axis, but different Y variables and Y axes. The first graph's Y axis is visible on the left. The second graph's Y axis is visible on the right.

    - `Multiple Y Axes` - manages several superimposed graphs which have a common X variable and X Axis, but different Y variables and Y axes. The Y axes extend progressively further to the left of the graph.

    - `N Channel` - manages several graphs stacked on top of each other, with a common X variable and X Axis, but different Y variables and Y axes. If you want an nChannel graph where the graphs are not touching each other, use `Type: Separate Graphs` and set `n Columns` to `1`.

    - `Correlation Matrix` - manages a 2D array of graphs where the graphs are touching each other and where the X variable is the same for the graphs in a given column and the Y variable is the same for the graphs in a given row.

    - `Separate Graphs` - manages a 2D array of graphs where the graphs are not touching each other and where the X variable is the same for the graphs in a given column and the Y variable is the same for the graphs in a given row.
  `Center X, Y`
    specifies the center for the entire graph array. You can use the left mouse button to drag the block that appears on the screen at the center of the graph array. Or, you can enter the X, Y values (in `Drawing Coordinates`).
  `X, Y Axis Size`
    specifies the length of the graph's X and Y axes (in `Drawing Coordinates`). All graphs in the array will be the same size. This works by setting each graph's `Graph : Overview : X Axis : Size` and `Y Axis : Size`.
  `Between Columns, Rows`
    specifies the distance (in `Drawing Coordinates`) between the centers of the columns and the centers of the rows.
    - For `Type: Multiple Y Axes` or `2 Y Axes`, both of these values are forced to be 0, so the graphs are all superimposed.
    - For `Type: N Channel, Between Rows` is forced to be the same as the `Y Axis Size` so the graphs are touching.
    - For `Type: Correlation Matrix, Between Columns` and `Between Rows` are forced to be the same as the `X` and `Y Axis Size` so the graphs are touching.
  `Y Axis Offset`
    For `Type: Multiple Y Axes`, this specifies the distance (in `Drawing Coordinates`) that Y axes are offset from one another.
  `Datafile`
    specifies which `Datafile` will provide data for the graphs.
  `n Columns, n Rows`
    specifies how many columns and how many rows of graphs the graph array will have. Column 1 (which uses the X1 data) is at the left. Row 1 (which uses the Y1 data) is at the top.
  `Xn, Yn`
    specifies which columns in the datafile will provide the x data for graphs in columns 1, 2, 3, ... and the y data for graphs in rows 1, 2, 3, ...

    Although the dialog box only shows up to 10 x and y variables, `nColumns` and/or `nRows` can be bigger than 10. In this case, `X11` is assumed to be the column in the data file to the right of the `X10` column; `X12` is the column after that; ... Similarly, `Y11` is assumed to be the column in the data file to the right of the `Y10` column; `Y12` is the column after that; ...

  `Group For New Objects`
    lets you specify the group number for new graph objects.
  `Apply`
    creates the graph array as described by the settings above.
  `Edit the Graphs`
    takes you to the `Edit : Graph` dialog box, with all of the graphs in the graph array picked (so you can edit them simultaneously).
  `Undo All`
    resets all of the settings and changes all of the graph array's graphs to be as they were when you opened this dialog box.
  `Close`
    closes this dialog box. The current settings are remembered by the program (until another drawing is opened) and in this drawing's .draw file for the next time this dialog box is opened for this drawing.

  Menu Tree / Index

  ## Create : Image

  `Create : Image` opens a simple dialog box so you can create an image object. Image objects display images from standard image files (.gif, .jpg, etc.). CoPlot's .draw files store the file names, not the image data. Follow the directions in the dialog box to load an image from a file and specify the location where it will be drawn. The location is specified as the center of the image.

  Does the .draw file store the image? No. CoPlot's drawing files just remember the name of the image file, they don't store the image data. So if you want to email a .draw file which references an image, you need to email the .draw file and the image file. A list of files used by the current drawing can be found at `Drawing : List Of Files`.

  Browse - The browse button lets you browse through lists of specific types of image files: `Icons, *.gif, *.jpg, *.jpeg, *.pcx, *.png,` and `*.ppm` files.

  The `Icons` option brings up a visual system for picking icons. Icons are small images (32x32 pixels) which come with CoPlot. If you pick one of the icons, it puts the icon's name (for example, `Icons:Science:21`) in the `File Name` field in the `Create : Image` dialog box, so that the icon will be displayed (not an image from a separate image file) when you create the image object. Icons look best at `Size: 0.32, 0.64` and `0.96` inches. They look okay at `Size: 0.3, 0.35, 0.65,` and `1` inch. They don't look very good at larger sizes or when printed. If you downloaded CoPlot from the CoHort web site, the standard installation of CoPlot includes only a small number of icons. You can download the full set of icons from the CoPlot download page at www.cohort.com/javadownload2.html#icons. If you installed CoPlot from a CD, you have the full set of icons.

  The `Group For New Objects` textfield lets you specify the group number for new image objects.

  When you create a new Image object, it will have the attributes of the last Image object that you created (or the default attributes if this is the first one).

  `Edit` - If you press `Edit` after creating an image object, you can edit the image's attributes: choose a different file, specify the attributes of the image (there are many), or specify a different location where it will be drawn, etc.

  Menu Tree / Index

  ## Create : Path

  `Create : Path` opens a simple dialog box. Follow the directions in the dialog box to create a Path object. A Path is basically a series of points and a set of attributes describing how the path should be drawn. The attributes allow Paths to be drawn many ways (for example, as simple lines, curved lines, curved lines with arrows, a series of markers, or as filled areas).

  Buttons - For most Path objects, you will just use your mouse to click on the points that define the path, and double click on the last point to signify the end of the path. But this dialog also has 3 buttons to assist you in defining a path.

  - `Remove Last Point` - This removes the point you just added to the path. You can also right click in the drawing area to remove the last point.
  - `Close Path` - This adds a point to the path at the location of the first point in the path (actually, the first point in the current subpath).
  - `Make Subpath` - This is like a `MoveTo` command in PostScript or SVG. It leaves the path that you have been creating intact, but it also starts creating a new subpath that is part of the same Path object. `Close Path` is usually used right before `Make Subpath`.

    Among other purposes, subpaths allow you to create path objects with holes in them. For example, if a path has an outer subpath (for example, a rectangle) and an inner subpath (for example, a smaller rectangle inside the original rectangle) and the Path object is drawn with a `Background Color` or `Fill` pattern, the interior of the smaller rectangle will not be filled.

  The `Group For New Objects` textfield lets you specify the group number for new path objects.

  When you create a new Path object, it will have the attributes of the last Path object that you created (or the default attributes if this is the first one).

  `Edit` - If you press `Edit` after creating a path object, you can edit the path's attributes until the path looks like you want it to look. The attributes include:

  - How the line is drawn: straight lines between points, curved splines between points, or treating the points as Bezier control and end points.
  - Whether the resulting shape is filled with a solid background color, filled with a pattern, drawn with markers at the marked points, and/or drawn with a line on the perimeter.
  - The line types, line colors, fill types, fill colors, marker types, marker colors, marker sizes, etc., which will be used.

  Menu Tree / Index

  ## Create : Text

  Text objects are actually text drawn within shapes (for example, rectangles, triangles, circles), although you can draw the text alone (the default), or the shape alone. The size of the shape is (usually) automatically adjusted to accommodate the text.

  `Create : Text` opens a simple dialog box. Follow the directions in the dialog box to create a text object.

  The '`&`' button lets you pick and insert character entities (HTML-like names for non-ASCII characters) into the text.

  The '`<>`' button lets you insert embedded text tags (which control bold, italics, underlining, font changes, size changes, etc).

  The `Group For New Objects` textfield lets you specify the group number for new text objects.

  When you create a new Text object, it will have the attributes of the last Text object that you created (or the default attributes if this is the first one).

  `Edit` - If you press `Edit` after creating a text object, you can edit the text object's attributes until it looks like you want it to look. The attributes include the initial font, text height, color, etc.

  Try `Big Text` instead? Text objects are intended to be one line (or maybe a few short lines) of text. When you edit a text object, all editing is done in a small, one-line, text field. If you want to work with a larger block of text, consider using `Create : Big Text` instead.

  Menu Tree / Index

  ## Create : Rectangle

  This is a simple way to create a Text object with a (usually) rectangular shape. Unlike `Create : Text`, this dialog box does not insist that you enter text for the object, and the object's position is initially defined by two points (two opposite corners of the rectangle), not one. Afterwards, you can use `Edit : Text` to edit the Text object.

  Menu Tree / Index

  ## Create : Bar Graph

  Given a `Datafile` with a `Labels` column and one or more columns of numeric data, this dialog box simplifies the process of making a bar graph. Each row of the datafile provides the data for one group (or stack) of bars. The colors are assigned automatically. A legend is automatically created which lists the data columns which were used. After the graph is created, you can edit it like any other Graph object.

  Here is some data (from wheatmea.dt) representing the yields of 3 varieties of wheat (Dwarf, Semi-Dwarf, and Normal) grown at 4 locations (Butte, Shelby, Dillon, and Havre). If you have raw data that has not yet been summarized in this format, see CoStat's `Statistics : Miscellaneous : Mean±2SD (for Bar Graphs)`.

      Location    Dwarf   Semi-dwarf  Normal
      --------- --------- ---------- ---------
      Butte         58.39    43.4075   22.4725
      Shelby       25.245    25.5575    19.665
      Dillon      39.3725     33.155    27.165
      Havre         26.78     23.255   23.5225

  Here are the different types of bar graphs that can be created with this dialog box using the data shown above.

  `Undo` - The `Undo` button is very useful, since it allows you to delete the table you just created, change one of the attributes, and recreate the table. You can do this repeatedly until the table looks exactly like you want it to look.

  Menu Tree / Index

  ## Create : Pie Chart

  Given a `Datafile` with a `Labels` column and a `Data` column, this procedure creates a pie chart (or plasmid map) by creating a set of `Ellipse` objects. Each row of the datafile provides the data for one slice of the pie. After you create the pie chart, you can edit the ellipses with `Edit : Ellipse`. Here is some sample data and the resulting sample pie chart (see pie.draw in the cohort directory):

      Labels         Data
      --------- ---------
      Solutions         3
      Problems         97

  There are no `Pie Chart` objects in CoPlot. This dialog box is a "wizard" to simplify the creation of the ellipse objects which (taken as a group) look like a pie chart.

  Multi-Pie Chart - After you create a pie chart, if you `Edit` the ellipses and set the `Ellipse Inner Size` attribute to something bigger than 0, you can get shapes that are like slices of a doughnut. You can use this to make a series of pie charts, each with the same center point but different `Ellipse Size` and `Ellipse Inner Size` attributes. The resulting multi-pie chart is useful for showing relative changes over time:

  Plasmid Map - Plasmid maps are used to diagram relevant parts of a plasmid. Usually, they are drawn as a thickened circle with different segments colored differently and identified with some text. Although plasmid maps are used for very different purposes than pie charts, they are drawn in a very similar way. The only difference is that the ellipse objects for a pie chart use an `Ellipse Inner Size` of `0`, whereas the ellipse objects for a plasmid map use an `Ellipse Inner Size` of slightly less than the `Ellipse Inner Size`.

  Here is a plasmid map (see also genetic.draw in the cohort directory):

  Initial Attributes - When you create a new pie chart, some of the attributes will be from the last Ellipse object that you created (or the default attributes if this is the first one). But most of the attributes will be a fixed set of attributes which are appropriate for pie charts.

  `Undo` - The `Undo` button is very useful, since it allows you to delete the pie chart you just created, change one of the attributes, and recreate the pie chart. You can do this repeatedly until the pie chart looks exactly like you want it to look.

  `Edit` - Immediately after you create a pie chart, you can press the `Edit` button to edit the ellipse objects in that pie chart. Or, at any time, you can use `Edit : Ellipse` to edit the ellipses in a pie chart individually (use `Pick List`) or as a group (use `Pick Box`, `Pick List`, or `Pick All`). Attributes that you may want to change are:

  - `Ellipse Size` - to change the size of the pie chart.
  - `Ellipse Inner Size` - to change the inner size of the pie slices. For pie charts, set this to `0`. For plasmid maps, set this to slightly less than the `Ellipse Size`.
  - `Line Color` - If adjacent pie slices are not sufficiently differently colored, choose `Line Color: black`.
  - `Text` options - These are all useful. If you have a large number of pie slices, you may want to chose `Text Position: 2) Radial, out`.
  - `Move One` - If you want an "exploded" pie slice (one that is pulled away from the pie), use `Pick List` to pick just that pie slice. Then use `Move One` to reposition it.

  The options on the dialog box are:

  `Datafile`
    specifies the `Datafile` which contains the data which will be used to create the pie chart.
  `Labels`
    specifies the column in the datafile with the labels for the pie slices.
  `Data`
    specifies the column in the datafile with the data which determines the relative size of the pie slices.
  `Keep If`
    specifies a boolean equation which is applied to each row of the data file and which determines which rows will be used when creating the pie chart. The result of the equation should be `true` or `false`; numeric values will be interpreted as 0 is `false`, everything else is `true`. The equation can refer to the numbers in the various columns (for example, `col(2)>=20 & col(4)*2<col(5)`. See Using Equations in the CoStat Manual (costat.htm).
  `A`
    This leads to a list of characters (#32 to #255, as defined by the ISO 8859-1 Character Encoding). If you click on a character, it will be inserted into the textfield at the current insertion point.
  `f()`
    has a list of functions (and other things) that you can put in the equation. If you click on a function, it will be inserted into the equation at the current insertion point. See Using Equations in the CoStat Manual (costat.htm).
  `Initial Angle`
    This specifies the initial angle of the initial pie slice. Subsequent slices are drawn counterclockwise. If the labels for your pie slices are overwriting each other, you may be able to solve the problem by using a different `Initial Angle`. Otherwise, you may need to change the order of the rows of data in the datafile.
  `Legend Type`
    This specifies how the pie slices will be labelled.
  `Center X Y`
    When press `Enter` in one of these textfields or when you click on the position on the drawing where you want the pie chart to be drawn, the pie chart will be created.
  `Edit`
    This takes you to the `Edit : Ellipse` dialog box with the ellipses from the most recently created pie chart picked (so you can edit them simultaneously).
  `Undo`
    This lets you delete the pie charts you have just created, one-by-one. This is very useful, since it allows you to delete the pie chart you just created, change one of the attributes, and recreate the pie chart. You can do this repeatedly until the pie chart looks exactly like you want it to look.
  `Close`
    This closes this dialog box.
  `Group For New Objects`
    lets you specify the group number for new objects.

  Menu Tree / Index

  ## Create : Table

  This is a wizard for creating a table to display some or all of the data in a datafile. Basically, it creates:
  - A Path object to draw the rectangular background.
  - Lots of Path objects to draw lines.
  - Lots of Text objects to draw the individual data values.
  After you create a table, you can press the `Edit` button on the dialog box to use `Edit : Any Type` to simultaneously edit all of the objects that were created. Or, you can use `Edit : Path` or `Edit : Text` to edit one or more path or text objects.

  Data Format - The data in the table will be formatted the same as the data is currently formatted in CoStat. For example, if you have formatted a column of numeric values as dates, they will appear as dates in the table.

  Column Widths - The width of each column mimics the width of each column in CoStat (see CoStat's "`Edit : Format Column`"). The width of each column will be exactly appropriate for the data if you choose the "Cour", "Arch", or "Mono" fonts (since each character in those fonts has the same width). For all of the other fonts (which have variable character widths), the text in a given cell will usually be narrower, but may be too wide (for example, if the data is text is all capital letters). If, after creating the table, you want to adjust the width of the columns, use `Edit : Points Boxed Move`.

  `Undo` - The `Undo` button is very useful, since it allows you to delete the table you just created, change one of the attributes, and recreate the table. You can do this repeatedly until the table looks exactly like you want it to look.

  An Example - Here is a sample table created with the data from the pie.dt datafile.

  Moving Text or Lines - If, after creating the table, you want to move individual Text or Path objects, you may (or may not) find it difficult to reposition them and keep them aligned with the other Text and Path objects. The coordinates of the text and the ends of the lines will be at multiples of 1/2 of the `Text Height`. If you choose a `Text Height` that is a nice round number (for example, 0.1), then the objects will be easy to reposition. If the `Text Height` is not a nice round number (for example, 0.09), it may be harder to properly reposition the Text and Path objects -- use the `Grid-` toolbar button to allow more precise positioning.

  A Table Within a Big Text Object? Clearly, tables made with `Create : Table` are not within a Big Text object. Currently, Big Text objects don't support a `<table>` tag. Consider using the `<pre>` tag instead.

  The options in the dialog box are:

  `Datafile:`
    specifies which datafile will supply the data for the table.
  `First Column:`
    lets you choose the first column of data to be included in the table.
  `Last Column:`
    lets you choose the last column of data to be included in the table.
  `First Row:`
    specifies the number of the first row of data to be included in the table.
  `Last Row:`
    specifies the number of the last row of data to be included in the table.
  `Text Height:`
    specifies the height of the text in `Drawing Coordinate` units. Heights that are nice round numbers (for example, 0.1) make it easy to reposition individual parts of the table in the future.
  `Text Color:`
    specifies which color will be used for the text.
  `Text Font:`
    specifies which font slot will be used for the text (see `Drawing : Load Fonts`).
  `Background Color:`
    specifies the background color. If this is set to `notDrawn`, the background will be transparent.
  `Lines Color:`
    specifies the color for the lines. If this is set to `notDrawn`, the lines won't be drawn.
  `Box Line Width:`
    specifies the width of the line drawn around the outside of the table (in `Drawing Coordinate` units). If this is 0, the lines won't be drawn.
  `Names Line Width:`
    specifies the width of the line right below the column names (in `Drawing Coordinate` units). If this is 0, the line won't be drawn.
  `Horizontal Lines Width:`
    specifies the width of the lines between rows of data (in `Drawing Coordinate` units). If this is 0, the lines won't be drawn.
  `Vertical Lines Width:`
    specifies the width of the lines between columns of data (in `Drawing Coordinate` units). If this is 0, the lines won't be drawn.
  `Horizontal Padding:`
    specifies the padding to the left and right of the text within each cell, relative to the `Text Height`. The default is 1, which implies 0.5*TextHeight on the left and 0.5*TextHeight on the right.
  `Vertical Padding:`
    specifies the padding above and below the text within each cell, relative to the `Text Height`. The default is 1, which implies 0.5*TextHeight above and 0.5*TextHeight below.
  `All Defaults`
    Resets all of the attributes to the defaults.
  `Center X/Y:`
    When all of the attributes have been specified, click on the drawing where you want the center of the table to be. Or, type the `Center X` and `Center Y` values (in `Drawing Coordinate`) and then press `Enter` in one of those textfields.
  `Edit`
    Click on this if you want to edit all of the Path and Text objects that make up the table you just created. Since tables are made up of two types of objects, this takes you to the `Edit : Any Type`) dialog box.
  `Undo #`
    Click on this to delete the table you just created. This is very useful, since it allows you to delete the table you just created, change one of the attributes, and recreate the table. You can do this repeatedly until the table looks exactly like you want it to look.
  `Close`
    closes this dialog box.
  `Group For New Objects:`
    specifies the group number for the objects which will be created when you make the table. It may be very useful to change this to a different number. Then, in the future, when you want to edit the objects which comprise the table, you can use `Pick Groups` in one of the `Edit : Xxx` dialog boxes.

  Menu Tree / Index

  ## Edit

  The `Edit` menu leads to several different ways to edit the attributes of existing objects.

  Picking Objects - Before you can edit an object, you have to pick it (that is, identify the object that you want to edit). There are several ways to pick objects (see below). Once you have picked an object, you will see an `Edit : someType` dialog box where you can see and change that object's attributes. You can also use the `Pick` options at the bottom of those dialog boxes to pick additional objects of the same type to edit simultaneously.

  - `Edit : Pick One` - lets you pick an object by clicking on or near the points used to create the object. You can then edit that object's attributes. You can also pick additional objects of the same type to edit simultaneously.
  - `Edit : Any Type` - lets you pick one or more objects of different types and edit them simultaneously. Because different types of objects have different attributes, you can't edit their attributes, but you can move, copy, or delete the objects simultaneously.
  - `Edit : Big Text`
    `Edit : Dimension`
    `Edit : Ellipse`
    `Edit : Graph`
    `Edit : Graph Array`
    `Edit : Image`
    `Edit : Path`
    `Edit : Text`
    These options let you identify the type of object you want to edit. After the dialog box appears, you can choose one of the `Pick` options to pick which objects you want to edit. You can then edit the picked objects' attributes simultaneously.

  Or, Just Right Click On An Object - If no dialog box is active, you can pick an object by just right-clicking on or near the points used to create the object (just like `Edit : Pick One`). (Mac OS X: hold down the `Apple` key and press the mouse button.)

  Other Options on the `Edit` Menu:

  - `Edit : Objects` - lets you quickly move, copy, delete, hide, or show individual objects.
  - `Edit : Points Move` - lets you move the individual points used to define the location of an object.
  - `Edit : Points Boxed Move` - lets you draw a box and then move all of the points within the box.
  - `Edit : Change Color` - lets you change all references to one color into references to another color.
  - `Edit : Exchange Black And White` - lets you exchange all references to white into references to black, and vice versa.

  Menu Tree / Index

  ## Edit : Pick One

  `Edit : Pick One` lets you pick one object by clicking on or near the points used to create the object. You can then edit that object's attributes.

  The options on the `Edit` menu below `Pick One` are similar, but they lead to the `Pick One` dialogs for specific object types (for example, `Edit : Ellipse : Pick One`). See:

  - `Edit : Any Type`
  - `Edit : Big Text`
  - `Edit : Dimension`
  - `Edit : Ellipse`
  - `Edit : Graph`
  - `Edit : Graph Array`
  - `Edit : Image`
  - `Edit : Path`
  - `Edit : Text`

  Icon Buttons - The icon buttons with the light blue 'E's on the left side of the main window work as if you had selected one of the `Edit : Xxx` menu items and then pressed the `Pick One` button on that dialog box. Thus, they let you identify the type of object you want to edit and then pick items of the type by clicking on them.

  Graph Array - The Graph Array is actually a group of separate graph objects. So if you use `Edit : Pick One` and click on a graph in the Graph Array, you can edit that graph. If you want to edit all of the graphs in the Graph Array simultaneously, use `Edit : Graph Array` and click on the `Edit the Graphs` button.

  An Alternative - If no dialog box is active, you can edit an object by right-clicking on or near the points used to create the object (just like `Edit : Pick One`). (Mac OS X: hold down the `Apple` key and press the mouse button.) You can then edit that object's attributes. You can also pick additional objects of the same type to edit simultaneously.

  Menu Tree / Index

  ## Edit : Any Type

  `Edit : Any Type` lets you pick one or more objects of different types and edit them simultaneously. Because different types of objects have different attributes, you can't edit their attributes, but you can move, copy, or delete them simultaneously.

  The light blue 'E' button on the left edge of the screen is a shortcut to this dialog box. It works as if you had selected `Edit : Any Type` and then pressed the `Pick One` button once the dialog box was visible.

  The options on the dialog box are:

  `Group`
    specifies the group number for the picked objects.
  `Pick One`
    lets you pick additional objects one-by-one, by clicking on or near them. Then, you can edit all of the picked objects simultaneously.
  `Unpick One`
    lets you unpick additional objects one-by-one, by clicking on or near them.
  `Pick Box`
    lets you pick additional objects by specifying a box. Any objects with one or more points in the box will be picked. Then, you can edit all of the picked objects simultaneously. This works faster than `Pick One` (because the algorithm is simpler), although the difference will only be noticeable on very complex drawings.
  `Pick List`
    lets you pick or unpick objects from a list of objects. A list is displayed with up to 10 objects, indicating if each one has been picked. You can easily pick or unpick an object by clicking on its checkbox. If there are more than 10 objects, there will be a `Page` option at the bottom of the dialog box which lets you select additional pages (each displaying another 10 objects).

    Change the Text - For most types of objects, you can change the text for the object here. (Remember to press `Enter` after each change.) This isn't an option for path objects, since they don't have text associated with them. For Big Text objects, you can't change the text because the textfield just indicates the first few characters of the text. For graph objects the text is not the title of the graph; it is just text for identification purposes (since the `Graph : Title 1` is often just ".") and is only visible and useful on this dialog box.

  `Pick Color`
    lets you pick additional objects by specifying a color. Any objects which use that color for the any purpose (`Background Color, Line Color, Text Color`, whatever) will be picked. (Although the colors used by parts of a graph and the colors in an image are not pickable.) Then, you can edit all of the picked objects simultaneously.
  `Pick Groups`
    lets you pick additional objects by specifying one or more group numbers (for example, "`1-3, 5`" or "`all`"). Any objects in those groups will be picked. Then, you can edit all of the picked objects simultaneously.
  `Unpick All`
    lets you unpick all of the picked objects. Presumably, you will then use one of the `Pick` procedures to pick objects to edit. There is no need to `Unpick` objects before closing the dialog box; that is done automatically.
  `Pick All`
    In the `Edit : Any Type` dialog box, this lets you pick all of the objects. In the `Edit : Xxx` dialog boxes other than `Edit : Any Type`, this picks all of the objects of the current type (for example, all Path objects). In all situations, this only picks objects which are in visible groups.
  `Move`
    lets you scale, rotate, and/or move all of the picked objects. A dialog box will let you specify:
    `X Y Scale`
      the scale factors for the x and y directions. This will change the size of the picked object(s) before it is rotated and moved. This may be a positive or negative, floating point value. For example, a value of 1 leads to no change; a value of 2 leads to double size; a value of 0.5 leads to half size; and a value of -1 leads to a mirror image (which works better for some object types than others).
    `Rotate (degrees)`
      specifies the angle (in positive or negative, floating point, counter-clockwise degrees) for the rotation. A value of 0 leads to no change.
    `Origin X, Y and Destination X, Y`
      specify how the object will be moved.
    `OK`
      to actually perform the `Move`.

    Graphs - When you use `Move` and `X/Y Scale` to change the size of a graph, the parts of the graph (for example, the `Graph : Title 1 : Height` and `Dataset : 1 : Size (Marker)`) also change size. If you don't want the size of the parts of the graph to change, use `Graph : Overview : Size`, which just changes the size of the graph's rectangle (or cube for 3D graphs).

  `Copy`
    is like `Move`, except that you can make one or more copies of the original object(s). The original object(s) is left unchanged. The group of picked objects is redefined to be just the last copy of the object(s).
  `Delete`
    erases the picked objects (makes them invisible); asks you if you are sure you want to delete them; then deletes them (if you clicked on `Yes`).
  `Move One`
    lets you move individual picked objects by dragging blocks that are temporarily drawn at each picked object's first point. After dragging an object, you can move it more by typing a newer X,Y position or by using the `+` and `-` buttons.

    There is an `Undo` button to undo the changes, one by one. One unusual feature is that each time you drag an object, two undo events (not just one) are generated. This is useful, because if you then press `Undo` once, the object is returned to its original position so you can use the `+` and `-` buttons to move it.

    Hint for Aligning Objects - Use the '`Grid +`' toolbar button to get a fairly coarse grid (for example, 0.1 inches or 0.5 cm). Then use `Move One` (or any of the other '`Move`' options elsewhere in the program) to move the objects into alignment. With a coarse grid, you can get objects in perfect alignment even if you just do it visually (without looking at the coordinates).

  `Move All`
    lets you move all of the picked objects by dragging the block that is temporarily drawn at the first picked object's first point. Or you can directly specify a new X,Y position (so that all the objects will be moved relative to that change).
  `Move One Point`
    (for Path, Dimension, and Any Type objects) lets you move individual points in picked objects by dragging blocks that are temporarily drawn at each picked object's points. After dragging a point, you can move it more by typing a newer X,Y position or by using the `+` and `-` buttons.

    There is an `Undo` button to undo the changes, one by one. One unusual feature is that each time you drag a point, two undo events (not just one) are generated. This is useful, because if you then press `Undo` once, the point is returned to its original position so you can use the `+` and `-` buttons to move it.

  `Insert Point`
    (for Path objects only) brings up a dialog box that lets you insert points in picked path objects by clicking and dragging on the line segment (or near the endpoint) where you want to insert a point. If the `Path Type` is `Bezier`, you should generally insert 3 points (2 control points and 1 endpoint) into the path in quick succession. See Bezier Paths.
  `Delete Point`
    (for Path objects only) brings up a dialog box that lets you delete individual points in picked path objects by clicking on the points you want to delete. If you delete the last point in an object, the object will be deleted.
  `Break Path`
    (for Path objects only) brings up a dialog box that lets you break a path object into two path objects by clicking on one of the points in the path. That point then becomes one of the end points of each of the resulting two path objects. If the `Path Type` is `Bezier`, you should generally break the path at one of the interior Bezier segment endpoints, not a control point. See Bezier Paths.
  `Join Paths`
    (for Path objects only) To combine two Path objects into one, drag the mouse from an endpoint of one path to an endpoint of a different path. The combined path will have the attributes of the first path. It is generally best not to join a Bezier path and a non-Bezier path. See Bezier Paths.
  `Hide`
    hides the objects. Objects in a drawing are stored in a list. When the drawing is redrawn, the objects are drawn in the same order as the list. `Hide` moves the picked objects to the beginning of the list, so they will be drawn first and partially hidden by other objects (if they overlap).
  `Show`
    shows the objects. `Show` is like `Hide` except that it moves the picked objects to the end of the list, so they will be drawn last and (possibly) hide other objects (if they overlap).
  `Make Invisible` (and `Make Visible`)
    erases (or draws) the picked objects. This does not delete them from the drawing, it just makes them temporarily invisible (or visible). It is useful to press this button twice when you want to verify which objects have been picked.

    `Screen : Redraw` and the `Redraw` Icon Have Precedence - If the picked objects are currently invisible and you press `Screen : Redraw` or the `Redraw` toolbar button, all objects (including the picked objects) will be redrawn.

  `Save In File`
    This saves the currently picked objects in a .draw file. The file has all of the same settings as the main .draw file.
  `Add File`
    (`File : Insert` leads to this dialog box.) (This button is only on the `Edit : Any Type` dialog box.) This procedure adds the drawing objects from another graphics file to the current drawing.
    - File Types - You can add the same types of graphics files that you can open with `File : Open`. See `File : Open` for a complete description of these file types and issues related to opening them.
    - Objects - The graphics in the incoming graphics files are converted to standard drawing objects (Big Text, Dimension, Ellipse, Graph, Image, Path, or Text) in CoPlot. You can edit the objects in the standard ways.
    - `Drawing` Settings - All of the settings on the `Drawing` menu (for example, in `Drawing : Coordinates` and `Drawing : Other`) will not be changed by the incoming drawing. Similarly, the current drawing's `Create : Graph Array` settings will not be affected.
    - Groups - The new objects will be in the same group that they were in in the incoming drawing. That will usually be group 0, but objects in .draw files may make use of other groups. The current `Group for new objects` value is not used. Use `Edit : Any Type : Group` right after adding the file if you want to change the group that the new objects are assigned to. Beware: if the group that the new objects are part of is not visible, the objects will not be visible. See `Visible Groups`.
    - Picked - The new objects drawings will be picked. This is very useful. It allows you to use `Move, Copy` or other procedures on the `Edit : Any Type` dialog box to manipulate the new drawing objects simultaneously. For example, it is quite common to need to change the size of the new objects (use `Move`). It is also common to change their `Group` attribute so that they can be edited simultaneously at any time in the future.
    - Datafiles - If you import a .draw file that uses one or more Datafiles and if those Datafile slots are already filled in the current drawing, the new datafiles will be shifted to other datafile slots. If there are no available slots, an error message will be displayed. Datasets in the new Graph objects which reference these datafiles will be modified so that they reference the new slots where the datafiles are stored.
    - Fonts - If an incoming .draw file uses non-standard fonts loaded in place of the standard fonts (see `Drawing : Load Fonts`), the standard fonts will be used instead. If the incoming .draw file uses font slots that were empty in the original drawing, those fonts will be loaded and used correctly.
  `Visible Groups`
    Each object belongs to a group. Groups are numbered 0..65535. `Visible Groups` lets you choose which groups of objects are visible by specifying a list of visible groups (for example `0-3, 5` or `All`). See also `Drawing : Groups`.

    Groups with picked objects will be automatically added to the list that you specify. For example, if you have picked an object in group 1 and you specify that you want to make groups `4,6` visible, CoPlot will make groups `1,4,6` visible. This is useful because it ensures that currently picked objects will remain visible.

  Menu Tree / Index

  ## Edit : Big Text

  There are several ways to get to the dialog box that lets you edit the attributes of a Big Text object:
  - An `Edit : Big Text` dialog box appears automatically immediately after you create a Big Text object with `Create : Big Text`.
  - When no dialog boxes are visible, right click on or near the creation point for an existing Big Text object. (Mac OS X: hold down the `Apple` key and press the mouse button.)
  - Choose `Edit : Pick One` and click on the pickable point of any existing Big Text object.
  - Choose `Edit : Big Text`.
  - Click on the button on the left edge of the screen with the black 'T' and the light blue 'E'. It works as if you had selected `Edit : Big Text` and then pressed the `Pick One` button once the dialog box was visible.

  Big Text objects are actually blocks of text drawn within shapes (for example, rectangles, triangles, circles), although you can draw the text alone (the default), or the shape alone. The size of the shape is (usually) automatically adjusted to accommodate the text. The size of the shape's features (for example, the size of the arcs at the corners of a rounded rectangle) is determined by the `Text Height`, even if no text is displayed. A shape's minimum height and width are determined by the `Text Height` and the `Shape Border`, even if no text is displayed.

  Big Text objects have many attributes which you can change in order to make the Big Text look like you want it to look.

  What is the difference between `Text` and `Big Text`? Text objects are intended to be for one line (or maybe a few short lines) of text. When you edit a text object, all editing is done in a small, one-line, text field. Big Text is intended to be for large blocks of text. When you edit a Big Text object, a text editor screen appears. Otherwise, they are identical.

  The options on the dialog box are:

  `Text Color`
    specifies which color will be used initially for the text. If this is set to `notDrawn`, the text won't be drawn.
  `Text`
    opens up a text editor, CoText, which allows you to edit the text. In CoText, choose `File : Save` or `File : Exit : Save? Yes` when you want to save the changes that you have made to the text.

    Big Text can include embedded text tags (which control bold, italics, underlining, font changes, size changes, etc.). The `Edit : Insert Tag` option in CoText lets you insert embedded text tags.

    Big Text can also include character entities (HTML-like names for accented characters, Greek characters, and mathematical symbols). The `Edit : Insert Character Entity` option in CoText has a drop down list of character groups and an image showing the characters in that group. When you choose a character, the character's name is inserted in the text at the current insertion point.

  `Text Font`
    specifies which font slot will be used initially for the text (see `Drawing : Load Fonts`).
  `Text Height`
    specifies the initial height of a capital letter (in `Drawing Coordinates`).
  `Text Position`
    specifies the position for the text within the shape (if the shape is larger than necessary for the text). The horizontal component also specifies whether the text is initially left justified, centered, or right justified. The default is `Center center`.
  `Background Color`
    specifies the solid color to be used in the background of the shape. If this is set to `notDrawn`, the background won't be drawn.
  `Line Color`
    specifies the color for the line around the perimeter of the shape. If this is set to `notDrawn`, the line won't be drawn and none of the other `Line` attributes will be stored.
  `Line Type`
    specifies the dash-space pattern which is used repeatedly when the line is drawn. At the end of the line type list are line types that are not dash-space patterns (for example, `Parallel, Railroad, Disjoint`). `Disjoint` is unusual in that it draws a line between points 1 and 2, 3 and 4, 5 and 6, etc., but not between points 2 and 3, 4 and 5, 6 and 7, etc.
  `Line Dashsize`
    specifies the size (in `Drawing Coordinates`) of the dashes and spaces that make up the line types. For non dash-space line types, it specifies the size of the dominant feature (for example, the distance between the parallel lines).
  `Line Width`
    specifies the width of the line (in `Drawing Coordinates`).
  `Shape Type`
    specifies the type of shape which is drawn around the text. The default is `Rectangle`. The shape is only visible if `Background Color` or `Line Color` is not `notDrawn`.
  `Shape V Align`
    specifies the vertical alignment of the shape, relative to the object's location point. There are `Shape V Align` options related to the shape and options related to the text. The `Above` and `Below` options are useful when the `Shape Type` points up or down. The default is `Shape Center`.
  `Shape H Align`
    specifies the horizontal alignment of the shape, relative to the object's location point. There are `Shape H Align` options related to the shape and options related to the text. The `Farther Left` and `Farther Right` options are useful when the `Shape Type` points left or right. The default is `Center`.
  `Shape Width`
    specifies the width of the shape (in `Drawing Coordinates`). `Shape Width` will be the actual width if `Shape Type` is `Rectangle`, but many other shapes are somewhat larger. If the text needs more space than the `Width` setting specifies, the shape will be drawn as wide as necessary to accommodate the text. The default is "." (indicating auto-sizing, with no automatic word-wrap), but it may be any value greater than 0.
  `Shape Height`
    specifies the height of the shape (in `Drawing Coordinates`). `Shape Height` will be the actual height if `Shape Type` is `Rectangle`, but many other shapes are somewhat larger. If the text needs more space than the `Height` setting specifies, the shape will be drawn as tall as necessary to accommodate the text. The default is "." (indicating auto-sizing), but it may be any value greater than 0.
  `Shape Border`
    specifies the relative size of the border around the text, within the shape. The default is 1. [Added in 6.100.]
  `Shape Angle`
    specifies the angle for the shape (in floating-point, counter-clockwise degrees). This is usually 0, but may be any value.
  `Shape Shadow`
    specifies the shadow type for the shape. Shadows are always colored gray. The offset of the shadow is determined by the `Text Height`. There are options for single shadows and triple shadows (implying several objects). The default is `(none)`.
  `Group`
    specifies the group number for the picked Big Text objects.

  Buttons - There are several buttons at the bottom of the dialog box which let you pick additional Big Text objects, move, copy or delete the picked objects, and hide and show the picked objects. See `Edit : Any Type`.

  Menu Tree / Index

  ## Edit : Dimension

  There are several ways to get to the dialog box that lets you edit the attributes of a dimension object:
  - Click the `Edit` button on the `Create : Dimension` dialog box right after you create the dimension object.
  - When no dialog boxes are visible, right click on or near an existing dimension object. (Mac OS X: hold down the `Apple` key and press the mouse button.)
  - Choose `Edit : Pick One` and click between the two points of any existing dimension object.
  - Choose `Edit : Dimension`.
  - Click on the button on the left edge of the screen with the black double-ended arrow and the light blue 'E'. It works as if you had selected `Edit : Dimension` and then pressed the `Pick One` button once the dialog box was visible.
  A dimension object is a piece of text with arrows extending from the left and right of the text to the two points that you specify. Dimension objects have many attributes which you can change in order to make the objects look like you want them to look.

  Dimension objects support a special tag, `dimension`, which displays the distance between the two points, in `Drawing Coordinates`. The most common form of this tag is `<dimension g>` which displays the distance with a 'general' format number.

  The text will be drawn at an angle, as described by the path from the first point to the second point. If you want the text to be upside down from what you see, exchange the positions of the two points with `Move One Point`.

  If there is more than one line of text, the text will be drawn left justified by default. Add "`<center>`" or "`<right>`" to the beginning of the text if you want the text centered or right justified.

  The options on the dialog box are:

  `Text Color`
    specifies which color will be used initially for the text. If this is set to `notDrawn`, the text won't be drawn.
  `Text`
    specifies the characters to be written. If the text is too long to fit between the two points, it will be drawn beyond the second point and the arrows will point inwards.

    The '`&`' button lets you pick and insert character entities (HTML-like names for non-ASCII characters) into the text.

    The '`<>`' button lets you insert embedded text tags (which control bold, italics, underlining, font changes, size changes, etc). Dimension objects support a special tag, `dimension`, which displays the distance between the two points, in `Drawing Coordinates`. The most common form of this tag is `<dimension g>` which displays the distance with a 'general' format number.

  `Text Font`
    specifies which font slot will be used initially for the text (see `Drawing : Load Fonts`).
  `Text Height`
    specifies the initial height of a capital letter (in `Drawing Coordinates`).
  `Line Color`
    specifies the color for the line. If this is set to `notDrawn`, the line won't be drawn and none of the other `Line` attributes will be stored.
  `Line Type`
    specifies the dash-space pattern which is used repeatedly when the line is drawn. At the end of the line type list are line types that are not dash-space patterns (for example, `Parallel, Railroad, Disjoint`).
  `Line Dashsize`
    specifies the size (in `Drawing Coordinates`) of the dashes and spaces that make up the line types. For non dash-space line types, it specifies the size of the dominant feature (for example, the distance between the parallel lines).
  `Line Width`
    specifies the width of the line (in `Drawing Coordinates`).
  `Arrow Type Start, Finish`
    specifies the type of arrowhead (`notDrawn, Fancy, Filled` or `Line`) for the first and second point. The color of the arrow heads is the line color. So if `Line Color` is set to `notDrawn`, the arrowheads won't be drawn.
  `Arrow Headsize`
    specifies the length (in `Drawing Coordinates`) along one edge of the arrowhead.
  `Arrow Angle`
    specifies the angle (in degrees, 0 - 360) of the arrow head.
  `Group`
    specifies the group number for the picked dimension objects.

  Buttons - There are several buttons at the bottom of the dialog box which let you pick additional dimension objects, move, copy or delete the picked objects, and hide and show the picked objects. See `Edit : Any Type`.

  Menu Tree / Index

  ## Edit : Ellipse

  There are several ways to get to the dialog box that lets you edit the attributes of an ellipse:
  - Click the `Edit` button on the `Create : Ellipse` dialog box right after you create the ellipse.
  - When no dialog boxes are visible, right click on or near the center of an existing ellipse. (Mac OS X: hold down the `Apple` key and press the mouse button.)
  - Choose `Edit : Pick One` and click on any existing ellipse.
  - Choose `Edit : Ellipse`.
  - Click on the button on the left edge of the screen with the black ellipse and the light blue 'E'. It works as if you had selected `Edit : Ellipse` and then pressed the `Pick One` button once the dialog box was visible.

  By changing their attributes, ellipse objects can be made into various ellipse-like shapes (for example, circles, arcs, ellipses, pies, pie slices, doughnut (torus) shapes, and doughnuts with slices cut out). Ellipses can have text to identify the ellipse. The text can include a special embedded text tag (`<arcdimension d g>`) which displays the arc angle.

  If there is more than one line of text and it is on the right side of the ellipse, it will be left justified. If text is on the left side of the ellipse, it will be right justified.

  There are three types of attributes on the dialog box:

  1) `Ellipse` attributes
    determine how the perimeter of the ellipse object is drawn. These are the attributes that determine which ellipse-like shape will be drawn. For example, if `Ellipse Width` is `1`, a circle will be drawn. But if `Ellipse Width` is `2`, an ellipse will be drawn that is twice as wide as high.

    When experimenting with `Ellipse` attributes, we recommend initially changing just one attribute at a time to be different from the defaults (which generates a circle). Then you can easily see the effect of that one change.

  2) The various `Color` attributes
    determine if a given component of the ellipse (the `Background, Fill, Line,` or `Text`) is to be drawn. For example, if `Line Color` is `black`, a black line will be drawn around the perimeter of the ellipse. But if `Line Color` is set to `notDrawn`, no line will be drawn.
  3) The component's attributes
    specify the details of how that component is to be drawn (provided the color for that component is not `notDrawn`). For example, `Line Type, Line Dashsize` and `Line Width` determine how the line will be drawn, if `Line Color` is not `notDrawn`).

    Important: If a component color (for example, `Line Color`) is `notDrawn`, none of the component's other attributes (for example, `Line Width`) will be stored. Therefore, first set the component color to something other than `notDrawn`, then set the other attributes. For example, first set `Line Color` to `red4`, then set `Line Width` to `0.1`, not vice versa.

  The options on the dialog box are:

  `Ellipse Size`
    specifies the basic size (radius) (in `Drawing Coordinates`) of the ellipse.
  `Ellipse Inner Size`
    specifies the size (in `Drawing Coordinates`) of an inner ellipse, which parallels the main ellipse. It is only visible if the value of `Ellipse Inner Size` is greater than 0 and if `Background Color` or `Fill Color` is not `notDrawn`. If it is visible, it lets you make a "torus" (a doughnut shape).
  `Ellipse Width`
    specifies the width of the ellipse, relative to `Ellipse Size` (the height). A value of `1` generates a circle. Any other value generates an ellipse.
  `Ellipse nSides (2..360)`
    specifies the integer number of sides used to draw the ellipse (if `Ellipse Start=0` and `Ellipse Finish=360`). Thus, ellipses are really polygons with any number of sides: 3 sides makes a triangle, 4 a square, 5 a pentagon, etc. If the ellipse object has a large number of sides, for example 90 (the default) or 180, it will look like an ellipse.
  `Ellipse Start (degrees)`
    specifies the angle (in floating point, counter-clockwise degrees) that the ellipse starts at. This should be 0 to draw a full ellipse. Changing this (and/or `Ellipse Finish`) lets you draw several shapes: arcs, pie slices, and doughnuts with slices cut out. If the `Ellipse Finish` angle is less than the `Ellipse Start` angle, the ellipse will be drawn counter-clockwise. If `abs(finish-start)>=360`, a full circle/ellipse will be drawn.
  `Ellipse Finish (degrees)`
    is like `Start`, except that it specifies the finishing angle.
  `Ellipse Angle (degrees)`
    specifies the angle (in floating-point counter-clockwise degrees) of the main axis of the ellipse. This lets you rotate the object. A value of 0 means that it isn't rotated.

    When the ellipse's text is active, it is better to leave `Ellipse Angle` at `0` and use the `Ellipse Start` and `Ellipse Finish` angles to rotate the ellipse, because `Ellipse Angle` affects the way the text is drawn. Use `Ellipse Angle` to rotate the ellipse when you will be viewing the ellipse from a different angle. For example, `Ellipse Angle: 90` is appropriate when you want to draw a pie chart and view it rotated (text and ellipses) to 90 degrees. `Ellipse Angle` is also useful when `Ellipse nSides` is a small number an you want to rotate the resulting polygon.

  `Ellipse Skew (degrees)`
    specifies the angle of the secondary axis relative to its standard position (90 degrees counter-clockwise from the main axis). Only in unusual circumstances will you want to change this from its default value of 0.
  `Background Color`
    specifies the solid color to be used in the background of the object. If this is set to `notDrawn`, the background won't be drawn; otherwise it makes the ellipse look like a pie, pie slice, or torus.
  `Fill Color`
    specifies the color for the fill pattern (a hatch pattern or bit-mapped pattern). If this is set to `notDrawn`, the fill pattern won't be drawn and none of the other `Fill` attributes will be stored.
  `Fill Type`
    specifies a hatch pattern (a combination of horizontal, vertical, and diagonal lines) or a bit-mapped pattern. The bit-mapped patterns are only scaled to a limited number of sizes (integer multiples of the original pattern), so don't be surprised if a small change to `Fill Size` has no effect.
  `Fill Size`
    specifies the distance (in `Drawing Coordinates`) between lines in the hatch patterns or the unit size of bit-mapped patterns.
  `Fill Linewidth`
    specifies the linewidth (in `Drawing Coordinates`) used to draw the hatch patterns.
  `Line Color`
    specifies the color for the line around the perimeter of the ellipse. If this is set to `notDrawn`, the line won't be drawn and none of the other `Line` attributes will be stored.
  `Line Type`
    specifies the dash-space pattern which is used repeatedly when the line is drawn. At the end of the line type list are line types that are not dash-space patterns (for example, `Parallel, Railroad, Disjoint`). `Disjoint` is unusual in that it draws a line between points 1 and 2, 3 and 4, 5 and 6, etc., but not between points 2 and 3, 4 and 5, 6 and 7, etc.
  `Line Dashsize`
    specifies the size (in `Drawing Coordinates`) of the dashes and spaces that make up the line types. For non dash-space line types, it specifies the size of the dominant feature (for example, the distance between the parallel lines).
  `Line Width`
    specifies the width of the line (in `Drawing Coordinates`).
  `Arrow Type Start, Finish`
    specifies the type of arrowhead (`notDrawn, Fancy, Filled` or `Line`) for the start and the finish of the ellipse's path. The color of the arrow heads is the line color. So if `Line Color` is set to `notDrawn`, the arrowheads won't be drawn.
  `Arrow Headsize`
    specifies the length (in `Drawing Coordinates`) along one edge of the arrowhead.
  `Arrow Angle`
    specifies the angle (0 - 360 degrees) of the arrow head.
  `Text Color`
    specifies which color will be used initially for the text. If this is set to `notDrawn`, the text won't be drawn.
  `Text`
    specifies the characters to be written. The text is only visible if the `Text Color` is not `notDrawn`.

    The '`&`' button lets you pick and insert character entities (HTML-like names for non-ASCII characters) into the text.

    The '`<>`' button lets you insert embedded text tags (which control bold, italics, underlining, font changes, size changes, etc).

  `Text Font`
    specifies which font slot will be used initially for the text (see `Drawing : Load Fonts`).
  `Text Height`
    specifies the initial height of a capital letter (in `Drawing Coordinates`).
  `Text Position`
    specifies the position for the text. The default is `'0) Horizontal, out'`.
  `Group`
    specifies the group number for the picked ellipse objects.

  Buttons - There are several buttons at the bottom of the dialog box which let you pick additional ellipse objects, move, copy or delete the picked objects, and hide and show the picked objects. See `Edit : Any Type`.

  Menu Tree / Index

  ## Edit : Graph

  There are several ways to get to the dialog box that lets you edit the attributes of a graph:
  - Create a graph. The `Edit : Graph` dialog box pops up right after you create a graph.
  - When no dialog boxes are visible, right click on the center of an existing graph. (Mac OS X: hold down the `Apple` key and press the mouse button.)
  - Choose `Edit : Pick One` and click on the center of any existing graph.
  - Choose `Edit : Graph`.
  - Click on the button on the left edge of the screen with the black graph and the light blue 'E'. It works as if you had selected `Edit : Graph` and then pressed the `Pick One` button once the dialog box was visible.
  Each graph has many, many attributes which you can change in order to make it look like you want it to look. There are attributes which allow you to change the type of graph, specify data and functions to be plotted, and change the appearance of each part of the graph (by specifying line types, line widths, colors, etc.).

  Parts Of A Graph - The `Edit : Graph` dialog box is different from the `Edit` dialog boxes for other drawing objects because graphs have so many attributes. Each graph is composed of many parts and each part has its own attributes.

  To edit graphs:

  - Identify a part of the graph you want to change.
  - Change the attributes of that part of the graph.

  Each graph part has a two part name. The first parts of the names are `Graph, Map, Dataset, Function, Comment, X Axis`, etc. You can see the second parts of the names on the related drop-down lists. For example: choose `X Axis : Title 1` to see a secondary dialog box with the attributes of the X Axis's primary title. When you close one of the secondary dialog boxes, you will again see the `Edit : Graph` dialog box. Or, just pick another part of the graph and the previous secondary dialog box will be automatically closed. Here is an illustration with many parts of the graph labelled:

  The options on the `Edit : Graph` dialog box are:

  - `Graph:`
    - `Overview` - which includes the type of graph and the graph size and shape.
    - `Title 1`
    - `Title 2`
    - `Drawing Order` - lets you change the order in which parts of the graph are drawn.
    - `Get` - lets you get various types of information from a graph. For example, you can click on a data point to get its numerical value and to find out what row it is on in the data file.
    - `Make Map` - lets you set up a map (for example, by specifying a place that you would like the map centered on).
    - `Save As Drawing Objects` - lets you save all of the parts the currently picked graph(s) as drawing objects so they can be edited in unusual ways.
  - `Map:`
    - `All, 1, 2, ..., New Layer` - These options let you edit existing map layers or create a new layer. Each map layer has attributes which specify which type of map data (for example, nation boundaries or state boundaries) will be drawn on the graph. You can create as many map layers as you want on each graph.
  - `Dataset:`
    - `All, 1, 2, ..., New Dataset` - These options let you edit existing datasets or create a new dataset. Each dataset has attributes which specify which columns of data from which datafile will be used and how they will be plotted. You can create and display as many datasets as you want on each graph.
  - `Function:`
    - `All, 1, 2, ..., New Function` - These options let you edit existing functions or create a new function. Each function has attributes which specify what the function is and how it will be plotted. You can create and display as many functions as you want on each graph.
  - `X/Y/Z/All Axes:`
    - `Overview` - the `Axis Type` and range.
    - `Title 1` - the primary title.
    - `Title 2` - the secondary title.
    - `Labels` - the series of text labels, usually near the ticks.
    - `Axis Line`
    - `Ticks 1` - the primary ticks.
    - `Ticks 2` - the secondary ticks.
    - `Grid 1` - the primary grid lines.
    - `Grid 2` - the secondary grid lines.
    - `Zero Line` - a line based at 0 on the current axis.
  - `Legend...` This button leads to the `Legend` dialog box.
  - `Comment:`
    - `All, 1, 2, ..., New Comment` - These options let you edit existing comments or create a new comment. Each comment has attributes which specify what the text is and how and where it will be plotted. Comments are like CoPlot's Text objects; but a Comment's position is specified in graph coordinates, whereas a Text object's position is specified in Drawing Coordinates. You can create and display as many comments as you want on each graph.
  - `Visible` - lets you quickly make the entire graph visible (checked) or not visible (not checked).
  - `Group` - lets you specify the group number for the picked graph objects.

  More Buttons - There are several buttons at the bottom of the dialog box which let you pick additional graph objects, move, copy or delete the picked objects, and hide and show the picked objects. See `Edit : Any Type`.

  Related Settings - Usually, all attributes related to a part of a graph can be found on the dialog box for that part of the graph (for example, `Edit : Graph : X Axis : Title 1`). Sometimes there are related settings in other dialog boxes.

  - The `Edit : Graph : Axis : Overview` dialog box has several "wizards" (`Color, Division 1, Division 2,` and `Visible`). When you change one of these settings, CoPlot actually makes several changes to several individual parts of the graph.
  - The `Edit : Graph : Graph : Overview` dialog box has some settings that apply to all datasets (`Dataset Labels Font`, and `Dataset Labels Font Style`) and to all datasets and functions (`Draw Color Arrays Dark To Light`).
  - The `Drawing : Other` dialog box has several settings which apply to all Graph objects, including:`
    - Minimum Line Width
    - Draw bold markers
    - Draw lines through markers
    - Draw error bars through markers
    - Draw caps on error bars
    - Missing values make gaps
    `

  Menu Tree / Index

  ## Edit : Graph : Graph : Overview

  The `Edit : Graph` `: Graph : Overview` dialog box lets you specify the `Graph Type, Color,` and size and shape. The options on the `Graph : Overview` dialog box are:
  `Type`
    specifies the type of graph:
    `XY`
      is the most common graph for plotting data and/or equations.

    `3D`
      is the 3D version of the XY graph.

    `Conic`
      is used to make maps with Alber's Equal-Area Conic Projection. This projection is used extensively by the USGS, notably for all of the sectional maps of the U.S. It is good for mapping areas that are wider than high. It should not be used to make a map spanning the equator. Equal areas anywhere on the map are close to equal sizes. See `Orthographic` (below) for more details about map graphs.

    `Mercator`
      is used to make maps with the Mercator projection. Straight, parallel meridians and parallels make it good for navigational purposes. It is useful for maps of the whole world, but polar areas appear too large on these maps. See `Orthographic` (below) for more details about map graphs.

    `Orthographic`
      is used to make maps with the Orthographic projection. This map is the view you would see if you used a telescope to view the earth from far, far out in space. It appears very realistic. All lines through the center point of the map are along 'great circles'. (A 'great circle' is the circle created when you pass a plane through the center of a sphere.) This makes it easy to plot the shortest route from the center point to any other point on the map.

      Here are some details that pertain to Conic, Mercator, and Orthographic maps.

      - The X axis is always used for Longitude (degrees East (+) or West (-) from the Prime Meridian) and the Y axis is always used for Latitude (degrees North (+) or South (-) from the equator). Map graphs are designed to always show the proper projection, so there are some restrictions for map graphs that don't apply to other graphs. For example, you can't set the `X Axis : Overview : Low and High` so that `Low>High`.
      - The axis types are always constrained to be `Linear` or `Degrees`. If you choose `Degrees`, the `Divisions` setting for the X and Y Axis `Labels, Ticks,` and `Grids` will be appropriate for degrees. For example, 20' (1/3 of a degree) divisions look good on a `Degrees` axis, but divisions of .33333333 would look bad on a `Linear` axis. If you choose `Linear`, the divisions will be appropriate for a linear axis with decimal numbers.
      - All graphs are sized to be as large as possible but centered within the area defined by `Graph : X Axis Size` and `Graph : Y Axis Size`.
      - The orthographic graph always shows the full world. The center of the graph will be the center of the X and Y axis ranges. Conic and Mercator can display various ranges on the X and Y axis.
      - For most parts of the orthographic graph's axes, the `Visible` setting is treated as `0=nothing`, anything else is '`visible`'. The `X Axis : Axis Line` is drawn as a line around the perimeter.
      - Orthographic clips functions to the X and Y axis range, but clips datasets to the visible hemisphere.
    `Polar`
      plots data and/or equations in polar coordinates.
      - The center of the graph is always y=0. The edge of the graph is `yMax=max(abs(userSpecifiedLow),abs(userSpecifiedHigh))`. This is done because negative y values project through the origin. The Y axis is always `Linear`.
      - The `X Axis : Type` can be `Linear` (0..360 equals one cycle) or `Pi` (0..2PI equals one cycle).
      - If `Graph : Draw Polar Graph As Compass Graph` is checked, x=0 is at 12 o'clock and the angles increase in a clockwise direction. Otherwise, x=0 is at 3 o'clock and the angles increase in a counterclockwise direction. Setting the range on the X axis so that `Low>High` will not change this.
      - If the axis range is greater than 360 (or 2pi), a framework of 0..360 (or 0..2PI) is drawn. Points are plotted where it is appropriate (-5 degrees -> 355 degrees). The user-specified axis range determines what range of the dataset/function will be plotted.
      - If the axis range is less than 360 (or 2pi), a framework of just that range is drawn. Thus, you can make a graph of x=0..180 degrees and you will just see the top half of the circle. The user-specified axis range determines what range of dataset/function is allowed.
      - If you want to display 0..360, but want to clip dataset/functions to a smaller range, use the individual `Dataset : KeepIf` and `Function : Extent` options.
      - Polar graphs clip correctly.

    `Triangle`
      (also called a ternary or tri-linear graph) is a very specialized graph. It is used to compare 3-component mixtures. The sum of the 3 components is always 100%. For example, different soil types can be described by their sand, silt, and clay components.
      - The `Graph : X Axis Size` determines the size of the graph.
      - Normally, the X axis will be 0 on the left and 100 on the right. If you check `Graph : Draw Triangle Graph Reversed`, the graph will be reversed (100 on the left, 0 on the right). The reversed form is the standard for the USDA soil classification charts.
      - The shape of the graph is always an equilateral triangle.
      - The `Axis Type` for all axes is constrained to be `Linear`.
      - The axis ranges are normally 0..100, but other values are possible. The axes always go from low to high. The axis range's are all always equal. The program constrains the y range is by adjusting yHigh so that the y range equals the x range. The z range is entirely constrained so that `zMin=100-xMin-yMax`, and `zMax=100-xMin-yMin`. So, it is important to change the xMin and xMax first; then yMin, then yMax.
      - Data is plotted by summing x+y+z and treating that sum as unity. Then you can plot x/sum, y/sum, z/sum on the x,y,z axes (which are always treated as percentages units). Thus, your raw data can be numbers that sum to 1, or 100, or whatever; they will plot the same.
      - Triangle graphs use crude clipping -- anything out of range is considered not clippable.

  `Draw XY Graph As Origin Graph`
    This affects the way an XY graph is drawn. When this is checked, the (for example, X) axis line, ticks, and labels are drawn where the other axis (for example, Y) equals 0. Thus the axis lines will be drawn through the origin (x=0, y=0).
  `Draw Polar Graph As Compass Graph`
    This affects the way the polar graph is drawn. When this is checked, x=0 is at 12 o'clock and the angles increase in a clockwise direction. Otherwise, x=0 is at 3 o'clock and the angles increase in a counterclockwise direction. Setting the range on the X axis so that low>high will not change this.
  `Draw Triangle Graph Reversed`
    This affects the way the triangle graph is drawn. Normally, the X axis will have 0 on the left and 100 on the right. When this is checked, the graph will be reversed (100 on the left, 0 on the right). The reversed form is the standard for the USDA soil classification charts (as shown above).
  `Background Color`
    specifies the background color for the graph. If the `Background Color` is set to `notDrawn`, the graph's background will be transparent. See also `Drawing : Background Color`, which specifies for background color for the entire drawing.
  `Draw Color Arrays Dark To Light`
    When this is checked, the color arrays for many function and dataset representations are arranged so that the dark colors are used for the lower values and the light colors are used for the higher values. When this is not checked, the reverse is true.
  `Dataset Labels Font`
    The font to be used for datasets whenever text is needed ( `Representation: Grid/2D/bold nth line, Grid/2D/bold nth spline, Markers/Labels, Markers/Labels3D, WindBarb, etc.`). It is used for some function representations, too (`Grid/2D/bold nth line, Grid/2D/bold nth spline`).
  `Dataset Labels Font Style`
    This sets the style (`Plain, Bold, Italics,` or `Bold Italics`) for the font to be used for datasets whenever text is needed ( `Representation: Grid/2D/bold nth line, Grid/2D/bold nth spline, Markers/Labels, Markers/Labels3D, WindBarb, etc.`). It is used for some function representations, too (`Grid/2D/bold nth line, Grid/2D/bold nth spline`).
  `Bar Width (%)`
    This sets the relative width of the bars when `Dataset Representation = Bars/Grouped, Bars/Stacked,` or `Bars/100%`. 100% = normal.
  `Center X Y`
    specifies the center of one of the picked graphs. If you change `Center X,Y` by dragging the block on the screen or by changing the X,Y values, all of the picked graph objects will be moved by the same relative amount.
  `Size`
    The `+` and `-` buttons to the right of `Size` let you increase or decrease the size of the graph. They work by changing the `X, Y,` and `Z Axis Size` values.

    When you use the `Size` buttons or `X/Y/Z Axis Size`, only the size of the graph changes -- the parts of the graph (for example, the `Graph : Title 1 : Height` and `Graph : Dataset : 1 : Size (marker)` don't change size. If you want the size of the parts of the graph to change too, use `Graph : Move` and set the X and Y `Scale` factors to something other than `1`.

  `X Axis Size`
    specifies the length of the X axis in `Drawing Coordinate` units.
  `Y Axis Size`
    specifies the length of the Y axis in `Drawing Coordinate` units.
  `Z Axis Size`
    specifies the length of the Z axis in `Drawing Coordinate` units.
  `Angle`
    specifies the angle of rotation for the entire graph (in floating-point, counter-clockwise degrees).
  `3D Spin Angle`
    specifies the angle that the 3D graph is spun around the Z axis. With the `Left` and `Right` buttons, it helps to think of the graph as a 3D object -- you can spin the graph by pushing the front of the object to the left or right.
  `3D Spin Angle Animation`
    These buttons (left, stop, and right) let you control `3D Spin Angle` animation. Pressing the left (`<`) or right (`>`) buttons starts the graph spinning in that direction. Pressing the stop button (`[]`) stops the spinning.

    To save the animation in an animated GIF file, use `File : Save As : Animated GIF (.gif)`. Note that you have to use `Add Frame` to save each frame (image) individually in the GIF file.

  `Frames Per Second`
    specifies the maximum speed of the animation. The animation won't go any faster than this speed, but if the frames take a long time to draw, the animation will go slower.
  `3D Attitude Angle`
    specifies the angle of tilt for the XY plane of a 3D graph. With the `Up` and `Down` buttons, it helps to think of the graph as a 3D object -- you can change the attitude of the graph by pushing the front of the object up or down.

  Menu Tree / Index

  ## Edit : Graph : Graph : Title

  The `Edit : Graph` `: Graph : Title` dialog lets you specify the attributes of `Title 1` (the primary title), `Title 2` (the secondary title), or both simultaneously.

  The options on the dialog box are:

  `Which Part`
    specifies whether you want to edit `Title 1` (the primary title), `Title 2` (the secondary title), or both simultaneously.
  `Text`
    specifies the text to be written. If you just enter a '.', the default title will be used. For `Title 1`, the default is the name of `Datafile : 1` or the graph file's name.

    The '`&`' button lets you pick and insert character entities (HTML-like names for non-ASCII characters) into the text.

    The '`<>`' button lets you insert embedded text tags (which control bold, italics, underlining, font changes, size changes, etc).

  `X Y Position`
    specifies the X Y position (in `Drawing Coordinates`) for the text. You can also drag the little block that appears near the title.
  `Color`
    specifies which color will be used initially for the text. If this is set to `notDrawn`, the text won't be drawn.
  `Font`
    specifies which font slot will be used initially for the text (see `Drawing : Load Fonts`).
  `Font Style`
    specifies the initial font style for the text: `Plain, Bold, Italic,` or `Bold Italic`.
  `Height`
    specifies the initial height of a capital letter (in `Drawing Coordinates`).
  `Angle`
    specifies the angle for the text (in floating-point, counter-clockwise degrees). This is usually 0, but may be any value.
  `H Align`
    specifies the horizontal alignment of the text, relative to the text's `X Y Position`. (The text's vertical alignment is always `Center`.)

  Menu Tree / Index

  ## Edit : Graph : Graph : Drawing Order

  The order of graph parts on the list in this dialog box indicates the order in which the graph parts will be drawn (top=first, bottom=last). To change the position of a graph part on the list, press the up (or down) arrow to the left of the part of the graph that you want to be drawn sooner (or later).

  Graph parts which are drawn later may partially hide parts which are drawn earlier. This dialog box is needed because no single drawing order is appropriate for all graphs.

  A common simple use of this dialog box is to move `Dataset 1` and `Dataset 2` above `Function 1` and `Function 2`, so that the datasets are drawn before the functions.

  `Dataset 1` is separate from `Dataset 2...` so that you can manipulate `Dataset 1` differently from the other datasets. This is commonly done when `Dataset 1` is plotting a colored surface (thereby hiding all parts of the graph already drawn) and thus needs to be drawn before anything else. `Function 1` is separate from `Function 2...` for the same reason. `Map 1-6` is separate from `Map 7...` for the same reason.

  The drawing order does not affect the order of items in the legend.

  There are unusual situations in which even the flexibility of `Graph : Drawing Order` is insufficient. In these cases, you may want to make two graphs (use `Edit : Graph : Copy`). The original graph can have the parts of the graph that need to be drawn first, while the new graph has parts that need to be drawn later.

  Menu Tree / Index

  ## Edit : Graph : Graph : Get

  The `Edit : Graph` `: Graph : Get` dialog box lets you get various types of information from a graph. For example, you can click on a data point to get its numerical value and to find out what row it is on in the data file.
  - This only gets information from the picked graph which was created last.
  - All timers and counters are reset when you choose a different `Get What` option. To reset the timers and counters but keep the same `Get What` option, change `Get What` to something else then change it back.
  - The points you click on the graph are marked and remain marked until you change `Get What` or close the dialog box. This is useful because it lets you see all of the points you have marked.
  - All of the results are printed in a table in CoText. If you remove the header information, the results can be imported into a data file in CoStat via the clipboard or as a ASCII (Columnar) file.

  `Get What` specifies what type of information you want to get from the graph. The options on the dialog box vary according to which `Get What` option is selected. The `Get What` options are:

  `Data Area`
    After you choose one of the `Datasets`, this calculates the area under the dataset.
    - This works by summing the areas defined by the trapezoids of all adjacent data points (`(y1+y2)/2*(x2-x1)`).
    - Note that if the X's increase, the area will be positive; if the X's decrease, the area will be negative.
    - If `Drawing : Other : Missing values make gaps` is not checked, this procedure will treat rows with `X=missingValue`, or `Y=missingValue`, or where `Keep If` is false as if they had been removed from the data file; otherwise the dataset is considered to have separate sections.
  `Data Point`
    After you choose one of the `Datasets` and click on a point, this finds the closest plotted data point and moves the cross to that point. It displays the dataset number, the row number in the data file, and the X, Y, and Z values.
  `Data Interpolate X`
    After you choose one of the `Datasets` and enter an `X` value, this searches for the first segment of the dataset containing X and then linear interpolates to find the related Y value.
  `Data Interpolate Y`
    After you choose one of the `Datasets` and enter a `Y` value, this searches for the first segment of the dataset containing Y and then linear interpolates to find the related X.
  `Drawing Coordinates`
    gets the `Drawing Coordinates` of the point you click on. It also prints a point count, the time it was clicked on (relative to your choice of `Get What`), the distance from the last point, and the total distance.
  `Function Equals Y`
    Given a `Function`, a `Y` value, and a point on the graph, this finds X where the function equals Y.
    - When y=0, x is a "root" of the equation.
    - Ideally, the initial point will be close to the answer.
    - This method fails if the equation is not continuous or if the algorithm is unable to "bracket" the root (find a point on either side of the desired Y value). Bracketing may fail if an even number of roots are close together or if a Y value is a local maxima or minima.
  `Function Evaluate`
    Given a `Function` and a graph `X` value, this evaluates the function to find the corresponding Y value.
  `Function Integrate`
    Given a `Function` and an X axis range, this numerically integrates the function. This uses the Romberg Rule for integration. A series of passes are made, each taking twice as long as the previous, in an attempt to converge on the answer. See Miller, 1981.
  `Function Maxima`
    is like `Function Minima`, but finds a local maxima.
  `Function Minima`
    Given a `Function` and a point on the graph, this finds a nearby local minima.
    - It is best if the initial point that you provide is close to the local minima.
    - This method fails if the equation is not continuous or if the algorithm is unable to "bracket" the local minima (find a point on either side of the minima). Bracketing may fail if an even number of minima are close together.
  `Functions Close`
    Given two `Functions` and a point on the graph, this finds the point nearby where they are closest (or where they intersect).
    - It is best if the initial point that you provide is close to the point where the functions are closest.
    - Internally, this finds a local minima for `abs(function1-function2)`.
  `Graph Coordinates`
    gets the graph coordinates of the point you click on. It includes the same count, time, and distance data as the `Drawing Coordinates` option above. This doesn't (can't) work for 3D graphs. See Digitizing Data From An Image File With A Graph for an example of using this.

  Digitizing Data From An Image File With A Graph - `Graph Get : Get What : Graph Coordinates` can be used to digitize data from an image file with a graph. For example, you may have an image of a graph from a web site or you may have a printed copy of a graph (perhaps from a journal or from your pre-computer days) and you may wish that you had the original data file which was used to make that graph. The method below describes how to recreate that original data file. Unfortunately, the data won't be exactly the same as the original because of the imprecise nature of scanning and digitizing.

  1. You need to get the printed graph into an image file (.gif, .jpg, .png, or .pcx). There are two approaches to this:
     - Scan the image with a scanner. Save the image as a .gif (or other) file.
     - Fax the image to a computer with a fax board. Export the fax to a .gif (or other) file.
  2. Use `Create : Image` to display the image file on the screen. Increase its `Size` so that it basically fills the CoPlot window. If it is slightly tilted, change its `Angle` so that it is perfectly upright.
  3. Use `Create : Graph` to make a graph object. Edit the graph so that it mimics the original graph:
     1. Use `Graph : Overview : X Axis Size` and `Y Axis Size` so that the graph object is the correct size.
     2. Use `X Axis : Overview : Low` and `High` so that the X axis has the same range.
     3. Use `Y Axis : Overview : Low` and `High` so that the Y axis has the same range.
  4. Use `Edit : Graph : Graph : Get`.
     1. Set `Get What` to `Graph Coordinates`.
     2. Click on the data points. This makes a table of coordinates in the text editor.
     3. Mark the block of text that contains the table of coordinates.
     4. Use `Edit : Copy` to copy the text to the clipboard.
  5. Create a data file from the results:
     1. Choose CoPlot's `Datafile : 1`
     2. Choose CoStat's `File : Open : Clipboard`. Click on `Replace Old Data`.
     3. Use CoStat's `File : Save As` to save the datafile with a better file name.
  6. If desired, use CoPlot's `Edit : Graph`. Pick the graph you created above and plot the data on it.

  Menu Tree / Index

  ## Edit : Graph : Graph : Make Map

  CoPlot has three `Graph : Types` for making maps with different projections: Orthographic, Mercator, and (Alber's) Conic. You can also use XY graphs to make maps.

  World Maps - CoPlot comes with several world map data files with specially encoded data for drawing nations, states, cities (major world cities and U.S. cities with >1000 people), oceans, rivers, and lakes for the entire world. These maps data files are small enough (about 3 MB) to be searched and plotted quickly, yet detailed enough to be useful for maps of areas as small as roughly 2°x2° or 100x100 miles. These files are on the CoPlot CD-ROM and are also available from the CoHort Software web site (www.cohort.com).

  Detailed maps - CoPlot comes with a second set of detailed map data files with additional, highly detailed information (from the United States Geological Survey) for a small area of the United States (usually one or two states). These files include data for nations, states, counties, oceans, rivers, lakes, parks, and roads (major and minor highways, but not local roads or streets). These files are on the CoPlot CD-ROM and are also available from the CoHort Software web site (www.cohort.com).

  Control of what is visible on the map - `Edit : Graph : Map` let you control what geographic information appears on the map. Each layer controls the display of one type of information (for example, the boundaries of nations). The layers are analogous to `Datasets 1...` in that they have a series of attributes that you can set. When the map is drawn, layer 1 is drawn first, then layer 2,.... A typical map might have 5 layers: Ocean, Lake, River, Nation, and State. Each layer has separate controls for background color, line color, line width, text color, text height, etc.

  Maps are just like other graphs - You can use standard CoPlot commands to create the map you want. Maps have grid lines (latitude and longitude lines) and axis ranges (in degrees). You can specify the size and shape of a map as with other graphs. Data and functions can be plotted on maps just as you would plot them on XY graphs.

  Ellipsoid - The earth is not spherical; it is elliptical. The Conic and Mercator maps in CoPlot use ellipsoid formulas to plot the maps. The Orthographic map uses spherical formulas to plot the maps. Over the years there have been several measurements of the equatorial radius, r, and the flattening value, f. In the past, all U.S. Geological Survey sectional maps used the Clarke 1866 ellipsoid. In the last few years, map makers have been switching to GRS 1980, the new international standard. CoPlot always uses GRS 1980. See Snyder, 1983.

  The `Edit : Graph` `: Graph : Make Map` dialog box has several options which simplify setting up a graph that displays map data. For example, you can enter a place name (for example, `France`) and have CoPlot make a map featuring that place. This dialog box also has a few options related to the specifics of how the map is to be created (for example, you can specify the two standard parallels for a conic projection).

  The options on this dialog box are:

  `Search For`
    If you type a place name (for example, `California`) and press the `Go` button, CoPlot will search all available map files and compile a list of geographic names that match the text that you typed. When you then pick your choice (see `Pick` below), CoPlot will make a map featuring that place. This procedure resets the X and Y axis ranges, divisions, and labels to appropriate values.

    It doesn't matter if you enter upper or lower case characters. It doesn't matter if you type a portion of the name. For example, typing `fran` would find `San Francisco`. Diacritics (for example, ~ and `) are ignored in the search text and the place names, so you need not bother to enter them. The data files often store alternate spellings (for example, Peking and Beijing), so CoPlot should be able to find what you want.

    CoPlot only compiles a list of the first 100 matches that it finds. So asking for `South` will only generate the first 100 items that have "South" in their name.

    For some geographic names (notably continents, countries, and states), CoPlot has the suggested X and Y axes ranges encoded with the name. (You may see something like `[12N 10E 20N 20E]` which is the latitude and longitude (y,x) location for the lower left and upper right corners of a map.) For other places, CoPlot will make a graph with the X and Y axis ranges set to 20 degrees and centered at the place you requested.

    A common problem is that no matching names are found for any place name you enter. This occurs when the world map data files (for example, ocean.mpx, nation.mpx, city.mpx, etc.) have not been installed. They should be in the cohort directory.

    Several abbreviations are used in the data files: f.=formerly, I.= Island, Is.=Islands, R.=River, and L.=Lake.

  `Pick`
    After you have used `Search for`, this option lets you pick a place name from the list of matching names.
  `Center X, Y`
    This lets you enter the longitude (X) and latitude (Y) for the center of the graph. The X and Y axis ranges are not changed.
  `Range X, Y`
    This lets you enter the extent of the graph along the X (longitude) and Y (latitude) axes. The center point of the graph is not changed. Thus you can quickly zoom in or zoom out by decreasing or increasing these values. For example, if the X and Y axis ranges are originally 20°, you could change them both to 5° to zoom in. This is much preferred to using `Drawing : Zoom Box`, which hides the axis labels and doesn't draw finer details.
  `Conic Parallel 1, 2`
    For the Conic projection, this lets you set the two standard parallels. Along these parallels, the scale is exactly correct. Some map makers suggest using parallels that are 1/6 of the way inward from the southern and northern edges of the graph. The U.S. Geological Survey uses 29.5° and 45.5° for the two standard parallels for all of maps of the contiguous 48 states. You can enter '.' to get the defaults (the 1/6th system), or enter actual values. For the northern hemisphere, enter the low value first, then the high value. For the southern hemisphere: enter the high value, then the low value. In other words, always enter the parallel close to equator first, then the parallel close to pole. (If you do the reverse, or set the two parallels on different sides of the equator, the graph becomes a point!)
  `Line Detail`
    In order to speed up the drawing of lines and filled areas on a map, CoPlot plots only the points that make a visible difference on the map. The points in the map files that define boundaries are coded to identify the most important points (1's) and the least important points (9's), and points in between. If you set `Line Detail` to `0) automatic`, the program will use the detail level that it feels is appropriate based on the axes ranges. Or, you can get a specific level of detail by setting `Line Detail` to a number, `1) coarse` through `9) fine`.
  `Make XY Graph Isotropic`
    This option lets you force XY graphs with linear (or linear-like) axes to be isotropic. On isotropic graphs, the X and Y axes have the same scale (length per unit). For example, if the range on the X axis is 8, and the range on the Y axis is 4, the graph's axes will be resized so that the `X Axis Size` is twice the `Y Axis Size`. The procedure works by shortening the length of the axis which is (relatively) too long. The resulting graph is centered relative to the old position. Due to the decrease in size, you may to increase the size of the graph with `Edit : Graph : Graph : Overview : Size +`.

    This procedure is useful in many situations other than making maps (for example, for graphs for mathematics).

    This procedure is also done automatically when you use some of the options on the `Make Map` dialog box (for example, `Pick, Center X Y,` and `Range X Y`).

  Menu Tree / Index

  ## Edit : Graph : Graph : Save As Drawing Objects

  `Edit : Graph` `: Graph : Save As Drawing Objects` is a procedure for intermediate and advanced users. It lets you save all of the parts of the currently picked graph(s) as drawing objects (mostly Path and Text Objects). Then, you can edit the drawing objects in unusual ways that the Graph dialogs don't allow. This procedure also sets `Edit : Graph : Visible` to `unchecked` so that you will see the new drawing objects instead of the original graph.

  For example, you might make a graph with some `Map` layers, and you might want to further edit the appearance of the map layers by hand. For example, city names often overlap, so you could remove some of the city names using `Edit : Objects : Delete`.

  Caution: There is a drawback to using this procedure (which is why you should use it with caution): afterwards, you can't use `Edit : Graph` to make changes to the graph. So, you lose the ability to change the size or shape of the graph, change the graph's axis ranges, add new datasets or functions, etc. If you really need to go back and use `Edit : Graph`'s features, you have to delete all of the drawing objects that were created and set `Edit : Graph : Visible` to `checked`. The best advice is: don't use `Save As Drawing Objects` until the graph looks essentially as you want it to look, and all you have left to do to the graph are the final changes that `Save As Drawing Objects` makes possible.

  Details -

  - Datasets represented by a line and markers and which are broken into more that one object (because of clipping or missing values), will be converted to two path objects: one for the line and one for the markers. Unfortunately, this means that the line will be drawn through the markers. Only `Representation: Variable Markers` won't be affected by this.
  - Some text parts of the graph will move slightly (1 pixel on the screen) when converted to Text objects.

  Menu Tree / Index

  ## Edit : Graph : Map

  The `Edit : Graph` `: Map` dialog box lets you create and edit map layers. Each map layer has attributes which specify which type of map data will be drawn on the graph and how it will be drawn.

  When you create a graph, it initially has no map layers. To create a new layer, you must drop down the `Map` list on the `Edit : Graph` dialog box and click on `New Layer`. Then, `Layer 1` will be created and added to the list.

  The first time you call up this dialog box (within each CoPlot session), it may take a few seconds for CoPlot to search the cohort directory to find the available map data files.

  The options on the dialog box are:

  `Which Map Layer`
    lets you specify which layer to edit (`All`, or `1 - n`).

    To create a new layer, you must drop down the current list of layers and click on `New Layer`. Another number (n+1) will be added to the list.

  `Up`
    moves the currently selected layer up one slot. The order of layers in the list determines the order in which they are drawn whenever the drawing is redrawn. Earlier layers may be partially or completely hidden by later layers.
  `Down`
    moves the currently selected layer down one slot. The order of layers in the list determines the order in which they are drawn whenever the drawing is redrawn. Earlier layers may be partially or completely hidden by later layers.
  `Copy`
    makes a new layer which is a copy of the currently selected layer. The new layer is inserted in the list right after the currently selected layer, and it becomes the currently selected layer.
  `Delete`
    deletes the currently selected layer.
  `Map File`
    specifies which map data file will provide the information for this map layer. See Map Data Files for the details of what information is in each map file.
  `Object Detail`
    specifies which types of items from the map file will be drawn. Enter a comma separated value list of types (for example, "`1, 3, 5`") or "." for the default. The list can include ranges of numbers (for example, "`1-3,5`"). Use the `Help` button or see Map Data Files for the details of what information is in each map file.
  `Background Color`
    specifies the solid color to be used in the background of filled map objects (if any). If this is set to `notDrawn`, the background won't be drawn. If this is set to `mapDefault`, the colors specified in the map data file will be used.
  `Line Color`
    specifies the color for the line objects in the map data file. If this is set to `notDrawn`, the lines (if any) won't be drawn. If this is set to `mapDefault`, the colors specified in the map data file will be used.
  `Line Type`
    specifies the dash-space pattern which is used repeatedly when line objects are drawn. At the end of the line type list are line types that are not dash-space patterns (for example, `Parallel, Railroad, Disjoint`).
  `Line Dashsize`
    specifies the size (in `Drawing Coordinates`) of the dashes and spaces that make up the line types. For non dash-space line types, it specifies the size of the dominant feature (for example, the distance between the parallel lines).
  `Line Width`
    specifies the width of the lines (in `Drawing Coordinates`).
  `Marker Color`
    specifies the color for the marker objects in the map data file. If this is set to `notDrawn`, the markers won't be drawn. If this is set to `mapDefault`, the colors specified in the map data file will be used. Currently, none of the map data files created by CoHort Software contain markers.
  `Marker Size`
    specifies the basic marker size (the height in `Drawing Coordinates` of a full-sized marker).
  `Text Detail`
    specifies which types of text items from the map file will be drawn. Enter a comma separated value list of types (for example, "`1, 3, 5`") or "." for the default. The list can include ranges of numbers (for example, "`1-3,5`"). Use the `Help` button or see Map Data Files for the details of what information is in each map file.
  `Text Color`
    specifies the color for the text. If this is set to `notDrawn`, the text won't be drawn. If this is set to `mapDefault`, the colors specified in the map data file will be used.
  `Text Height`
    specifies the height for capital letters (in `Drawing Coordinates`).

  Menu Tree / Index

  ## Edit : Graph : Map :: Data Files

  CoPlot comes with several map data files with specially encoded geographic feature data. There are two categories of map data files.

  To make a map of a large area, for example, the world or the western U.S., use the world map data files (the ones without a two digit number at the end of the file name, for example, `OCEAN, NATION, STATE, RIVER, LAKE, CITY`). These data files have data for drawing ocean boundaries, national boundaries, state boundaries, cities, rivers, lakes, and cities for the entire world. These data files are small enough to be searched and plotted quickly, yet detailed enough to be useful for maps of areas down to roughly 2°x2° or 100x100 miles.

  To make a very detailed map of a small area of the United States, for example one state or a smaller area, use the detailed map data files (the ones with two digit numbers at the end of the file name, for example, `NATION01` and `STATE_01`). These map data files have highly detailed information for a small area of the United States (usually one or two states). Usually, when you buy CoPlot, you will be sent the world map files and the detailed map files for your state. Detailed maps of other areas in the United States are available from CoHort Software. Currently, there are no detailed CoHort map data files available for places outside the United States.

  This system of putting the information in world map data files vs. detailed map data files gets you the desired detail level while reducing the amount of data the program must scan each time it redraws the data (for example, 0.5 MB of data files instead of 20 or 200MB for the entire world in detailed form). It is assumed that most people will make coarse maps of different parts of the world or the U.S., or detailed maps of their part of the U.S. But the option is open to load all of the detailed maps.

  DISCLAIMER - When we created these map data files, we made an effort to ensure the accuracy of the original data sources and our modifications to the data. However, there are likely to be some small and large errors in the map files. Geographic locations don't change, but political boundaries do. Now, the map data is now somewhat out-of-date (for example, the USSR is still intact on our maps!).

  SUITABILITY - CoPlot's map making facilities are suitable for:

  1. Making maps for educational purposes.
  2. Making background maps for plotting data.

  CoPlot's map making facilities are not suitable for:

  1. Navigational purposes.
  2. Other purposes where the accuracy of the maps is critical to human safety.
  3. Legal purposes.

  In any case, it is up to you to determine the suitability of the map data for your purposes. In all cases, the data were generated by digitizing maps. As with all map data, the vertices are not exact locations, but are approximations.

  Map file names - The main file name indicates the type of information in the map file, for example, `ocean, lake`. If the name ends in a two digit number it is a detailed map of a portion of the U.S. (for example, `NATION01`); otherwise it is a world map (for example, `NATION`).

  All map file names have an extension indicating the part of the world for which they have data:

  North America: | `.MP1` has items visible when x<-30° y>15°
  Europe: | `.MP2` has items visible when x>-30° y>15°
  South America: | `.MP3` has items visible when x<-30° y<15°
  Africa/Australia: | `.MP4` has items visible when x>-30° y<15°

  This system lets CoPlot quickly determine which files have the data necessary for the current graph. This dramatically speeds up the drawing of most maps.

  Map file directory - The map files need to be in the cohort directory.

  Menu Tree / Index

  ## Edit : Graph : Map :: World Map Data Files

  CoPlot comes with a set of map data files which contain information about the entire world. This data is meant to be used for maps of large areas, from the entire world down to areas as small as 2°x2° or roughly 100x100 miles. The main part of the file name for these files does not end in a two digit number (for example, `OCEAN` is a world map data file).

  Source of the Data - The source of some of this data is the Micro World Data Bank II, 1989. Original coordinate data was created by the Central Intelligence Agency. Minor points were removed from the data files and then the data was placed in the public domain by Fred Pospeschil and Antonio Riveria. There were numerous little problems in the MWDB files (crossed line segments, gaps, missing boundaries, etc.). We have corrected many of these problems as best we could. Also, the dataset does not contain many small islands.

  The data for the City map files comes from the 1989 UN Demographic Yearbook (U.N., 1991), the USGS National Geographic Names Database, and the 1980 Census. Capital cities are in all capital letters. The cities are ranked by the population of the city, proper. Or if that data was unavailable, by the population of the metropolitan region. In general, the name which will be used on a map is the name which has been traditionally used on maps in the United States. Alternative names and spellings were added when possible; they can be searched for with `Edit : Graph : Graph : Make Map : Search For`, but will not appear on the map. For the spellings of the names, we used Webster's New Geographical Dictionary (1988) as the final arbiter. For the U.S., places with greater than 1000 people are included. For the rest of the world, only major cities are included.

  We apologize to CoPlot users in other countries for putting the American versions of place names on maps; the choice of which names will be used on a map is not an easy one. They can be changed by using `Edit : Graph : Graph : Save As Drawing Objects` and then editing the text objects for the place names.

  The standard world maps are (where x denotes 1, 2, 3, or 4):

  `OCEAN.MPx` | oceans, seas, great lakes | lines in layer 1; ocean names in layers 1,2; land names in 5,6
  `LAKE.MPx` | major lakes | lines and fills in layer 1; names in layers 1,2
  `RIVER.MPx` | major rivers | lines and fills in layer 1; names in layers 1,2
  `NATION.MPx` | all nations | lines and fills in layer 1; names in layers 1,2
  `STATE.MP1` | U.S.A. states | lines and fills in layer 1; names in layers 1
  `CITY.MPx` | major cities | no lines or fills; names in layers 1..9

  Layers in `CITY.MPx` files:

  Layer | Population | Symbol
  --- | --- | ---
  1 | Major Capitals (large geographically or "important"); | large circle marker (filled if capital city)
  2 | >=1,000,000 (and all other Capitals) | large circle marker (filled if capital city)
  3 | >=500,000 | small circle marker
  4 | >=200,000 | small circle marker
  5 | >=100,000 | small circle marker
  6 | >=50,000 | dot marker
  7 | >=20,000 | dot marker
  8 | >=10,000 | dot marker
  9 | <10000 or unknown | dot marker

  Different layers can be selected with the `Object Detail` and `Text Detail` options on the `Edit : Graph : Map : x` dialog boxes.

  Ocean, states, and nations have names which are centered. Lakes, rivers, and cities have names which are left justified. The City markers are part of the text which is left justified and so are very close, but not perfectly centered on the city's true center.

  City names may overlap - No effort has been made to modify the angles or justification of the text for city names to avoid overlapping. It is a difficult problem, since the map data may be used to make maps of widely different scales and with different `Text Detail` settings. The best simple solution is to work with the `Text Detail` setting to get an appropriate number of city names for your map's scale. If you really need to move or delete some of the city names, use `Edit : Graph : Graph : Save As Drawing Objects` and edit the resulting text objects with the city names.

  Menu Tree / Index

  ## Edit : Graph : Map :: Detailed Map Data Files

  The main file name indicates the type of information in the map file, for example, `ocean, lake`. If the name ends in a two digit number it is a detailed map data file of a portion of the U.S. (for example, `NATION01`); otherwise it is a world map data file (for example, `NATION`).

  What is the source of the data? The data was extracted by CoHort Software from the "1:2,000,000-Scale Digital Line Graph (DLG) Data" on CD-ROM from the U.S. Geological Survey (Earth Science Information Center, 1986). "The data files are derived from the sectional maps of the 1970 National Atlas of the United States of America." To reduce file sizes and make the data easier to manage, the USGS divided the U.S. into 21 areas (1 - 21); CoHort Software maintained this system when converting the files to our format. To reduce the file sizes further, CoHort Software removed points that caused deviations of less than 0.001° from the lines. This process removed roughly 60% of the original data, without removing much information.

  Do CoPlot .MP? files have all of the USGS data? CoHort software tried to incorporate most of the types of information from the USGS files. The only major types not utilized were airfields, the Alaska pipeline, railroad information, and city/metropolitan area information. The `City.MP1` world data file has U.S. city locations and names from non-USGS sources.

  Do the files have names of the objects? The USGS DLG data does not include names. Currently, none of the detailed map files have text objects.

  Alterations to USGS files - The USGS files do not differentiate between lake boundaries and island boundaries. This looked odd, so CoHort Software moved all of the island boundaries from the `LAKE_xx.MP1` files to the `OCEAN_xx.MP1` files by hand.

  Which data is in which layer of the detailed map files? Below is a description of how the data from the USGS files has been organized into the layers in each of the CoPlot .MP1 files. The USGS organized the data by major codes (for example, 290=political boundaries) and minor codes (for example, 6002=National Water Boundaries). The xx in the file names below denotes a number from 01 through 21, corresponding to a section of the U.S.

  The detailed map data files are divided into sections 1 - 21:

  `OCEAN_xx.MP1` - lines

  Layer | Major,Minor | Description
  --- | --- | ---
  1 | 290,4000 | U.S. Coastline including Great Lakes; also ocean and lake islands of all sizes;

  `LAKE__xx.MP1` - lakes (color=6) and islands (color=2) stored as filled areas

  Layer | Major,Minor | Description
  --- | --- | ---
  1 | 290,4014 | Perennial lakes, reservoirs; >80 km.
  2 | 290,4011-4013 | Perennial lakes, reservoirs; 40-80 km.
  3 | 290,4008-4010 | Perennial lakes, reservoirs; 20-40 km.
  4 | 290,4005-4007 | Perennial lakes, reservoirs; 8-20 km.
  5 | 290,4001-4004 | Perennial lakes, reservoirs; 0-8 km.
  6 | 290,4034 | Intermittent lakes, reservoirs; >80 km.
  7 | 290,4031-4033 | Interm. lakes, reservoirs; 40-80 km.
  8 | 290,4028-4030 | Interm. lakes, reservoirs; 20-40 km.
  9 | 290,4025-4027 | Interm. lakes, reservoirs; 8-20 km.
  10 | 290,4021-4024 | Interm. lakes, reservoirs; 0-8 km.
  11 | 290,4040-4045 | Marsh/swamp and salt marsh; all sizes
  12 | 290,4050-4053 | Dry lake and alkali flat; all sizes
  13 | 290,4060-4066 | Glacier; all sizes

  `RIVER_xx.MP1` - lines and filled areas

  Layer | Major,Minor | Description
  --- | --- | ---
  1 | 290,3001 | River/stream ("double line" -> fills)
  | 290,3016 | River/stream (single line); >350 km.
  2 | 290,3013-3015 | River/stream (single line); 200-350 km.
  3 | 290,3010-3012 | River/stream (single line); 100-200 km.
  4 | 290,3007-3009 | River/stream (single line); 40-100 km.
  5 | 290,3003-3006 | River/stream (single line); <40 km.
  | 290,3060-3063 | Braided stream; all sizes
  6 | 290,3030 | Intermittent river/stream; >350 km.
  7 | 290,3027-3029 | Intermittent river/stream; 200-350 km.
  8 | 290,3024-3026 | Intermittent river/stream; 100-200 km.
  9 | 290,3021-3023 | Intermittent river/stream; 40-100 km.
  10 | 290,3007-3020 | Intermittent river/stream; <40 km.
  11 | 290,3070-3086 | Canal and ditch; all sizes
  12 | 290,3095 | Intercoastal waterway

  `NATIONxx.MP1` - lines

  Layer | Major,Minor | Description
  --- | --- | ---
  1 | 290,6001-6002 | National, land and water boundaries

  `STATE_xx.MP1` - lines

  Layer | Major,Minor | Description
  --- | --- | ---
  1 | 290,6005-6006 | State, land and water boundaries

  `COUNTYxx.MP1` - lines

  Layer | Major,Minor | Description
  --- | --- | ---
  1 | 290,6009-6010 | County, parish, AK borough

  `ROAD__xx.MP1` - lines

  Layer | Major,Minor | Description
  --- | --- | ---
  1 | 290,5001-5002 | Interstate; Major U.S.; limited access
  2 | 290,5003-5004 | Major State and other; limited access
  | 290,5009 | Interstate, under construction
  3 | 290,5013-5014 | Other U.S.; >500km.
  4 | 290,5015-5020 | Other U.S.; <500km.
  5 | 290,5021-5024 | Parallel roads
  6 | 290,5028 5031 | State secondary, light duty; all weather
  7 | 290,5041 | Unimproved (fair or dry weather)
  8 | 290,5061-5062 | Tunnel; Ferry

  `PARK__xx.MP1` - filled areas

  Layer | Major,Minor | Description
  --- | --- | ---
  1 | 290,6021-6025 | National park; all sizes
  2 | 290,6026-6030 | National monument; all sizes
  3 | 290,6031-6035 | National seashore/lakeshore; all sizes
  4 | 290,6036-6040 | National recreation area; all sizes
  5 | 290,6041-6045 | National wilderness area; all sizes
  6 | 290,6051-6055 | National forest; all sizes
  7 | 290,6056-6060 | National grassland; all sizes
  8 | 290,6061-6065 | National wildlife refuge; all sizes
  9 | 290,6066-6070 | Federal Indian reservation; all sizes
  10 | 290,6081-6082 | Federal Military reservation; all sizes

  Menu Tree / Index

  ## Edit : Graph : Dataset

  The `Edit : Graph` `: Dataset` dialog box lets you create and edit datasets. Each dataset has attributes which specify which columns of data from which datafile will be used and how they will be plotted on the graph. See also the separate list of `Dataset Representations`.

  When you create a graph, it initially has no datasets. To create a new dataset, you must drop down the `Dataset` list on the `Edit : Graph` dialog box and click on `New Dataset`. Then, `Dataset 1` will be created and added to the list.

  Related Settings - Usually, all attributes related to a part of a graph can be found on the dialog box for that part of the graph (for example, `Edit : Graph : Dataset : 1`). Sometimes there are related settings in other dialog boxes.

  - The `Edit : Graph : Axis : Overview` dialog box has several "wizards" (`Color, Division 1, Division 2,` and `Visible`). When you change one of these settings, CoPlot actually makes several changes to several individual parts of the graph.
  - The `Edit : Graph : Graph : Overview` dialog box has some settings that apply to all datasets (`Dataset Labels Font`, and `Dataset Labels Font Style`) and to all datasets and functions (`Draw Color Arrays Dark To Light`).
  - The `Drawing : Other` dialog box has several settings which apply to all Graph objects, including:`
    - Minimum Line Width
    - Draw bold markers
    - Draw lines through markers
    - Draw error bars through markers
    - Draw caps on error bars
    - Missing values make gaps
    `

  The options on the dialog box are:

  `Which Dataset`
    lets you specify which dataset to edit (`All`, or `1 - n`).

    To create a new dataset, you can drop down the current list of datasets and click on `New Dataset`. Another number (n+1) will be added to the list.

    Or, you can create a new dataset which is a copy of the currently selected dataset by using `Copy` (below).

  `Regression...`
    opens up a small dialog box which lets you perform a regression on the current dataset. This will create or modify a `Graph : Function` and plot the resulting equation. See `Graph : Dataset : Regression` for a complete list and description of the options.
  `Up`
    moves the currently selected dataset up one slot. The order of datasets in the list determines the order in which they are drawn whenever the drawing is redrawn. Earlier datasets may be partially or completely hidden by later datasets.
  `Down`
    moves the currently selected dataset down one slot. The order of datasets in the list determines the order in which they are drawn whenever the drawing is redrawn. Earlier datasets may be partially or completely hidden by later datasets.
  `Copy`
    makes a new dataset which is a copy of the currently selected dataset. The new dataset is inserted in the list right after the currently selected dataset, and it becomes the currently selected dataset.
  `Delete`
    deletes the currently selected dataset.
  `Representation`
    specifies how the data for this dataset will be drawn (for example, as lines, as markers, or as a filled area). See `Graph : Dataset : Representations` for a complete list and description of the options.
  `Datafile`
    specifies which datafile will be the source of data for this dataset. See Datafile for information on loading data into the datafile slots.

    All of the data for one dataset must be from one datafile (for example, you can't plot X from datafile 1 and Y from datafile 2). If the data you need is in different datafiles, you must merge the data files (see CoStat's `File : Open : Mode : Append to the right`).

  `X, Y, Low Error, High Error, Left Error, Right Error`, etc.
    specify which columns in the datafile have which types of information. For example, the `X` data may be in column 4 and the `X` data may be in column 6. The options vary, depending on the `Representation` selected. Options with names that end in "`(Opt.)`" are optional (for example, error bar columns). If not all of the non-optional columns have a column selected, the dataset won't be plotted.
  `Y Animation`
    This animates the graph by repeatedly increasing (or decreasing) the Y column number. This is useful if you have a data file with X, Y1, Y2, Y3, etc. columns and are plotting the dataset on a 2D graph.

    To save the animation in an animated GIF file, use `File : Save As : Animated GIF (.gif)`. Note that you have to use `Add Frame` to save each frame (image) individually in the GIF file.

  `Z Animation`
    This animates the graph by repeatedly increasing (or decreasing) the Z column number. This is useful if you have a data file with X, Y, Z1, Z2, Z3, etc. columns and are plotting the dataset on a 3D graph, or a 2D graph with a `Representation` that uses a Z column.

    To save the animation in an animated GIF file, use `File : Save As : Animated GIF (.gif)`. Note that you have to use `Add Frame` to save each frame (image) individually in the GIF file.

  `Frames Per Second`
    specifies the maximum speed of the animation. The animation won't go any faster than this speed, but if the frames take a long time to draw, the animation will go slower.
  `Background Color`
    specifies the solid color to be used in the background of the `Dataset Representation` (if appropriate). If this is set to `notDrawn`, the background won't be drawn.
  `Color`
    specifies the color for the marker, fill and/or line parts of the representation. If this is set to `notDrawn`, nothing will be drawn (and it is therefore a quick way to temporarily not draw this dataset, without losing the attributes).
  `Marker Type`
    specifies which character in which font (see `Drawing : Load Fonts`) will be used for the markers.
  `Size (Marker)` or `Size (Fill)`
    specifies the basic marker size or the unit size of the fill pattern (in `Drawing Coordinates`), depending on the current `Representation`.
  `Fill Type`
    specifies a hatch pattern (a combination of horizontal, vertical, and diagonal lines) or a bit-mapped pattern. The bit-mapped patterns are only scaled to a limited number of sizes (integer multiples of the original pattern), so don't be surprised if a small change to `Size (Fill)` has no effect.
  `Line Width`
    specifies the width of the lines (in `Drawing Coordinates`). If the line width is 0, the lines will not be drawn.
  `Line Type`
    specifies the dash-space pattern which is used repeatedly when representations with lines are drawn. At the end of the line type list are line types that are not dash-space patterns (for example, `Parallel, Railroad, Disjoint`). `Disjoint` is unusual in that it draws a line between points 1 and 2, 3 and 4, 5 and 6, etc., but not between points 2 and 3, 4 and 5, 6 and 7, etc.
  `Line Dashsize`
    specifies the size (in `Drawing Coordinates`) of the dashes and spaces that make up the line types. For non dash-space line types, it specifies the size of the dominant feature (for example, the distance between the parallel lines).
  `Error Width`
    specifies the width of the error bar lines (in `Drawing Coordinates`).
  `Z Division 1, 2 (.list)`
    This is used by most of the `Grid` `Dataset Representations` to indicate where to divide the Z axis into different levels (for example, where contour lines are drawn). The `Z Division 1` values are used for primary divisions (for example, bolder and labelled contour lines). The `Z Division 2` values are used for secondary divisions. You can enter different things in these fields:
    - "." - A period tells the program to use the default values, based on the Z Axis Type and Range. The defaults match the values of the default locations for `Z Axis : Ticks 1` or `Ticks 2`, respectively.
    - One value - tells the program to divide the Z Axis Range (for example, `0` to `100`) at levels that are that distance apart (for example, `25`).
    - A comma-separated-value list - A list of values separated by commas tells CoPlot exactly where you want the divisions to be (for example, `0, 25, 50, 75, 100`).
  `Legend`
    specifies the text that will be used to identify this dataset in the `Legend`. If this is ".", the default will be used (usually, the Y or Z variable). If this is "" or if the text is just one big HTML comment (starting with "`<!--`" and ending with "`-->`"), there will be no entry in the legend for this dataset.

    The '`&`' button lets you pick and insert character entities (HTML-like names for non-ASCII characters) into the text.

    The '`<>`' button lets you insert embedded text tags (which control bold, italics, underlining, font changes, size changes, etc).

    Because this legend entry will become part of the complete legend, it is important that all attribute starting tags (for example, '`<b>`') have matching attribute ending tags (for example, '`</b>`') so that the attributes don't apply to all subsequent entries in the legend.

    `Dataset: Legend` handles most tags correctly, even tags that make the text more than one line (for example, `<BR>` and `<P>`).

  `Keep If`
    specifies a boolean equation which is applied to each row of the data file and which determines which rows will be used when plotting the data. The result of the equation should be `true` or `false`; numeric values will be interpreted as 0 is `false`, everything else is `true`. The equation can refer to the numbers in the various columns (for example, `col(2)>=20 & col(4)*2<col(5)`. See Using Equations in the CoStat Manual (costat.htm).

    For `Grid/2D` and `Grid/3D` dataset representations, when `Keep If` is `false` for a given row, it is as if the z value for that row is a missing value. `Keep If` does not act as if that row of data were removed, since that would destroy the integrity of the grid.

  `A`
    This leads to a list of characters (#32 to #255, as defined by the ISO 8859-1 Character Encoding). If you click on a character, it will be inserted into the textfield at the current insertion point.
  `f()`
    has a list of functions (and other things) that you can put in the equation. If you click on a function, it will be inserted into the equation at the current insertion point. The list includes:
    - Data file column numbers and names (for example, "`col(3) Height`") - so you can reference values in various columns in the data file. Note that equations shouldn't reference the column name (for example, "`col(3)`" is inserted, not "`col(3) Height`").
    - Functions (for example, "`sin(x)`") - The parameters for the functions are described tersely, but basically: b=any boolean expression, d=any numeric (double) expression, i=any integer expression, s=any string expression, and v=void (no return value).
    - Constants (for example, "`pi`").
    - Operators (for example, "`*`").
    See Using Equations in the CoStat Manual (costat.htm).

  Menu Tree / Index

  ## Edit : Graph : Dataset : Representations

  Datasets can be represented (drawn) in many ways on a graph (for example, as lines, as markers, or as a filled area). Most representations are only available on some types of graphs (for example, `Bars/3D` is not available on 2D graphs). Representations are specified with the `Representation` attribute on the `Edit : Graph : Dataset` dialog box.

  Speed - There is considerable variation in the time required to draw the data with different representations. If you are working with a large datafile, you may want to choose a faster representation while setting up a graph and switch to a preferred but slower representation when printing the graph.

  - Solid lines are drawn faster than dashed lines.
  - Markers drawn with straight lines and/or rectangles (like '`+`', square, and filled square) are drawn faster than rounded markers (like circles and filled circles).
  - Some "`Grid`" representations are drawn much faster than others. For example, you might use `Grid/2D/colored blocks/1 point` (which is fast) and switch to your favorite (but slower) representation (for example, `Grid/2D/bold nth line`) right before printing the graph.

  Related Settings - Usually, all attributes related to a part of a graph can be found on the dialog box for that part of the graph (for example, `Edit : Graph : Dataset : 1`). Sometimes there are related settings in other dialog boxes.

  - The `Edit : Graph : Axis : Overview` dialog box has several "wizards" (`Color, Division 1, Division 2,` and `Visible`). When you change one of these settings, CoPlot actually makes several changes to several individual parts of the graph.
  - The `Edit : Graph : Graph : Overview` dialog box has some settings that apply to all datasets (`Dataset Labels Font`, and `Dataset Labels Font Style`) and to all datasets and functions (`Draw Color Arrays Dark To Light`).
  - The `Drawing : Other` dialog box has several settings which apply to all Graph objects, including:`
    - Minimum Line Width
    - Draw bold markers
    - Draw lines through markers
    - Draw error bars through markers
    - Draw caps on error bars
    - Missing values make gaps
    `

  Labels? Many representations (for example, most of the `Bar` representations, `Markers/labels` and `Wind barb`) support an optional `Label` column which provides formatted numbers or text strings to be used as labels for the data points. For all of these representations, the text strings can include HTML-like embedded text tags (like '`<b>`' for bold) and character entities (like "`&alpha;`" for the Greek letter alpha). The font used for the labels is controlled by `Edit : Graph : Graph : Overview : Dataset Labels Font` and `Dataset Labels Font Style`.

  3D Graphs - Many representations can be used on 2D and/or 3D graphs.

  If a 2D-only representation is drawn on a 3D graph,
    it will be drawn on the XY plane. For example, `Bars/2D` works this way.
  If a 2D/3D representation is drawn on a 2D graph,
    the Z column data (if any) is ignored. For example, `Line` works this way.
  If a 2D/3D representation is drawn on a 3D graph,
    if a Z column is specified, the 3D form of the representation will be used; otherwise, the 2D form is drawn on the XY plane. For example, `Line` works this way.

  Data For `Grid` Representations (for contour graphs) - All of the representations that start with `"Grid"` require gridded data. These are the representations that are used to make contour graphs and other, related graphs. Gridded data has at least three columns (representing X, Y, and Z values) with a data point for each X,Y point on a rectangular grid. If the data isn't properly gridded, CoPlot will show you an error message telling you so.

  Here are some graphs which plot gridded data.

  Gridding
    Given a set of values along the X axis and a set of values along the Y axis, the gridded data must contain a data point for every combination of the X and Y values. If you have scattered data (data that isn't already gridded), you can use CoStat's `Transformations : Grid` to grid it. If your data is already gridded (from the original source of the data), you don't need to re-grid it in CoStat, but make sure that all the necessary points are present and that the data is properly sorted.
  Sort order
    The grid data must be sorted by the X and Y values, in ascending order. The data may be sorted with X varying the fastest or Y varying the fastest. You may use CoStat's `Edit : Sort` procedure to sort the data.
  Missing values
    There must be no missing values in the X and Y columns for the X,Y points on the grid. If the data file has additional rows beyond what are needed for the grid, the X and Y columns must have missing values for those rows. The Z column can have missing values anywhere. Missing Z values cause holes when the data representation is drawn. This can be a good thing, for example, to identify areas for which there was no data collected or to identify areas where you don't want anything plotted.
  Here is a tiny example of gridded data:

      X     Y     Z
      10    10    12.3
      10    20    13.4
      10    30    14.3
      20    10    10.2
      20    20    12.5
      20    30    15.7

  Colors For `Grid` Representations - Many of the `Grid` representations use a series of colors for the different contour levels on the Z axis.

  The `Background Color` is the Basis Color
    The `Graph : Dataset : Background Color` that you specify is used as the basis for the series of colors. For example:
    Medium Colors
      If you choose a medium color, like Red4, the colors in the series will range from Red9 (dark red, almost black, at the low end of the Z axis) to Red0 (light red, almost white, at the high end of the Z axis), centered at Red4.
    Light Colors
      If you choose a lighter color, like Red2, the colors in the series will still range from Red9 to Red0, but will be centered at Red2, giving you a lighter series of colors.
    Dark Colors
      If you choose a darker color, like Red7, the colors in the series will still range from Red9 to Red0, but will be centered at Red7, giving you a darker series of colors.
    White
      If white is the basis color, you will get a rainbow of colors in the progression of violet (at the low end of the Z axis), blue, green, yellow, orange, and red (at the high end of the Z axis).
    Black
      If black is the basis color, you will get a rainbow of colors in the progression of red (at the low end of the Z axis), orange, yellow, green, blue, violet (at the high end of the Z axis).
  The Order of Colors
    If `Edit : Graph : Overview : Draw Color Arrays Dark To Light` is checked, the colors will range from dark (for example, Red9 at the low end of the Z axis range) to light (for example, Red0 at the high end of the Z axis range). If it is not checked, the color order will be reversed.
  The Number Of Colors
    CoPlot will use a separate color for each unique value generated by `Z Division 1 and 2`. In creating the colors, CoPlot is not constrained to choose just colors in the standard CoPlot color palette; it will interpolate.
  In The `Legend`
    You can choose how many colors in the color series appear in the `Legend` with `Graph : Legend : Grid Colors`. You can choose from:
    - `Display Main Color` - just displays the one basis color that you specified.
    - `Display Bold Colors` - displays just the `Graph : Dataset (or Function) : Z Division 1` colors.
    - `Display All Colors` - displays all of the `Graph : Dataset (or Function) : Z Division 1` and `Z Division 2` colors.

  Here is a description of all of the dataset representations:

  `Bars/2D`
    On most 2D graphs and on the XY plane of 3D graphs, if none of the optional data columns are used, this draws a bar centered along the line from X,0 to X,Y for each row of data with a valid X,Y value. The width of the bar is specified by the `Size (Bar Width)` attribute. You can specify the optional `Base X` and/or `Base Y` columns, so the bar can be drawn from BaseX,BaseY to X,Y. You can specify the optional `Low Y Error` and/or `High Y Error` columns, so the bar can have error bars. You can specify an optional `Label` column, which provides a formatted number or a text string for labels which are drawn at the top of the bars. The font used for the labels is controlled by `Edit : Graph : Graph : Overview : Dataset Labels Font` and `Dataset Labels Font Style`. See also the `Histogram` representation, which is vaguely similar, but requires that the data be sorted by X, and which draws the bars left-justified at Xi.
  `Bars/3D`
    On 3D graphs, for each row of data with a valid X,Y,Z point, CoPlot draws a 3D bar centered along the line from X,Y,0 to X,Y,Z. You can specify an optional `Base Z` column, so the bar can be drawn from X,Y,BaseZ to X,Y,Z. You can specify an optional `High Z Error` column, so the bar can have an error bar. You can specify an optional `Label` column, which provides a formatted number or a text string for labels which are drawn at the top of the bars. The font used for the labels is controlled by `Edit : Graph : Graph : Overview : Dataset Labels Font` and `Dataset Labels Font Style`. `Bars/3D` usually looks best when `Fill Type` is set to `0) (Empty)`.

    Because `Bars/3D, Bars/3D pyramids,` and `Bars/3D simple` can plot scattered XYZ data, they are a useful alternative to all of the `Grid` representations (which require gridded data) in situations where you don't want to grid the data. (If your data is gridded, you may want to use one of the `Grid` representations, notably the `Grid/3D histogram` representation which is very similar to `Bars/3D`.) Because the data can have scattered XY values, CoPlot is careful to z-sort the data internally when drawing the bars so that the bars in the back appear to be behind the bars in front, no matter what `Graph : Overview : 3D Spin Angle` is set to.

  `Bars/3D pyramids`
    This is just like `Bars/3D` except that it draws pyramids instead of boxes.
  `Bars/3D simple`
    This is just like `Bars/3D` except that it draws simpler, 2D-style bars instead of 3D-style bars.
  `BarGraph/100%`
    On XY graphs, CoPlot counts how many datasets are using this representation. It then draws a stack of bars, centered at x=1, for the data on the first row of the data file. In the stack, there is one bar per dataset with this representation. The stack of bars is stretched or contracted to force the stack height to be 100. Additional clusters of bars are drawn at x=2,3,4,... for the data on the 2nd, 3rd, 4th, ... rows of the data file. When this representation is in use, the default Y axis low value is 0.
  `BarGraph/Grouped`
    On XY graphs, CoPlot counts how many datasets are using this representation. CoPlot then draws a group of bars, clustered at x=1, for the data on the first row of the data file. In the cluster, there is one bar for each dataset with this representation. Additional clusters of bars are drawn at x=2,3,4,... for the data on the 2nd, 3rd, 4th, ... rows of the data file. When this representation is in use, the default Y axis low value is 0. Optionally, you can specify a column with formatted numbers or text strings to be used as `Labels` (which appear just above the bars), or one or two columns with data for Error Bars. The font used for the labels is controlled by `Edit : Graph : Graph : Overview : Dataset Labels Font` and `Dataset Labels Font Style`.
  `BarGraph/Stacked`
    On XY graphs, CoPlot counts how many datasets are using this representation. It then draws a stack of bars, centered at x=1, for the data on the first row of the data file. In the stack, there is one bar for each dataset with this representation. Additional stacks of bars are drawn at x=2,3,4,... for the data on the 2nd, 3rd, 4th, ... rows of the data file. When this representation is in use, the default Y axis low value is 0.
  `Box & whisker`
    On most 2D graphs and on the XY plane of 3D graphs, given 6 columns of data (`X, Minimum, 1st Quartile, Median, 3rd Quartile, Maximum`), CoPlot draws a box with whiskers (which look like error bars) for each row of data. `Line Width` sets the width of the lines between boxes (0=none). `Error Width` sets the width of the lines used to draw the box and whiskers (0 represents `Drawing : Other : Minimum Line Width`).
  `Fill above`
    On most 2D graphs and on the XY plane of 3D graphs, given 2 columns of data (`X,Y`), this draws a line connecting the data points and fills the area above this line (to the top of the graph).
  `Fill below`
    On most 2D graphs and on the XY plane of 3D graphs, given 2 columns of data (`X,Y`), this draws a line connecting the data points and fills the area below this line (to the bottom of the graph).
  `Fill between 2 Y`
    On most 2D graphs and on the XY plane of 3D graphs, given 3 columns of data (`X,Y1,Y2`), this draws a line through the X,Y1 points and continues the line by drawing backwards through the X,Y2 points. The area defined by the line is then filled.
  `Fill inward`
    On most 2D graphs and on the XY plane of 3D graphs, given 2 columns of data (`X,Y`), this draws a line connecting the data points and fills the area bounded by the line.
  `Fill outward`
    On most 2D graphs and on the XY plane of 3D graphs, given 2 columns of data (`X,Y`), this draws a line connecting the data points and fills the area not bounded by the line.
  `Fill zero`
    On most 2D graphs and on the XY plane of 3D graphs, given 2 columns of data (`X,Y`), this draws a line connecting the data points and fills the area below this line (to y=0).
  `Fill/staircase/HorVer`
    On most 2D graphs and on the XY plane of 3D graphs, given 2 columns of data (`X,Y`), this draws a horizontal line and then a vertical line between each point. The area below the line is filled with the `Background Color` and `Fill Color/Type`.
  `Fill/staircase/VerHor`
    On most 2D graphs and on the XY plane of 3D graphs, given 2 columns of data (`X,Y`), this draws a vertical line and then a horizontal line between each point. The area below the line is filled with the `Background Color` and `Fill Color/Type`.
  `Grid/2D/bold nth line`
    On most 2D graphs and on the XY plane of a 3D graph, given gridded X,Y,Z data, this draws a series of contour lines. The contour lines associated with `Z Division 1` levels are labelled and are 2 times as wide as the `Z Division 2` lines. The font used for the labels is controlled by `Edit : Graph : Graph : Overview : Dataset Labels Font` and `Dataset Labels Font Style`. See also Data For Grid Representations.
  `Grid/2D/bold nth spline`
    On most 2D graphs and on the XY plane of a 3D graph, given gridded X,Y,Z data, this draws a series of smoothed contour lines (splines). The spline algorithm is simply based on the points in a given line and does not guarantee that adjacent contour lines won't cross, so it isn't appropriate for all datasets. If it isn't right for your dataset, switch to `Grid/2D/bold nth line` or consider re-gridding the data with a grid that has more points. The contour lines associated with `Z Division 1` levels are labelled and are 2 times as wide as the `Z Division 2` lines. The font used for the labels is controlled by `Edit : Graph : Graph : Overview : Dataset Labels Font` and `Dataset Labels Font Style`. See also Data For Grid Representations.
  `Grid/2D/colored blocks/1 point`
    On most 2D graphs and on the XY plane of a 3D graph, given gridded X,Y,Z data, this plots a surface. Each rectangle on the surface is colored based on the Z value at the Xminimum,Yminimum point in the rectangle. See also Data For Grid Representations.
  `Grid/2D/colored blocks/4 points`
    On most 2D graphs and on the XY plane of a 3D graph, given gridded X,Y,Z data, this plots a surface. Each rectangle on the surface is colored based on the average of the Z values at the four corners of the rectangle. See also Data For Grid Representations.
  `Grid/2D/colored surface`
    On most 2D graphs and on the XY plane of a 3D graph, given gridded X,Y,Z data, this colors the areas between contour lines. The colors indicate the contour levels. See also Data For Grid Representations.
  `Grid/2D/line color`
    On most 2D graphs and on the XY plane of a 3D graph, given gridded X,Y,Z data, this draws a series of colored contour lines. The colors indicate the contour level. The contour lines associated with `Z Division 1` levels are labelled. The others are not. The font used for the labels is controlled by `Edit : Graph : Graph : Overview : Dataset Labels Font` and `Dataset Labels Font Style`. See also Data For Grid Representations.
  `Grid/2D/line dashsize`
    On most 2D graphs and on the XY plane of a 3D graph, given gridded X,Y,Z data, this draws a series of dashed contour lines. The dash size indicates the contour level. If there are n `Z Division 1 and 2` levels, the first contour line gets a minimal dashsize and the nth contour line gets the dashsize specified by the `Line Dashsize` attribute. The contour lines associated with `Z Division 1` levels are labelled. The others are not. The font used for the labels is controlled by `Edit : Graph : Graph : Overview : Dataset Labels Font` and `Dataset Labels Font Style`. See also Data For Grid Representations.
  `Grid/2D/line width`
    On most 2D graphs and on the XY plane of a 3D graph, given gridded X,Y,Z data, this draws a series of wide contour lines. The line width indicates the contour level. If there are n `Z Division 1 and 2` levels, the first contour line gets a minimal line width and the nth contour line gets the line width specified by the `Line Width` attribute. The contour lines associated with `Z Division 1` levels are labelled. The others are not. The font used for the labels is controlled by `Edit : Graph : Graph : Overview : Dataset Labels Font` and `Dataset Labels Font Style`. See also Data For Grid Representations.
  `Grid/3D/colored blocks/1 point`
    On 3D graphs, given gridded X,Y,Z data, this plots a surface. Each rectangle on the surface is colored based on the Z value at the Xminimum,Yminimum point in the rectangle. See also Data For Grid Representations.
  `Grid/3D/colored blocks/4 points`
    On 3D graphs, given gridded X,Y,Z data, this plots a surface. Each rectangle on the surface is colored based on the average of the Z values at the four corners of the rectangle. See also Data For Grid Representations.
  `Grid/3D/colored surface`
    On 3D graphs, given 3 columns of data (`X,Y,Z`) given gridded X,Y,Z data, this colors the areas between contour lines. The colors indicate the contour levels. See also Data For Grid Representations.
  `Grid/3D/histogram`
    On 3D graphs, given gridded X,Y,Z data, this plots a 3D block for each data point. The base of a block extends from Xi to Xi+1, and Yj to Yj+1 Thus, there is no space between the blocks in the X or Y direction. The height of each block is based on the Z value at the Xi,Yj point of the block. This representation is useful for plotting data from CoStat's `Statistics : Frequency Analysis : Cross Tabulation` when you have cross tabulated two columns of data. See also Data For Grid Representations. See also the `Bars/3D` representation, which is very similar, but doesn't require the data to be gridded.
  `Grid/3D/one color`
    On 3D graphs, given gridded X,Y,Z data, this plots a surface. Each rectangle on the surface is drawn with the same color. See also Data For Grid Representations.
  `Grid/3D/one color with sides`
    On 3D graphs, given gridded X,Y,Z data, this plots a surface with sides (extending from the surface to the XY plane). Each rectangle on the surface and on the sides is drawn with the same color. See also Data For Grid Representations.
  `Grid/3D/pyramids`
    This is just like `Grid/3D/histogram` except that it draws pyramids instead of boxes.
  `Grid/3D/transparent`
    On 3D graphs, given gridded X,Y,Z data, this plots a wireframe (rectangles with no background color). See also Data For Grid Representations.
  `High Low Open Close`
    On most 2D graphs and on the XY plane of a 3D graph, given three columns of data (`X, Low, High`) (and optionally `Open` and `Close`), this plots a vertical line (based on `X, Low, High`) with a tick to the left (`Open`) and a tick to the right (`Close`) for each row of data.
  `Histogram`
    On most 2D graphs and on the XY plane of a 3D graph, given two columns of data (`X,Y`), this plots a series of rectangles, each with a base from Xi to Xi+1 and a height from 0 to Yi. Thus, there is no space between the rectangles horizontally. This representation is useful for plotting data from CoStat's `Statistics : Frequency Analysis : Cross Tabulation` when you have cross tabulated one column of data. The data must be sorted by the X values, in ascending order. Usually, the X values are evenly spaced, but they don't have to be. Whenever there is a gap in the X values, or at the end of the file, CoPlot guesses how wide the rectangle should be, based on the width of the last rectangle. See also the `Bars/2D` representation, which is very similar, but doesn't require the data to be sorted by X, and which draws the bars centered at Xi.
  `Line`
    On 2D graphs, given 2 columns of data (`X,Y`), this draws a line connecting the data points. You can specify the optional `Low X Error, High X Error, Low Y Error, High Y Error` columns, and/or `Low Z Error, High Z Error` columns to plot error bars.

    On 3D graphs, if the Z variable is valid, this draws a 3D line connecting the data points. If the Z variable is `Not Used`, a 2D line is drawn on the XY plane.

  `Line/staircase/HorVer`
    On most 2D graphs and on the XY plane of 3D graphs, given 2 columns of data (`X,Y`), this draws a horizontal line and then a vertical line between each point.
  `Line/staircase/VerHor`
    On most 2D graphs and on the XY plane of 3D graphs, given 2 columns of data (`X,Y`), this draws a vertical line and then a horizontal line between each point.
  `Markers`
    On 2D graphs, given 2 columns of data (`X,Y`), this draws markers at the X,Y points and (if `Line Width >0`) a line connecting the markers. You can specify the optional `Low X Error, High X Error, Low Y Error, High Y Error` columns, and/or `Low Z Error, High Z Error` columns to plot error bars.

    On 3D graphs, if the Z variable is valid, this draws markers (and lines, if `Line Width > 0`) in 3D space. If the Z variable is `Not Used`, the markers (and lines) are drawn on the XY plane.

  `Markers+-error`
    This is like "Markers" but takes just optional columns `X Error, Y Error,` and `Z Error` which should contain the +- value (e.g., the standard deviation). This representation automatically plots, for example, Y - YError and Y + YError. This is available on all types of graphs.
  `Markers/labels`
    On 2D graphs, given 3 columns of data (`X,Y,Labels`), this draws markers with labels at each data point. The font used for the labels is controlled by `Edit : Graph : Graph : Overview : Dataset Labels Font` and `Dataset Labels Font Style`. If `Line Width` is greater than 0, a line is drawn connecting them.

    On 3D graphs, given 4 columns of data (`X,Y,Z,Labels`), this draws markers with labels at each data point. If `Line Width` is greater than 0, a line is drawn connecting them. If Z is `Not Used`, the markers and line are plotted on the XY plane.

    If you just want to label a few X,Y points and don't already have the labels in a datafile, consider using `Graph : Comment` instead. If you click on the graph, it will find the nearest data point, and let you create a label at that X,Y location on the graph.

  `Markers/nth point`
    This is very similar to `Markers`, but only draws markers at every nth point. If `Line Width>0`, a line is drawn connecting all of the points (not just the nth points). This is useful if the data points are so close together that all of the markers would overlap if you used the `Markers` representation.

    On 2D graphs, given 2 columns of data (`X,Y`), this draws markers at the X,Y points and (if `Line Width >0`) a line connecting the markers. You can specify the optional `Low X Error, High X Error, Low Y Error, High Y Error` columns, and/or `Low Z Error, High Z Error` columns to plot error bars.

    On 3D graphs, if the Z variable is valid, this draws markers (and lines) in 3D space. If the Z variable is `Not Used`, the markers (and lines) are drawn on the XY plane.

  `Markers/variable`
    On 2D graphs, given 4 columns of data (`X,Y,` and optionally `Type` and `Size`), this draws a marker of varying type and size at each data point. This is useful when you want each marker to convey additional information. If `Type` is set to `unused`, all of the markers will be drawn with the same `Marker Type`, as specified below. If `Size` is set to `unused`, all of the markers will be drawn with the same `Size (Marker)`, as specified below.

    `Type` lets you specify a column of the datafile with the marker character numbers (32 to 127) to be used for each point to be plotted. For example, a filled square is #66. You can see the markers in the Marker font and their character numbers by choosing `Edit : Graph : Dataset : x : Marker Type`. Or, you may want to use CoPlot's `File : Open : GIF` to view and print the chart of the characters in the Marker font which is in the fsmarker.gif file in the cohort directory. For fonts other than the Marker font, the character numbers correspond to the standard ASCII character numbers (see helvet.gif in the cohort directory). Hint: In order to set up the data for this column, you might use CoStat's `Transformations : If Then Else (Numeric)` several times, to assign values to the `Type` column based on different `If` and `Then` equations (with the `Else` equation leaving the value in the `Type` column unchanged).

    `Size` - The values in the `Size` column determine the relative size of the markers. To do this, CoPlot determines the maximum value in the `Size` column. It then associates that value with the maximum physical marker size as specified by `Size (marker)`, below. Values less than the maximum in the `Size` column result in proportionally smaller markers.

    On 3D graphs, if a Z column is also specified, this draws the markers in 3D space. If the Z column is `Not Used`, the markers are drawn on the XY plane.

  `Markers/variable/color`
    This is like `Markers/variable`, but with an additional, required `Color` variable. `Color` is required because the color array will be displayed in the legend. This representation is a good substitute for the colored `Grid/2D` representations when the data isn't gridded and you don't want to grid it. [Added in version 6.100.]

    `Color` - CoPlot looks at the data and chooses a "nice" range for the virtual axis. (The virtual axis type is always linear.) `Dataset : x : Z Divisions 1,2` then determine the color boundaries (as for other color array representations) and which colors appear in the legend (`Legend : Grid Colors`).

  `Spline`
    On 2D graphs, given 2 columns of data (`X,Y`), this draws a marker at each data point and (if `Line Width>0`) a smoothed line (a spline) connecting the data points. You can specify the optional `Low X Error, High X Error, Low Y Error, High Y Error` columns, and/or `Low Z Error, High Z Error` columns to plot error bars.

    On 3D graphs, if a Z column is also specified, this draws the markers and spline in 3D space. If the Z column is `Not Used`, the markers and spline are drawn on the XY plane.

  `Vector`
    On most 2D graphs, given 4 columns of data (`X,Y, Size, Angle` in floating-point, counter-clockwise degrees), this draws vectors (arrows) based at the points defined by x,y.

    On 3D graphs, if `Z` and `Attitude` (the angle in floating-point, counter-clockwise degrees relative to the XY plane) columns are specified, the vectors are drawn in 3D space; otherwise, the vectors are drawn on the XY plane.

    - The length of each vector is determined by the `Size` column -- the lengths are scaled so that the vector with the biggest absolute value in that column has the length as defined by `Size (Maximum)`. Smaller values in the column lead to proportionally shorter vectors. When the value is 0, the vector has length 0. When the value is less than 0, the vector extends in the opposite direction.
    - The direction of the vector is determined by the `Angle` column. It assumes the angles are in degrees, where 0 degrees is drawn at 3 o'clock and the angles progress counterclockwise. If your angle data is based at 0 degrees at 12 o'clock and or counter clockwise use `Transformations : Transform` in the datafile editor.
    - `Line Width` sets the width of the lines between vectors (0=none). `Error Width` sets the width of the lines used to draw the vector (0=`Drawing : Other : Minimum Line Width`).
  `Wind barb`
    On most 2D graphs, given 4 columns of data (`X,Y, Speed, Angle,` and optional `Labels`), this draws wind barbs with the bases at the points defined by X,Y. On 3D graphs, if `Z` and `Attitude` (the angle in floating-point, counter-clockwise degrees relative to the XY plane) columns are specified, the windbarbs are drawn in 3D space; otherwise, the windbarbs are drawn on the XY plane. Wind barbs are used on weather maps to indicate the direction and magnitude of the wind.
    - All the wind barbs are the same length. The length of the wind barbs is determined by `Size (Maximum)`.
    - The `Speed` data determines which barbs are visible -- the triangle is worth 50 units; each full barb is worth 10; each 1/2 barb is worth 5. Positive speeds are drawn with clockwise barbs. Negative speeds are drawn with counter clockwise barbs. A negative speed does not reverse the direction of the barb. Speed values from -130 to 130 can be plotted. The speed is rounded to the nearest 1/2 barb; thus, 1/2 barb indicates a speed of 2.5 to 7.4999 units.
    - The angle of the barb is determined by the `Angle` data, in degrees with 0 degrees at 3 o'clock and the angles progressing counter clockwise. If your angle data is based at 0 degrees at 12 o'clock and or counter clockwise use `Transformations : Transform` in the datafile editor.
    - If the `Label` column is specified, the label is written beyond the end of the barb; this can be used to indicate some other value (for example, barometric pressure). The text is always automatically drawn right side up. The font used for the labels is controlled by `Edit : Graph : Graph : Overview : Dataset Labels Font` and `Dataset Labels Font Style`.
    - `Line width` sets the width of the lines between boxes (0=none). `Error width` sets the width of the lines used to draw the box and whiskers (0=`Drawing : Other : Minimum line width`).

  Menu Tree / Index

  ## Edit : Graph : Dataset : Regression

  There is a "`Regression`" button on the `Edit : Graph : Dataset` dialogs which lets you quickly do a regression for the current dataset. The regression takes into account the `X` and `Y` variables and the `Keep If` equation for the current dataset.

  This dialog box allows you to easily:

  - Generate one equation and store it as a `Graph : Function`.
  - Generate several equations each successively stored in the same `Graph : Function` slot. For example, you could generate `Polynomials` of `Degree 1`, then `Degree 2`, then `Degree 3`, and see how each looks by itself.
  - Generate several equations each stored separately in different `Graph : Function` slots. For example, you could generate `Polynomials` of `Degree 1`, then `Degree 2`, then `Degree 3`, with each one stored as a different `Graph : Function`. This allows you to visually compare the different regressions.

  After using this procedure, you may wish to use `Edit : Graph : Function` to edit the attributes of the function(s) you have created. For example, you might want to change the color or line type of the function. Or, you may wish to delete the function.

  The options on the dialog box are:

  `1) Save result as Graph : Function #`
    lets you specify in which `Graph : Function` slot the resulting equation will be stored. If you choose `New Function`, a new function will be created to hold the result.
  `2a) Select a standard function`
    as soon as you select one of the standard functions, CoPlot will perform the regression and plot the resulting equation. The standard functions are all linear or linearizable equations, and therefore can be solved very quickly by CoPlot.
  `2b) Or, enter an equation: y =`
    as soon as you enter an equation (type it, then press `Enter`), CoPlot will perform the regression and plot the resulting equation. Equations should refer to one or more unknown values, named `u1, u2, u3, ... u9`. For example, `e^(u1+u2*x)`. Equations can use other functions, too (the `f()` option will automatically insert functions into the equation at the current insertion point). See Using Equations in the CoStat Manual (costat.htm). CoPlot will try to find the best values for these unknowns.

    If you use the 2b option, the regression is solved as a nonlinear regression, whether the equation is nonlinear or not. Nonlinear regressions are solved iteratively, and thus may take longer for CoPlot to solve. You can click on the status line in CoPlot to cancel the regression.

  Menu Tree / Index

  ## Edit : Graph : Function

  The `Edit : Graph` `: Function` dialog lets you create and edit functions. Each function has attributes which specify what the function is and how it will be plotted on the graph. See also the separate list of `Function Representations`.

  When you create a graph, it initially has no functions. To create a new function, you must drop down the `Function` list on the `Edit : Graph` dialog box and click on `New Function`. Then, `Function 1` will be created and added to the list.

  Related Settings - Usually, all attributes related to a part of a graph can be found on the dialog box for that part of the graph (for example, `Edit : Graph : X Axis : Title 1`). Sometimes there are related settings in other dialog boxes.

  - The `Edit : Graph : Axis : Overview` dialog box has several "wizards" (`Color, Division 1, Division 2,` and `Visible`). When you change one of these settings, CoPlot actually makes several changes to several individual parts of the graph.
  - The `Edit : Graph : Graph : Overview` dialog box has some settings that apply to all datasets (`Dataset Labels Font`, and `Dataset Labels Font Style`) and to all datasets and functions (`Draw Color Arrays Dark To Light`).
  - The `Drawing : Other` dialog box has several settings which apply to all Graph objects, including:`
    - Minimum Line Width
    - Draw bold markers
    - Draw lines through markers
    - Draw error bars through markers
    - Draw caps on error bars
    - Missing values make gaps
    `

  The options on the dialog box are:

  `Which Function`
    lets you specify which function to edit (`All`, or `1 - n`).

    To create a new function, you must drop down the current list of functions and click on `New Function`. Another number (n+1) will be added to the list.

  `Up`
    moves the currently selected function up one slot. The order of functions in the list determines the order in which they are drawn whenever the drawing is redrawn. Earlier functions may be partially or completely hidden by later functions.
  `Down`
    moves the currently selected function down one slot. The order of functions in the list determines the order in which they are drawn whenever the drawing is redrawn. Earlier functions may be partially or completely hidden by later functions.
  `Copy`
    makes a new function which is a copy of the currently selected function. The new function is inserted in the list right after the currently selected function, and it becomes the currently selected function.
  `Delete`
    deletes the currently selected function.
  `Equation`
    specifies the equation to be plotted. On 2D graphs, the equation can refer to '`x`' (for example, `24 + 10*x + 4*x^2`. If you refer to '`y`', `y` will be treated as 0.

    On 3D graphs, the equation can refer to '`x`' and '`y`' (for example, `24 + 10*x + 4*y + 2*x*y`. See Using Equations in the CoStat Manual (costat.htm).

  `A`
    has a list of characters (#32 to #255, as defined by the ISO 8859-1 Character Encoding). If you click on a character, it will be inserted into the textfield at the current insertion point.
  `f()`
    has a list of functions (and other things) that you can put in the equation. If you click on a function, it will be inserted into the equation at the current insertion point. The list includes:
    - Functions (for example, "`sin(x)`") - The parameters for the functions are described tersely, but basically: b=any boolean expression, d=any numeric (double) expression, i=any integer expression, s=any string expression, and v=void (no return value).
    - Constants (for example, "`pi`").
    - Operators (for example, "`*`").
    See Using Equations in the CoStat Manual (costat.htm).
  `Legend`
    specifies the text that will be used to identify this function in the legend. If this is ".", the default will be used (the equation itself). If this is "" or if the text is just one big HTML comment (starting with "`<!--`" and ending with "`-->`"), there will be no entry in the legend for this function.

    The '`&`' button lets you pick and insert character entities (HTML-like names for non-ASCII characters) into the text.

    The '`<>`' button lets you insert embedded text tags (which control bold, italics, underlining, font changes, size changes, etc).

    Because this legend entry will become part of the complete legend, it is important that all attribute starting tags (for example, '`<b>`') have matching attribute ending tags (for example, '`</b>`') so that the attributes don't apply to all subsequent entries in the legend.

    `Function: Legend` handles most tags correctly, even tags that make the text more than one line (for example, `<BR>` and `<P>`).

  `Representation`
    specifies how the data for this function will be represented. See `Graph : Function : Representations` for a complete list and description of the options.
  `Background Color`
    specifies the solid color to be used in the background of the function representation (if appropriate). If this is set to `notDrawn`, the background won't be drawn.
  `Color`
    specifies the color for the fill and/or line parts of the representation. If this is set to `notDrawn`, nothing will be drawn (and it is therefore a quick way to temporarily not draw this function, without losing the attributes).
  `Fill Type`
    specifies a hatch pattern (a combination of horizontal, vertical, and diagonal lines) or a bit-mapped pattern. The bit-mapped patterns are only scaled to a limited number of sizes (integer multiples of the original pattern), so don't be surprised if a small change to `Size (Fill)` has no effect.
  `Fill Size`
    specifies the unit size of the fill pattern (in `Drawing Coordinates`).
  `Line Type`
    specifies the dash-space pattern which is used repeatedly when line objects are drawn. At the end of the line type list are line types that are not dash-space patterns (for example, `Parallel, Railroad, Disjoint`). `Disjoint` is unusual in that it draws a line between points 1 and 2, 3 and 4, 5 and 6, etc., but not between points 2 and 3, 4 and 5, 6 and 7, etc.
  `Line Dashsize`
    specifies the size (in `Drawing Coordinates`) of the dashes and spaces that make up the line types. For non dash-space line types, it specifies the size of the dominant feature (for example, the distance between the parallel lines).
  `Line Width`
    specifies the width of the lines (in `Drawing Coordinates`).
  `X Evaluate`
    specifies the number of times the equation is evaluated while spanning the equation's range along the X axis (usually, the X axis range, but see `From` and `To` below). For 2D functions, 100 is the default and is usually sufficient. For 3D functions, a smaller number (25?) is more suitable.
  `Y Evaluate`
    (for 3D graphs) specifies the number of times the equation is evaluated while spanning the equation's range along the Y axis. 25 is the default.
  `Z Division 1, 2 (.list)`
    This is used by most of the `Grid` function representations to indicate where to divide the Z axis into different levels (for example, where contour lines are drawn). The `Z Division 1` values are used for primary divisions (for example, bolder and labelled contour lines). The `Z Division 2` values are used for secondary divisions. You can enter different things in these fields:
    - "." - A period tells the program to use the default values, based on the Z axis type and range. The defaults match the values of the default locations for `Z Axis : Ticks 1` or `Ticks 2`.
    - One value - tells the program to divide the Z axis range (for example, 0 to 100) at levels that are that distance apart (for example, `25`).
    - A comma-separated-value list - A list of values separated by commas tells CoPlot exactly where you want the divisions to be (for example, `0, 25, 50, 75, 100`).
  `From`
    (for 2D graphs) specifies the low end of the range for the function to be evaluated. Enter "." for the default (which is the low end of the X axis range). Using `From` and/or `To` lets you plot the equation over less than that full range of the X axis.
  `To`
    (for 2D graphs) specifies the high end of the range for the function to be evaluated. Enter "." for the default (which is the high end of the X axis range). Using `From` and/or `To` lets you plot the equation over less than that full range of the X axis.

  Menu Tree / Index

  ## Edit : Graph : Function : Representations

  Functions can be represented (drawn) in many ways on a graph.
  - Representations are specified on the `Edit : Graph : Function` dialogs.
  - Most representations are only available on some types of graphs (for example, all of the `Grid/3D` representations are not available on 2D graphs).
  - If you plot a 2D representation on a 3D graph, the function will be plotted on the XY plane.
  - If the equation you specify for a 2D representation refers to '`y`', `y` will be treated as 0.

  Speed - There is considerable variation in the time required to draw the functions with different representations, especially for the Grid representations. If you are working with a Grid representation, you way want to choose a faster representation while setting up a graph (for example, `Grid/2D/colored blocks/1 point`) and switch to your favorite (but slower) representation (for example, `Grid/2D/bold nth line`) right before printing the graph.

  Colors For `Grid` Representations - Many of the `Grid` representations use a series of colors for the different contour levels on the Z axis.

  The `Background Color` is the Basis Color
    The `Graph : Function : Background Color` that you specify is used as the basis for the series of colors. For example:
    Medium Colors
      If you choose a medium color, like Red4, the colors in the series will range from Red9 (dark red, almost black, at the low end of the Z axis) to Red0 (light red, almost white, at the high end of the Z axis), centered at Red4.
    Light Colors
      If you choose a lighter color, like Red2, the colors in the series will still range from Red9 to Red0, but will be centered at Red2, giving you a lighter series of colors.
    Dark Colors
      If you choose a darker color, like Red7, the colors in the series will still range from Red9 to Red0, but will be centered at Red7, giving you a darker series of colors.
    White
      If white is the basis color, you will get a rainbow of colors in the progression of violet (at the low end of the Z axis), blue, green, yellow, orange, and red (at the high end of the Z axis).
    Black
      If black is the basis color, you will get a rainbow of colors in the progression of red (at the low end of the Z axis), orange, yellow, green, blue, violet (at the high end of the Z axis).
  The Order of Colors
    If `Edit : Graph : Overview : Draw Color Arrays Dark To Light` is checked, the colors will range from dark (for example, Red9 at the low end of the Z axis range) to light (for example, Red0 at the high end of the Z axis range). If it is not checked, the color order will be reversed.
  The Number Of Colors
    CoPlot will use a separate color for each unique value generated by `Z Division 1 and 2`. In creating the colors, CoPlot is not constrained to choose just colors in the standard CoPlot color palette; it will interpolate.
  In The `Legend`
    You can choose how many colors in the color series appear in the `Legend` with `Graph : Legend : Grid Colors`. You can choose from:
    - `Display Main Color` - just displays the one basis color that you specified.
    - `Display Bold Colors` - displays just the `Graph : Function (or Dataset) : Z Division 1` colors.
    - `Display All Colors` - displays all of the `Graph : Function (or Dataset) : Z Division 1` and `Z Division 2` colors.

  Here is a description of all of the function representations:

  `Fill above`
    On most 2D graphs and on the XY plane of 3D graphs, given an equation referring to `x`, this fills the area above the equation (to the top of the graph).
  `Fill below`
    On most 2D graphs and on the XY plane of 3D graphs, given an equation referring to `x`, this fills the area below the equation (to the bottom of the graph).
  `Fill zero`
    On most 2D graphs and on the XY plane of 3D graphs, given an equation referring to `x`, this fills the area below the equation (to y=0).
  `Grid/2D/bold nth line`
    On most 2D graphs and on the XY plane of a 3D graph, given an equation referring to `x` and `y`, this draws a series of contour lines. The contour lines associated with `Z Division 1` levels are labelled and are 2 times as wide as the `Z Division 2` lines.
  `Grid/2D/bold nth spline`
    On most 2D graphs and on the XY plane of a 3D graph, given an equation referring to `x` and `y`, this draws a series of smoothed contour lines (splines). The spline algorithm is simply based on the points in a given line and does not guarantee that adjacent contour lines won't cross, so it isn't appropriate for all functions. If it isn't right for your function, switch to `Grid/2D/bold nth line` and consider increasing the `X Evaluate` and `Y Evaluate` values so that the grid has more points. The contour lines associated with `Z Division 1` levels are labelled and are 2 times as wide as the `Z Division 2` lines.
  `Grid/2D/colored blocks/1 point`
    On most 2D graphs and on the XY plane of a 3D graph, given an equation referring to `x` and `y`, this plots a surface. Each rectangle on the surface is colored based on the Z value at the Xminimum,Yminimum point in the rectangle.
  `Grid/2D/colored blocks/4 points`
    On most 2D graphs and on the XY plane of a 3D graph, given an equation referring to `x` and `y`, this plots a surface. Each rectangle on the surface is colored based on the average of the Z values at the four corners of the rectangle.
  `Grid/2D/colored surface`
    On most 2D graphs and on the XY plane of a 3D graph, given an equation referring to `x` and `y`, this colors the areas between contour lines. The colors indicate the contour levels.
  `Grid/2D/line color`
    On most 2D graphs and on the XY plane of a 3D graph, given an equation referring to `x` and `y`, this draws a series of colored contour lines. The colors indicates the contour level. The contour lines associated with `Z Division 1` levels are labelled. The others are not.
  `Grid/2D/line dashsize`
    On most 2D graphs and on the XY plane of a 3D graph, given an equation referring to `x` and `y`, this draws a series of dashed contour lines. The size of the dashes indicates the contour level. If there are n `Z Division 1 and 2` levels, the first contour line gets a minimal dashsize and the nth contour line gets the dashsize specified by the `Line Dashsize` attribute. The contour lines associated with `Z Division 1` levels are labelled. The others are not.
  `Grid/2D/line width`
    On most 2D graphs and on the XY plane of a 3D graph, given an equation referring to `x` and `y`, this draws a series of wide contour lines. The line width indicates the contour level. If there are n `Z Division 1 and 2` levels, the first contour line gets a minimal line width and the nth contour line gets the line width specified by the `Line Width` attribute. The contour lines associated with `Z Division 1` levels are labelled. The others are not.
  `Grid/3D/colored blocks/1 point`
    On 3D graphs, given an equation referring to `x` and `y`, this plots a surface. Each rectangle on the surface is colored based on the Z value at the Xminimum,Yminimum point in the rectangle.
  `Grid/3D/colored blocks/4 points`
    On 3D graphs, given an equation referring to `x` and `y`, this plots a surface. Each rectangle on the surface is colored based on the average of the Z values at the four corners of the rectangle.
  `Grid/3D/colored surface`
    On 3D graphs, given an equation referring to `x` and `y`, this colors the areas between contour lines. The colors indicate the contour levels.
  `Grid/3D/one color`
    On 3D graphs, given an equation referring to `x` and `y`, this plots a surface. Each rectangle on the surface is drawn with the same color.
  `Grid/3D/one color with sides`
    On 3D graphs, given an equation referring to `x` and `y`, this plots a surface with sides (extending from the surface to the XY plane). Each rectangle on the surface and on the sides is drawn with the same color.
  `Grid/3D/transparent`
    On 3D graphs, given an equation referring to `x` and `y`, this plots a wireframe (rectangles with no background color).
  `Line`
    On 2D and on the XY plane of 3D graphs, given an equation referring to `x`, this draws the line described by the equation.

  Menu Tree / Index

  ## Edit : Graph : Axis : Overview

  The `Edit : Graph` `: Axis : Overview` dialog lets you specify the `Axis Type` and range for an axis on a graph. Collectively, the axis ranges define the graph coordinate system, which determines where data points and functions are plotted on the graph.

  The options on the dialog box are:

  `Which Axis`
    lets you specify which axis to edit (`All, X, Y, Z,` or `T`).
  `Type`
    specifies the type of axis. The axis type partially determines where tick marks and labels are drawn. When you change the axis type, CoPlot automatically changes the axis label's format to an appropriate format, but you can change it manually (see `Edit : Graph : Axis : Labels`). For hints on working with date, time, degree, and pi values, see Entering Numeric Values in the CoStat Manual (costat.htm).

    The options are:

    `Linear Scale`
      is the standard, Cartesian coordinate axis. It is available for all graph types.
    `Julian -> Date`
      converts Julian dates (following the Lotus 1-2-3 convention of Jan 1, 1900=day 2) into the Year-Month-Date format. There are some "magic" numbers for special circumstances: For `Labels, Ticks 1, Ticks 2, Grid 1,` and `Grid 2`, if you set `Divisions` to 30 (or a multiple of 30, commonly: 30, 60, 90, 180, 360, 720, ...), the program will put items at monthly (or multi-monthly) intervals, properly accounting for the different numbers of days in different months. Also, setting `Divisions` to 360 will put items at yearly intervals.

      Similar to the multiples-of-30 system, you can also use multiples of 30 plus 1 (commonly: 31, 61, 91, 181, 361, 721, ...) to get the beginnings of months as if the year started Nov. 1. This is useful for hydrologists. hydrologists.

    `Seconds -> Time`
      converts a time (in seconds since midnight on the 0th day) into "Day x Hours:Minutes:Seconds.Decimal" format. If the value of day is 0, it is not displayed.
    `Degrees -> Deg°Min'Sec"`
      converts decimal degrees into Degrees°Minutes'Seconds" format. This is the default axis type for Conic, Mercator, and Orthographic graphs.
    `Pi`
      is similar to the linear axis, but the labels and ticks appear at multiples of pi.
    `Log Base 10`
      performs the log transformation of data and functions as they are plotted. The labels indicate the corresponding untransformed values. Values on this axis must be greater than 0. See Notes on Log Axes.
    `Double Log Base 10`
      is similar to the Log Base 10 Axis, but performs the log of the log transformation. Values on this axis must be greater than 1. See Notes on Log Axes.
    `Natural Log`
      is similar to the Log Base 10 Axis, but performs the natural log transformation. Values on this axis must be greater than 0.
    `Square Root`
      is similar to the Log Base 10 Axis, but performs the square root transformation. Values on this axis must be at least 0.
    `Normal Probability`
      plots data and functions on a normal probability scale. The data for this axis are often cumulative data divided by the maximum cumulative value, and therefore range from greater than 0 to less than 1. See Notes on Normal Probability Axes.
    `Standard Deviation`
      also plots on a normal probability scale, but the labels and ticks indicate the number of standard deviations from the mean. The data for this axis are often cumulative data divided by the maximum cumulative value and therefore range from greater than 0 to less than 1. The range for this axis type is usually about -4 to 4. See Notes on Normal Probability Axes.
    `Probit`
      also plots on a normal probability scale, but the labels and ticks indicate the number of probits (a contraction of '`prob`'ability un'`its`' -- standard deviations from the mean, plus 5). The data for this axis are often cumulative data divided by the maximum cumulative value, and therefore range from greater than 0 to less than 1. The range for this axis type is usually about 1 to 9, corresponding to -4 to 4 on the standard deviation axis. See Notes on Normal Probability Axes.

    Here are examples of the different axis types:

  `Low`
    specifies the numeric value associated with what is normally the low end of this axis. Actually, the `Low` value can be greater than the `High` value in order to flip the order of the axis. If you enter ".", the default (based on the range of any valid datasets and functions) will be used.
  `High`
    specifies the numeric value associated with what is normally the high end of this axis. Actually, the `Low` value can be greater than the `High` value in order to flip the order of the axis. If you enter ".", the default (based on the range of any valid datasets and functions) will be used.
  `Center`
    specifies the center value for this axis. You may want to change this if you want to shift the range of values displayed on the axis a little higher or lower.

    This value is not stored with the graph -- it is a reflection of the current `Low` and `High` values. If you change this value, CoPlot implements the change by changing the `Low` and `High` values

    One common use for this is when the graph is a map: this lets you center the axis on a specific latitude or longitude.

    Another common use for this is when data values on the X axis span a large range (for example, a time series) and the graph only displays a small portion of the X axis range. `Center` (particularly the `Center` '`+`' and '`-`' buttons and particularly with `Center Shift % = 100%`) lets you change the portion of the data which is visible.

  `Center Animation`
    This animates the graph by repeatedly increasing (or decreasing) the `Center`. This is useful if you have a data file with a large range of values on the X axis -- you can plot a small portion of the data's X axis range and then use the animation feature to scan the rest of the X axis range.

    To save the animation in an animated GIF file, use `File : Save As : Animated GIF (.gif)`. Note that you have to use `Add Frame` to save each frame (image) individually in the GIF file.

  `Frames Per Second`
    specifies the maximum speed of the animation. The animation won't go any faster than this speed, but if the frames take a long time to draw, the animation will go slower.
  `Center Shift %`
    specifies the percentage of the axis range (0 - 100%) which is shifted when you press the `Center` '`+`' or '`-`' button. Usually, it is useful to shift the axis a small amount (for example, 2%), but you can make the '`+`' and '`-`' buttons shift the axis by the entire range by setting this to 100%.
  `Range`
    specifies the range of the axis. If you change the range, the center of the axis stays at the same value, but the `Low` and `High` values are adjusted to account for the new axis range.

    This value is not stored with the graph -- it is a reflection of the current `Low` and `High` values. If you change this value, CoPlot implements the change by changing the `Low` and `High` values

  `Offset`
    specifies the distance (in `Drawing Coordinates`) that the axis line, ticks, labels, and titles are drawn outward from their normal position (`Offset=0`). Many people like the appearance of graphs with an offset of .25 inches or 1 cm.
  `Color`
    specifies the color to be used for that the axis line, ticks, labels, and titles. This is a "wizard" that goes into (and changes) all of the separate places (`X Axis : Axis Line : Color, X Axis : Ticks 1 : Color`, etc.) where the colors are stored for the axis line, ticks, labels, and titles. Only parts of the axis where the color is not `notDrawn` will be affected.
  `Division 1`
    specifies the distance between the `Ticks 1` and `Grid 1` lines and the `Labels`. This is a "wizard" that goes into (and changes) all of the separate places (`X Axis : Ticks 1 : Division, X Axis : Grid 1 : Division`, etc.) where these values are stored, and so is a quick way to make several changes to the graph.
  `Division 2`
    specifies the distance between the `Ticks 2` lines and between the `Grid 2` lines. This is a "wizard" that goes into (and changes) all of the separate places (`X Axis : Ticks 2 : Division, X Axis : Ticks 2 : Division`) where these values are stored, and so is a quick way to make several changes to the graph.
  `Visible`
    specifies where the `Axis Line, Ticks 1, Ticks 2, Labels` and `Title` are visible (on the `Main Axis`, the `Opposite Axis`, or `Both Axes`). This is a "wizard" that goes into (and changes) all of the separate places (`X Axis : Axis Line : Visible, X Axis : Ticks 1 : Visible`, etc.) where these values are stored, and so is a quick way to make several changes to the graph.

  Menu Tree / Index

  Notes on `Log Base 10` Axis and `Double Log Base 10` Type:

  If an axis type is `Log Base 10` or `Double Log Base 10`, the number of `Divisions` for `Labels, Ticks 1, Ticks 2, Grid 1,` and `Grid 2` lines indicates the number per decade (a span of 1 order of magnitude) instead of the number over the whole range. For example, if the number of `Divisions` for `Labels` is `3` and the range is 1 to 1000, there will be labels at 1, 2, 3, 10, 20, 30, 100, 200, 300, and 1000. If you set the number of `Divisions` for `Labels` to `1`, the labels will be printed as powers of 10, for example, 100, 101, 102, and 103. If you use negative numbers, you can get labels every -nth decade, for example, for a setting of `-2`, the labels will be printed only at 100 and 102.

  If the range on a log axis is relatively small (i.e., if the `High` divided by the `Low` is less than 5), a different system is used. CoPlot will automatically set the number of `Divisions` for `Labels` and `Ticks 1` to `10`. With these settings, CoPlot will print between 2 and 10 labels, total, depending on the range. If the number of labels actually printed is less than 4 then CoPlot will automatically set `Divisions` for `Ticks 2` to 10. This will cause 9 `Ticks 2` to be printed between each of the `Ticks 1`.

  If `Divisions` is set to a number in the range 11 to 99, CoPlot will print 9 ticks between each power of 10 (for example, if the low end of the range is 1.0: 1, 2, 3, 4, ... 9) and also print ticks at 1.1, 1.2, ... Divisions/10.

  Remember that the low end of the range of a Log base 10 axis must be greater than zero.

  Menu Tree / Index

  Notes on `Normal Probability, Standard Deviation,` and `Probit` Axis Types:

  These axis types can be used on any axis of most types of graphs. All of them print on a normal probability scale, but with different labelling. If `Axis: Type` is set to `Normal Probability` and the data has of range of 0.05 to 0.95, then the same data plotted with `Axis: Type: Standard deviation` will appear to have a range of roughly -2 to 2 standard deviations, and the same data plotted on `Axis: Type: Probit` will appear to have a range of roughly 3 to 7 probit units (standard deviations + 5). (See the graphs below.)

  These axes are often used on the Y axis of both XY graphs and Histograms as a graphic check of the normality of a set of data. Cumulative data with a normal distribution will appear as a straight line on these axis. Any deviation from normality appears as a deviation from the straight line.

  The Normal Probability Axis

  The default range on a `Normal Probability` axis is 0.001 to 0.999 which is expressed as 0.1% to 99.9%. The widest range allowed is 0.00001 to 0.99999. (The tails of the normal probability distribution extend to infinity; so a range of 0 to 1 is not possible.)

  Because the labels and tick marks on a `Normal Probability` axis do not occur at regular intervals, CoPlot has a special system for specifying the number of labels and tick marks. The number of `Divisions` is used to indicate the number of pairs of an item (a label or a type of tick mark).

  Divisions | Additional items appear at
  --- | ---
  1 | 50%
  2,3 | 99.9% | and | 0.1%
  4,5 | 90% | and | 10%
  6,7 | 99% | and | 1%
  8,9 | 70% | and | 30%
  10,11 | 99.99% | and | 0.01%
  12,13 | 99.999% | and | 0.001%
  14,15 | 95% | and | 5%
  16,17 | 80% | and | 20%
  18,19 | 99.5% | and | .5%
  20,21 | 60% | and | 40%
  22,23 | 98% | and | 2%
  24,25 | 99.8% | and | .2%
  26,27 | 99.98% | and | .02%
  28,29 | 99.998% | and | .002%
  30,31 | 99.95% | and | .05%
  32,33 | 99.995% | and | .005%

  If the number of `Divisions` is `1`, a label (for example) will appear at 50%. If the number of `Divisions` is `3`, labels will also appear at 0.1 and 99.9%. Etc.

  XY Graphs - The only difference between the four HEIGHT graphs shown below is the `Y Axis: Type`. (Each of the Y axes is labelled appropriately.)

  Here is a comparison of Linear Scale, Normal Probability, Standard Deviation, and Probit Axes on an XY graph:

  The X data for the graphs is the sorted Height values. The Y data is the cumulative Height values divided by 4720.5 (the sum of all of the Height values). Here is the data in the HEIGHT.DT sample data file, used in the sample graph.

             Height     Cum/4720.5
              61.5   0.0130282809
              62.75  0.02632136426
              63.25  0.03972036861
              63.5   0.05317233344
              67.5   0.06747166614
              68.75  0.08203580129
              72.5   0.09739434382
              73.75  0.1130176888
              74     0.12869399428
              78.25  0.14527062811
              78.25  0.16184726194
              80     0.17879461921
              80     0.19574197649
              80     0.21268933376
              82.5   0.23016629594
              83.75  0.24790806059
              90.5   0.2670797585
              90.5   0.28625145641
              90.5   0.30542315433
              91.5   0.32480669421
              91.75  0.34424319458
              91.75  0.36367969495
              92.75  0.38332803728
              93     0.40302934011
              94     0.42294248491
              95     0.44306747167
              96     0.46340430039
              96.25  0.48379408961
              96.5   0.50423683932
              97.75  0.52494439148
              98.5   0.54581082512
             103     0.56763054761
             106.5   0.59019171698
             110     0.61349433323
             110.75  0.63695583095
             110.75  0.66041732867
             116.5   0.6850969177
             116.75  0.70982946722
             120.25  0.73530346362
             120.25  0.76077746001
             127.5   0.78778731067
             127.75  0.81485012181
             131.75  0.84276030082
             132.5   0.8708293613
             146.5   0.9018642093
             150.75  0.93379938566
             154.75  0.96658192988
             157.75  1

  Using CoStat (the datafile editor) to prepare data for XY graphs with Normal Probability, Standard deviation, or Probit axes:

  1. Start with a data file with 1 column of raw data (for example, Height).
  2. Use `Edit : Sort` to sort based on that column, in ascending order.
  3. Use `Edit : Copy Columns` to make a copy of column #1 `at the end`.
  4. Use `Transformations : Accumulate` to accumulate values in column #2.
  5. Use `CtrlEnd` to go to the last row in the file and look at the last value in column #2 (the total).
  6. Use `Transformations : Transform` to transform the values in column #2 by dividing by the total (for example, `col(1)/4720.5`).
  7. Use `File : Save As` to save the data with a different file name (so the original data isn't overwritten).

  This results in data ranging from 0 to 1, which is what the `Normal Probability` axis, `Standard Deviation` axis, and `Probit` axis take as input.

  Histograms - The data for Histograms is not raw data, as for XY graphs, but data that has been grouped into classes. For the sample data file, HEIGHT1.DT, the Height data (from above) was tabulated into classes with a width of 10 (60 - 69.9, 70 - 79.9, 80 - 89.9, etc.) with CoStat's `Statistics : Frequency Analysis : Crosstabulation`. For the four HEIGHT1 graphs (shown below), the X variable for data set #1 is Height (the lower limit of each group: 60, 70, 80, etc.) and the Y variable is Cumulative Frequency divided by 48 (the number of data points).

  Here is a comparison of Linear Scale, Normal Probability, Standard Deviation, and Probit Axes on a histogram:

  The only difference between the four HEIGHT1 graphs is the `Y Axis : Type`. (Each of the Y axes is labelled appropriately.) Here is the HEIGHT1.DT sample data file, which is used for the HEIGHT1 series of sample graphs:

      PRINT DATA
      Using: C:\COHORT6\HEIGHT1.DT

           Height  Frequency  Cumulative   Cum(Freq)/48
         --------  ---------  ----------  -------------
               60          6           6  0.125
               70          5          11  0.22916666667
               80          5          16  0.33333333333
               90         15          31  0.64583333333
              100          2          33  0.6875
              110          5          38  0.79166666667
              120          4          42  0.875
              130          2          44  0.91666666667
              140          1          45  0.9375
              150          3          48  1

  Useful Functions - There are two related functions which can be used in equations that you type in:

  `norm`
    When you are plotting frequency data on a histogram with an ordinary linear Y axis (for example, `X=Height` and `Y=Frequency` in the Height1 datafile) and want to also plot the normal distribution, you can use the normal distribution function, `norm`, which gives the bell-shaped curve of the normal distribution. The expected normal distribution for HEIGHT1 data is given by:

    `Function 1 = w*n/s*norm((x-m)/s)`

    where:

    - w = the class width = 10
    - n = the number of values = 48
    - s = the standard deviation = 25.01
    - m = the mean of the values = 98.34

    So the actual function is:

    `Function 1 = 10*48/25.01*norm((x-98.34)/25.01)`

  `cumNorm`
    Both the HEIGHT XY graphs and the HEIGHT1 Histograms make use of the cumulative normal function, `cumNorm`. Since the mean, 98.34, and standard deviation, 25.01, of the Height values are known from `Statistics : Descriptive` in CoStat (or can be determined with a calculator), you can plot the expected cumulative normal distribution with `cumNorm((x-mean)/standard deviation)` (in this case, `Function 1 = cumNorm((x-98.34)/25.01)`.

  Menu Tree / Index

  ## Edit : Graph : Axis : Titles

  The `Edit : Graph` `: Axis : Titles` dialog lets you specify the text for `Title 1` (the primary title), and `Title 2` (the secondary title), and their attributes, for each of the axes.

  The options on the dialog box are:

  `Which Axis`
    specifies whether you want to edit the titles on the `X, Y, Z,` or `T` axes, or `All` axes simultaneously.
  `Which Part`
    specifies whether you want to edit `Title 1` (the primary title), `Title 2` (the secondary title), or both simultaneously.
  `Text`
    specifies the characters to be written. For `Title 1`, if you just enter a '.', the default title (the name of the X or Y variable from the first dataset, if it exists) will be used.

    The '`&`' button lets you pick and insert character entities (HTML-like names for non-ASCII characters) into the text.

    The '`<>`' button lets you insert embedded text tags (which control bold, italics, underlining, font changes, size changes, etc).

  `X Y Position`
    specifies the X Y position (in `Drawing Coordinates`) for the text. You can also drag the little block that appears near the title.
  `Color`
    specifies which color will be used initially for the text. If this is set to `notDrawn`, the text won't be drawn.
  `Font`
    specifies which font slot will be used initially for the text (see `Drawing : Load Fonts`).
  `Font Style`
    specifies the initial font style for the text: `Plain, Bold, Italic,` or `Bold Italic`.
  `Height`
    specifies the initial height of a capital letter (in `Drawing Coordinates`).
  `Angle`
    specifies the angle for the text (in floating-point, counter-clockwise degrees). This is usually 0, but may be any value.
  `H Align`
    specifies the horizontal alignment of the text, relative to the text's `X Y Position`. (The text's vertical alignment is always `Center`.)
  `Visible`
    specifies if the titles will be visible on the `Main Axis, Opposite Axis,` or `Both Axes`. The `opposite` axis is the axis opposite the `main` axis (for example, the top axis is the opposite axis for the X axis).

    On 3D graphs, the axes which are designated 'main' and 'opposite' change when you change the `Graph : Overview : 3D Spin Angle`. The 'main' X axis is the one which is currently at the front of the graph. Similarly, the 'main' Y axis is the one which is currently at the front of the graph. The 'main' Z axis is the one based at the leftmost corner of the XY plane.

  Menu Tree / Index

  ## Edit : Graph : Axis : Labels

  The `Edit : Graph` `: Axis : Labels` dialog lets you specify the attributes of the `Axis : Labels` on each axis.

  When a dataset or function is represented by a series of colors, many of the attributes on this dialog box (when it is used for the Z axis) are also used to format the numbers written beside the colors in the legend.

  The options on the dialog box are:

  `Which Axis`
    specifies whether you want to edit the labels on the `X, Y, Z,` or `T` axes, or `All` axes simultaneously.
  `Text`
    lets you specify a comma separated value list of labels. Or, you can just enter a '.' to get the default labels. Warning: if you supply your own labels, you should also supply the list of `Divisions` (see below) to ensure that each label is correctly positioned, even if the axis range changes.

    The '`&`' button lets you pick and insert character entities (HTML-like names for non-ASCII characters) into the text.

    The '`<>`' button lets you insert embedded text tags (which control bold, italics, underlining, font changes, size changes, etc).

  `Get axis labels from a datafile`
    lets you create a comma-separated list of labels for `Text`, by specifying a column in one of the datafiles that contains the labels.
  `X Y Position`
    specifies the X Y position (in `Drawing Coordinates`) for the labels (they are all moved simultaneously). You can also drag the little block that appears near the center of the labels.
  `Color`
    specifies which color will be used initially for the text. If this is set to `notDrawn`, the text won't be drawn.
  `Font`
    specifies which font slot will be used initially for the text (see `Drawing : Load Fonts`).
  `Font Style`
    specifies the initial font style for the text: `Plain, Bold, Italic,` or `Bold Italic`.
  `Height`
    specifies the initial height of a capital letter (in `Drawing Coordinates`).
  `Angle`
    specifies the angle for the text (in floating-point, counter-clockwise degrees). This is usually 0, but may be any value.
  `H Align`
    specifies the horizontal alignment of the text, relative to the text's `X Y Position`. (The text's vertical alignment is always `Center`.)
  `Division`
    specifies the numeric values that determine where the labels get placed. You can specify:
    - A '.', in order to place labels at the default positions. If you do this, the program will indicate the default single value (for example, ".=0.1").
    - A single value. For example, `0.1` axis units between divisions on an axis ranging from 1 to 1.3 will generate labels at 1.0, 1.1, 1.2, and 1.3.
    - A comma separated value list of values where the labels should be created (for example, `1.0, 1.1, 1.2, 1.3`). If you want to use commas in the labels, put each label in double quotes (for example, `"1,0", "1,1", "1,2", "1,3"`). If you want to put a double quote inside a quoted label, put a backslash before that double quote (for example, `"1.0", "Say \"Hi\"", "1.2"`).
  `Format 1`
    The numeric values for the labels may be formatted in many different ways. See the detailed description of the format options in the CoStat Manual (costat.htm).
  `Format 2`
    For each type of Format 1, there are several subtypes. Often, these just indicate how many decimal places will be shown. See the detailed description of the format options in the CoStat Manual (costat.htm).
  `Decimal Point`
    The decimal point can be displayed as a period or a comma.
  `Prefix`
    You can specify a text string to be added to the beginning of each value. A typical use is to append '`$`' for dollar values.
  `Suffix`
    You can specify a text string to be added to the end of each value. A typical use is to append the units (for example, '`cm`' or '`g/l`').
  `Visible`
    specifies if the labels will be visible on the `Main Axis, Opposite Axis,` or `Both Axes`. The `opposite` axis is the axis opposite the `main` axis (for example, the top axis is the opposite axis for the X axis).

    On 3D graphs, the axes which are designated `main` and `opposite` change when you change the `Graph : Overview : 3D Spin Angle`. The `main` X axis is the one which is currently at the front of the graph. Similarly, the `main` Y axis is the one which is currently at the front of the graph. The `main` Z axis is the one based at the leftmost corner of the XY plane.

  `Draw First Label`
    This checkbox lets you specify if you want the first label to be drawn or not. This can be useful for `Z Axis : Labels`.
  `Draw Last Label`
    This checkbox lets you specify if you want the last label to be drawn or not. This can be useful for `Y Axis : Labels` on a 3D graph.

  Menu Tree / Index

  ## Edit : Graph : Axis : Lines

  The `Edit : Graph` `: Axis : Lines` dialog lets you specify the attributes of a graph's axis lines: the `Axis Line, Ticks 1` (the primary ticks), `Ticks 2` (the secondary ticks), `Grid 1` (the primary grid lines), `Grid 2` (the secondary grid lines), and `Zero Line`.

  The options on the dialog box are:

  `Which Axis`
    specifies whether you want to edit the lines on the `X, Y, Z,` or `T` axes, or `All` axes simultaneously.
  `Which Part`
    specifies which types of lines you want to edit: `Axis Line, Ticks 1` (the primary ticks), `Ticks 2` (the secondary ticks), `Grid 1` (the primary grid lines), `Grid 2` (the secondary grid lines), `Zero Line`, or `All` types simultaneously.
  `Color`
    specifies the color for the lines. If this is set to `notDrawn`, the lines won't be drawn.

    Suggestion: Gray grid lines often look better than black grid lines.

  `Type`
    specifies the dash-space pattern which is used repeatedly when the lines are drawn. At the end of the line type list are line types that are not dash-space patterns (for example, `Parallel, Railroad, Disjoint`).
  `Dashsize`
    specifies the size (in `Drawing Coordinates`) of the dashes and spaces that make up the line types. For non dash-space line types, it specifies the size of the dominant feature (for example, the distance between the parallel lines).
  `Width`
    specifies the width of the lines (in `Drawing Coordinates`).
  `Division`
    specifies the numeric values that determine where the lines get placed. It applies to `Ticks 1, Ticks 2, Grid 1,` and `Grid 2`; it is irrelevant for `Axis Line` and `Zero Line`. You can specify:
    - A '.', in order to place lines at the default positions. If you do this, the program will indicate the default single value (for example, "`.=0.1`").
    - A single numeric value (for example, `0.1` axis units between divisions on an axis ranging from 1.0 to 1.3 will generate lines at 1, 1.1, 1.2, and 1.3).
    - A comma separated value list of values where the lines should be created (for example, `1, 1.1, 1.2, 1.3`). If you want to use commas in the values (European decimal points), put each label in double quotes (for example, `"1,0", "1,1", "1,2", "1,3"`).
  `In`
    specifies the distance that ticks are drawn into the graph (in `Drawing Coordinates`). This only applies to `Ticks 1` and `Ticks 2`; it is irrelevant for `Axis Line, Grid Lines,` and `Zero` Lines.
  `Out`
    specifies the distance that ticks are drawn away from the graph (in `Drawing Coordinates`). This only applies to `Ticks 1` and `Ticks 2`; it is irrelevant for `Axis Line, Grid Lines,` and `Zero Lines`.
  `Arrow Head Visible`
    specifies the where the arrow head will be visible if the `Arrow Headsize>0`: the `Low End`, the `High End` (the default), or `Both Ends`. The 'Low' and 'High' ends are the nominal low and high ends, paralleling the `X Axis : Overview : Low` and `High` designations.
  `Arrow Headsize`
    specifies the size (in `Drawing Coordinates`) of the arrowhead on the `Axis Line` or `Zero Line`. If you don't want the arrowhead to be drawn, use a headsize of 0. The arrow type is always `Fancy`. The arrow angle is always `30°`. This only applies to the `main` axis line (not the `opposite` axis line) and the zero line; it is irrelevant for `Grid Lines, Ticks 1,` and `Ticks 2`.
  `Visible`
    specifies if the lines will be visible on the `Main Axis, Opposite Axis,` or `Both Axes`. The `opposite` axis is the axis opposite the `main` axis (for example, the top axis is the opposite axis for the X axis). This only applies to the `Axis Line` and `Ticks`; it is irrelevant for `Grid Lines` and `Zero Lines`. If you want to make any part of the axis not visible, use `Color: notDrawn`.

    On 3D graphs, the axes which are designated `main` and `opposite` change when you change the `Graph : Overview : 3D Spin Angle`. The `main` X axis is the one which is currently at the front of the graph. Similarly, the `main` Y axis is the one which is currently at the front of the graph. The `main` Z axis is the one based at the leftmost corner of the XY plane.

  Menu Tree / Index

  ## Edit : Graph : Legend

  Each graph can automatically display a legend. In the legend, labels are printed beside the marker, line, or filled area used to represent each function and dataset. The default labels are the actual function (for Functions) or the Y (or Z) variable's name (for Datasets). If you select `Function : x : Legend` or `Data : x : Legend`, you can type in a different label for the legend. A typical use of this feature would be to replace an actual equation (for example, `0.03211345345-1.961234563*x+3.2486410967*x^2`) with the same equation but formatted nicely (for example, `0.0321 - 1.961x + 3.248x<sup>2</sup>` will appear as `0.0321 - 1.961x + 3.248x2`). If you change the label to nothing or if the label is one big comment (for example, '`<!-- a comment -->`'), the legend will not include an entry for that function or dataset.

  You can turn off the entire legend by changing the `Text Color` to `Color2.notDrawn`.

  When a dataset or function is represented by a series of colors, the format of the numbers written beside the colors in the legend is determined by the attributes of the `Z Axis : Labels`.

  Persistent Tags - Normally, when CoPlot draws a legend, it strings together the `Legend Title`, HTML-like tags to display line, fill, and marker samples, and the `Function` (and `Dataset): Legend` text into one long text string and then draws that string. (If you want to, you can supply the entire text string that is used to draw the legend, see `Use Custom Legend`.) Because of this, any on/off HTML formatting tags that you turn on within one part of the legend (for example, "`<B>`") that are not turned off (for example, with "`</B>`") will be applied to the remainder of the legend. So, in general, every time you turn an on/off tag on, you should also turn it off. But, you can use this as a feature (don't turn the tag off) to a apply formating command to the entire legend.

  Legend Not Visible? If you think the legend should be visible, but it isn't, here are some things to check:

  - Make sure the legend's `Text Color` is not `Color2.notDrawn` and is not the same color as the `Drawing : Background Color`.
  - Make sure the legend's `X Y Position` is located where you think it is.
  - Make sure that `Dataset : x : Legend` and `Function : x : Legend` are not "".

  Suggestion for Making 1 Legend for 2 Graphs - Normally, each graph has its own legend. If you have 2 (or more) graphs and want to make one legend with all of the datasets and functions in it, there is no built-in way to do it. But you could:

  1. Use `Create : Big Text` to create a Big Text object.
  2. Use `Edit : Graph : Legend : Edit` to get the text from one of the graph's legends and put it on the clipboard (`Ctrl A` to mark all text, `Ctrl C` to copy all text).
  3. Set the legend's `Text Color` to `notDrawn` so suppress the drawing of that legend.
  4. Use `Edit : Big Text : Edit the text` and use `Ctrl V` to paste the text from the legend into that Big Text object.
  5. Repeat steps 2, 3, and 4 for each of the other graphs.
  In the end, you have one Big Text object with all of the information from all of the legends. You can then manipulate it in any way you want.

  Options - The `Edit : Graph` `: Legend` dialog lets you specify the attributes of the `Graph : Legend`. The options on the dialog box are:

  `Title`
    specifies the text for the legend's title. If you enter nothing, no title will be drawn.

    The '`&`' button lets you pick and insert character entities (HTML-like names for non-ASCII characters) into the text.

    The '`<>`' button lets you insert embedded text tags (which control bold, italics, underlining, font changes, size changes, etc).

    Because the `Legend Title` will become the first part of the complete legend, it is important that all attribute starting tags (for example, '`<b>`') have matching attribute ending tags (for example, '`</b>`') so that the attributes don't apply to all subsequent entries in the legend. (Unless that is what you want.)

    `Legend: Title` handles most tags correctly, even tags that make the text more than one line (for example, `<BR>` and `<P>`).

  `Order`
    lets you rearrange the order of datasets and functions in the legend.
  `X Y Position`
    specifies the X Y position (in `Drawing Coordinates`) for the text. You can also drag the little block that appears near the title. If you change the `Graph : Overview : X Y Position`, the legend will automatically be moved relative to the graph's box (for a 2D graph) or the graph's center (for a 3D graph).
  `Text Color`
    specifies which color will be used initially for all of the text in the legend. If this is set to `notDrawn`, the legend won't be drawn.
  `Text Font`
    specifies which font slot will be used initially for all of the text in the legend (see `Drawing : Load Fonts`).
  `Text Font Style`
    specifies the initial font style for the all of text in the legend: `Plain, Bold, Italic,` or `Bold Italic`.
  `Text Height`
    specifies the initial height of a capital letter (in `Drawing Coordinates`).
  `Type`
    specifies the format of the legend: `Horizontal, Vertical,` or `Interlaced`.
  `Interline`
    specifies the distance between entries in the legend, relative to 1 (the standard distance).
  `Example Size`
    specifies the size of line and fill examples in the legend, relative to 1 (the standard size).
  `Angle`
    specifies the angle of rotation for the entire legend (in floating-point, counter-clockwise degrees). This is usually 0, but may be any value.
  `Grid Colors`
    For Dataset and Function Representations that start with "`Grid`", this specifies how many colors will be displayed in the legend:
    - `Display Main Color` - just displays the one color that you specified.
    - `Display Bold Colors` - displays just the `Graph : Dataset (or Function) : Z Division 1` colors.
    - `Display All Colors` - displays all of the `Graph : Dataset (or Function) : Z Division 1` and `Z Division 2` colors.
  `Background Color`
    specifies which color will be used as the solid-fill background color of the legend. If this is set to `notDrawn`, the background won't be drawn.
  `Line Color`
    specifies which color will be used to draw a line around the legend. If this is set to `notDrawn`, the line won't be drawn.
  `Line Width`
    specifies the width of the line around the legend (in `Drawing Coordinates`).
  `Shape Type`
    specifies the type of shape which is drawn around the text. The default is `Rectangle`. The shape is only visible if the `Background Color` or `Line Color` is not `notDrawn`.

    Most of the shapes have a rectangular area inside them in which the text is drawn. For a few shapes, the rectangular area is constrained to be a square (for example, `Shape Type: Square`). For some shapes, the shape is drawn above the text rectangle (for example, `Shape Type: Fax, Person, Printer`).

  `Shape V Align`
    specifies the vertical alignment of the shape, relative to the legend's `X Y Position`. There are `Shape V Align` options related to the shape and options related to the text. The options related to the shape are exact for `Shape Type: Rectangle`, but are approximate for other shapes. The default is `Shape Center`.

    The `Above 1` and `Below 1` options are useful with the `Shape Type: Rectangle, point xxx` options. The `Below 3` option is useful with the `Shape Type: Cloud, point down` and `Cloud 2, point down` options.

  `Shape H Align`
    specifies the horizontal alignment of the shape, relative to the legend's `X Y Position`. There are `Shape H Align` options related to the shape and options related to the text. The options related to the shape are exact for `Shape Type: Rectangle`, but are approximate for other shapes. The default is `Center`.

    The `Farther Left` and `Farther Right` options are useful when the `Shape Type` points left or right.

  `Shape Border`
    specifies the relative size of the border around the text, within the shape. The default is 1. [Added in 6.100.]
  `Shape Shadow`
    specifies the shadow type for the shape. Shadows are always colored gray. The offset of the shadow is determined by the `Text Height`. There are options for single shadows and triple shadows. The default is `(none)`.
  `Use Custom Legend`
    (for advanced users) indicates if the custom legend should be used. Normally, when CoPlot draws a legend, it strings together the `Legend Title`, HTML-like tags to display line, fill, and marker samples, and the `Function` (and `Dataset): Legend` text into one long text string and then draws that string. If you want to, you can supply the text string that is used to draw the legend. Usually, you will use `Reset To Default` (below) to use the standard string as the starting point for your modifications (done by using `Edit`).
  `Edit`
    Opens a text editor so you can edit the text for the custom legend.
  `Reset To Default`
    This resets the text for the custom legend to the default (the text which would be used generate the standard legend).

  Menu Tree / Index

  ## Edit : Graph : Comment

  Graph `Comments` are actually text drawn within shapes, although you can draw the shapes alone, or the text alone. The size of the shape is (usually) automatically adjusted to accommodate the text. Unlike CoPlot's Text objects, the location of a `Graph : Comment` is specified in graph coordinates, not `Drawing Coordinates`. (Use `Create : Text` to create text objects where the locations are specified in drawing coordinates.) The `Edit : Graph` : `Comment` dialog box lets you create and edit the attributes of comments.

  When you create a graph, it initially has no comments. To create a new comment, you must drop down the `Comment` list on the `Edit : Graph` dialog box and click on `New`. Then, `Comment 1` will be created and added to the list.

  A common use of graph comments is to mark several data points. You can do this by setting `Click Equals` to `Get nearest data point` and then repeatedly: 1) clicking on a data point and 2) clicking on `Copy`. Note that when you do this, it will appear as if the last comment you made is erased when you click on the next data point; in reality, it is just erased on screen when the new copy of the old comment is moved. You can press the `Redraw` button if you need to see the completely redrawn graph.

  An alternative to `Graph : Comment` is to make a datafile with columns for `X, Y,` and `Labels` and then use `Graph : Dataset : 1 : Representation : Markers/labels` to plot that data on the graph. Using this approach is preferable if you already have a datafile with `X, Y,` and `Labels` data. One difference is that `Representation: Markers/labels` just draws the text of the label, with no shape drawn around the text.

  The options on the dialog box are:

  `Which Comment`
    lets you specify which comment to edit (`All`, or `1 - n`).

    To create a new comment, you must drop down the current list of datasets and click on `New`. Another number (n+1) will be added to the list.

  `Up`
    moves the currently selected comment up one slot. The order of comments in the list determines the order in which they are drawn whenever the graph is redrawn.
  `Down`
    moves the currently selected comment down one slot. The order of comments in the list determines the order in which they are drawn whenever the graph is redrawn.
  `Copy`
    makes a new comment which is a copy of the currently selected comment. The new comment is inserted in the list right after the currently selected comment, and it becomes the currently selected comment.
  `Delete`
    deletes the currently selected comment.
  `Click Equals`
    There are two ways to specify where the comment will be drawn.

    1) Click on the graph. Depending on the `Click Equals` setting, CoPlot will use the graph coordinates of the position you click on, or it will look for and use the nearest data point.

    2) Enter the `Graph X, Y,` and `Z` values in the appropriate fields in the dialog box.

  `Graph X`
    specifies the X coordinate for positioning the comment (in `Graph Coordinates`). When X is out of the X axis range, the comment won't be drawn.
  `Graph Y`
    specifies the Y coordinate for positioning the comment (in `Graph Coordinates`). When Y is out of the Y axis range, the comment won't be drawn.
  `Graph Z`
    specifies the Z coordinate for positioning the comment (in `Graph Coordinates`). When Z is out of the Z axis range (on 3D graphs), the comment won't be drawn.
  `Text Color`
    specifies which color will be used initially for the text. If this is set to `notDrawn`, the text won't be drawn.
  `Text`
    specifies the characters to be written. If you enter nothing, no comment will be drawn. If you enter just a period ("."), CoPlot will display the text from the Graph Y coordinate (or Z, if the graph has three axes). The text is only visible if the `Text Color` is not `notDrawn`.

    The '`&`' button lets you pick and insert character entities (HTML-like names for non-ASCII characters) into the text.

    The '`<>`' button lets you insert embedded text tags (which control bold, italics, underlining, font changes, size changes, etc).

  `Text Font`
    specifies which font slot will be used initially for the text (see `Drawing : Load Fonts`).
  `Text Height`
    specifies the initial height of a capital letter (in `Drawing Coordinates`).
  `Text Position`
    specifies the position for the text within the shape (if the shape is larger than necessary for the text). The horizontal component also specifies whether the text is initially left justified, centered, or right justified. The default is `Center center`.
  `Background Color`
    specifies the solid color to be used in the background of the shape. If this is set to `notDrawn`, the background won't be drawn.
  `Line Color`
    specifies the color for the line around the perimeter of the shape. If this is set to `notDrawn`, the line won't be drawn.
  `Line Type`
    specifies the dash-space pattern which is used repeatedly when the line is drawn. At the end of the line type list are line types that are not dash-space patterns (for example, `Parallel, Railroad, Disjoint`). `Disjoint` is unusual in that it draws a line between points 1 and 2, 3 and 4, 5 and 6, etc., but not between points 2 and 3, 4 and 5, 6 and 7, etc.
  `Line Dashsize`
    specifies the size (in `Drawing Coordinates`) of the dashes and spaces that make up the line types. For non dash-space line types, it specifies the size of the dominant feature (for example, the distance between the parallel lines).
  `Line Width`
    specifies the width of the line (in `Drawing Coordinates`).
  `Shape Type`
    specifies the type of shape which is drawn around the text. The default is `Rectangle`. The shape is only visible if the `Background Color` or `Line Color` is not `notDrawn`.

    Most of the shapes have a rectangular area inside them in which the text is drawn. For a few shapes, the rectangular area is constrained to be a square (for example, `Shape Type: Square`). For some shapes, the shape is drawn above the text rectangle (for example, `Shape Type: Fax, Person, Printer`).

  `Shape V Align`
    specifies the vertical alignment of the shape, relative to the comment's `X Y Position`. There are `Shape V Align` options related to the shape and options related to the text. The options related to the shape are exact for `Shape Type: Rectangle`, but are approximate for other shapes. The default is `Shape Center`.

    The `Above 1` and `Below 1` options are useful with the `Shape Type: Rectangle, point xxx` options. The `Below 3` option is useful with the `Shape Type: Cloud, point down` and `Cloud 2, point down` options.

  `Shape H Align`
    specifies the horizontal alignment of the shape, relative to the comment's `X Y Position`. There are `Shape H Align` options related to the shape and options related to the text. The options related to the shape are exact for `Shape Type: Rectangle`, but are approximate for other shapes. The default is `Center`.

    The `Farther Left` and `Farther Right` options are useful when the `Shape Type` points left or right.

  `Shape Width`
    specifies the width of the shape (in `Drawing Coordinates`). `Shape Width` will be the actual width if `Shape Type` is `Rectangle`, but many other shapes are somewhat larger. If the text has to be wider than the `Shape Width` setting specifies, the shape will be drawn as wide as necessary to accommodate the text. If `Shape Width` is set to ".", the shape will be slightly wider than the text (auto-sizing, with no automatic word-wrap). The default is "." (default value), but it may be any value greater than or equal to 0.
  `Shape Height`
    specifies the height of the shape (in `Drawing Coordinates`). `Shape Height` will be the actual height if `Shape Type` is `Rectangle`, but many other shapes are somewhat larger. If the text has to be taller than the `Shape Height` setting specifies, the shape will be drawn as tall as necessary to accommodate the text. If `Shape Height` is set to ".", the shape will be slightly taller than the text (auto-sizing). The default is "." (indicating auto-sizing), but it may be any value greater than or equal to 0.
  `Shape Border`
    specifies the relative size of the border around the text, within the shape. The default is 1. [Added in 6.100.]
  `Shape Angle`
    specifies the angle for the shape (in floating-point, counter-clockwise degrees). This is usually 0, but may be any value.
  `Shape Shadow`
    specifies the shadow type for the shape. Shadows are always colored gray. The offset of the shadow is determined by the `Text Height`. There are options for single shadows and triple shadows (implying several instances). The default is `(none)`.

  Menu Tree / Index

  ## Edit : Graph Array

  The `Edit : Graph Array` dialog box helps you change the size, shape, and position of the graphs in the graph array (a 2D array of graph objects).

  The button on the left edge of the screen with the black graph array symbol and the light blue 'E' is a shortcut to `Edit : Graph Array`.

  The Graph Array isn't a separate object, but rather a convenient way of working with a 2D array of graph objects. There is only one Graph Array per drawing.

  This dialog box does not let you change the datafile or the datafile columns assigned to the rows and columns of the array. If you want to make changes like these, use `Create : Graph Array` again.

  The Red Graph Outlines - as you make changes to the attributes on this dialog box, CoPlot draws (in red) the outlines of the graphs that will result if you press `Apply`.

  The options on `Edit : Graph Array` are a subset of the options on the `Create : Graph Array` dialog box. The settings on this dialog box are stored in the drawing's .draw file. The options are:

  `Center X, Y`
    specifies the center for the entire graph array. You can use the left mouse button to drag the block that appears on the screen at the center of the graph array. Or, you can enter the X, Y values (in `Drawing Coordinates`).
  `X, Y Axis Size`
    specifies the length of the graph's X and Y axes (in `Drawing Coordinates`). All graphs in the array will be the same size. This works by setting each graph's `Graph : Overview : X Axis Size` and `Y Axis Size`.
  `Between Columns, Rows`
    specifies the distance (in `Drawing Coordinates`) between the centers of the columns and the centers of the rows.
  `Apply`
    creates the graph array as described by the settings above.
  `Edit the Graphs`
    takes you to the `Edit : Graph` dialog box, with all of the graphs in the graph array picked (so you can edit them simultaneously).
  `Undo All`
    resets all of the settings and changes all of the graph array's graphs to be as they were when you opened this dialog box.
  `Close`
    closes this dialog box. The current settings are remembered by the program (until another drawing is opened) and in this drawing's .draw file for the next time this dialog box is opened for this drawing.

  Menu Tree / Index

  ## Edit : Image

  The `Edit : Image` dialog box lists the attributes of image objects so that you can modify the appearance of the images.

  Does the .draw file store the image? No. CoPlot's drawing files just remember the name of the image file, they don't store the image data. So if you want to email a .draw file which references an image, you need to email the .draw file and the image file. A list of files used by the current drawing can be found at `Drawing : List Of Files`.

  When CoPlot loads a drawing, it looks in the specified directory for the image file. If the file is not found, CoPlot also automatically looks in the same directory as the .draw file.

  Smaller Sizes - When images are drawn smaller than their original size, CoPlot uses an area averaging algorithm to minimize the loss of information and make the result look better.

  Problem: Big Vector Files - When you use `File : Save As` to save a drawing in some other type of file, images will be saved in the file along with the rest of the drawing objects. Unfortunately, if the file type is a vector type (for example, .eps, .pdf, .wmf, .wpg, .cgm, .svg, .hpgl), the image will be stored as a series of lines in a verbose format. Thus, the resulting files will have the image data and will be able to display it nicely, but they will be very large files.

  Editing Image Attributes - There are several ways to get to the dialog box that lets you edit the attributes of an image:

  - Click the `Edit` button on the `Create : Image` dialog box right after you create the image.
  - When no dialog boxes are visible right click on or near the center of an existing image. (Mac OS X: hold down the `Apple` key and press the mouse button.)
  - Choose `Edit : Pick One` and click on the center of any existing image.
  - Choose `Edit : Image`.
  - Click on the button on the left edge of the screen with the black camera symbol and the light blue 'E'. It works as if you had selected `Edit : Image` and then pressed the `Pick One` button once the dialog box was visible.

  Icons - An image object can refer to an image in an image file somewhere on your hard drive (for example, a .gif file), or it can refer to an icon. Icons are small images that are stored in groups in files called `Icons*.gif` in the same directory as other CoHort program files.

  - All icons are 32x32 pixels and most have a transparent background.
  - Icons are useful for adding small "clipart" to drawings, especially for drawings which will be just viewed on a computer screen (via a .gif, .jpg, or .png file). Traditional clipart usually doesn't look good at small sizes.
  - Icons look best at `Size: 0.32, 0.64` and `0.96` inches. They look okay at `Size: 0.3, 0.35, 0.65,` and `1` inch. They don't look very good at larger sizes or when printed.
  - If you need larger clipart, use separate vector (preferably not image) clipart files (for example, Corel Gallery).
  - When you use `Browse: Icons` to pick an icon, the name of the icon (for example, `Icons:Science:21`) is put in the `File Name` field in the `Edit : Image` dialog box. CoPlot recognizes the special format of these names and draws the icon (retrieved internally) instead of looking for a separate image file (for example, MyImage.gif).
  - Each time you start CoPlot, CoPlot looks in the cohort directory for all of the files that match `Icons*.gif`.
  - If you downloaded and installed CoPlot from the CoHort Software web site, the standard installation includes about 200 icons in 5 icon groups. If you want all 2552 icons in 70 groups, you can download them for free from www.cohort.com/javadownload2.html#icons. If you installed CoPlot from a CD, you have the full set of icons.
  - Most of the icons were originally public domain icons from www.MediaBuilder.com, www.matrixvault.com, and ftp1.rad.kumc.edu/icons/icons/htm, but we have revised many of them and created some original icons.
  - If you know that one of the icons is not public domain and can't be redistributed, please let us know and we will remove it from the collection.
  - Copyright - We made lots of changes to the original icons, created some original icons, and created the special format for storing and displaying them. Thus, the icons that we created and the `Icons*.gif` files are copyright (c) CoHort Software, 2000. We grant licensed users of our software permission to use the individual icons for any purpose when accessed via CoPlot, but we do not grant anyone the right to modify or redistribute the `Icons*.gif` files. If you need icons for some purpose other than use in CoPlot, please go to those original icon collections.

  The options on the dialog box are:

  `File Name`
    specifies the name of the file with the image. Currently, CoPlot can display images from .gif, .jpg, .jpeg, .pcx, .png, and .ppm files, and icons from CoPlot's icon collection (referred to by name, for example, `Icons:Science:21`).
  `Browse`
    The browse button lets you browse through lists of specific types of image files: `Icons, *.gif, *.jpg, *.jpeg, *.pcx, *.png,` and `*.ppm` files. The `Icons` option brings up a visual system for picking icons. If you pick one of the icons, it puts the icon's name (for example, `Icons:Science:21`) in the `File Name` field in the `Edit : Image` dialog box, so that the icon will be displayed (not an image from a separate image file).
  `Center X,Y`
    specifies the center of one of the picked images. If you change `Center X,Y` by dragging the block on the screen or by changing the x,y values, all of the picked image objects will be moved by the same relative amount.
  `Size`
    specifies the size (width) of the image (in `Drawing Coordinates`). The size can be less than or greater than 0. A size of 0 is useful when you want to keep an image object but not draw the image (just like setting a Text object's `Color` to `notDrawn`). A negative size causes the image to be drawn flipped in the x direction. A negative size, possibly combined with `Angle: 180`, is useful for flipping the image in all possible ways.

    The height of the image will vary, depending on the ratio of the image's height (in pixels) and the image's width (in pixels). It is assumed that each pixel is square (in rare cases, this isn't true).

  `Angle`
    specifies the angle of rotation for the image (in floating-point, counter-clockwise degrees). The default is 0 degrees.
  `Crop Margins - Left, Right, Top, Bottom`
    specify the margins to be removed from the original image (in pixels) in order to crop the image. This lets you show any rectangular portion of the image. For example, if you want to remove the top 10 pixels from the image, set `Top` to `10`.
  `NotDrawn Color`
    specifies a color in the image which you want CoPlot to not draw. This is useful if you have an image with a single background color, and you want CoPlot not to draw that color, thereby making the image partially transparent. If the `NotDrawn Color` is the color called `notDrawn`, no color will be not drawn.
  `Negative Colors`
    This changes all of the colors in the image to their opposite, as if this were a photographic negative. For example, white becomes black, light gray becomes dark gray, red becomes cyan, green becomes magenta, blue becomes yellow, and vice versa. Mostly, this is useful for gray scale images where you want to reverse the gray scale.
  `Display`
    specifies how to display the colors in the image. You can choose:
    - `All Colors` - the default.
    - `Web Palette Colors` - which changes colors in the image to the nearest colors in the standard 216 color web palette. This is the standard way to reduce the number of colors in a photo-like image (for example, if you want to save the drawing in a .gif file, which is limited to 256 colors).
    - `CoHort Palette Colors` - which changes colors to the nearest colors in the CoHort palette. This is a useful alternative way to reduce the number of colors in a photo-like image.
    - `Grays` - which changes colors to corresponding shades of gray.
  `Contrast`
    lets you increase or decrease the contrast in the image. Decreasing the contrast works by pulling each of the red, green, and blue color components of each pixel toward an intermediate value. Increasing the contrast does the opposite.
  `Brightness`
    lets you increase or decrease the brightness of the image. Increasing the brightness works by increasing each of the red, green, and blue color components of each pixel. Decreasing the brightness does the opposite.
  `Background Color`
    specifies the color for the background of the image. If this is set to `notDrawn`, the background won't be drawn. The background color will only be visible if part of the image is transparent.
  `Line Color`
    specifies the color for the line around the image. If this is set to `notDrawn`, the line won't be drawn.
  `Line Width`
    specifies the width of the line around the image (in `Drawing Coordinates`). If the `Line Width` is 0, the line won't be drawn.
  `Image`
    specifies the group number for the picked image objects.

  The various attributes which affect the colors of the image are applied to the image in the order that the attributes are listed in the dialog box. For example, `Contrast` is done before `Brightness`.

  Buttons - There are several buttons at the bottom of the dialog box which let you pick additional image objects, move, copy or delete the picked objects, and hide and show the picked objects. See `Edit : Any Type`.

  Menu Tree / Index

  ## Edit : Path

  There are several ways to get to the dialog box that lets you edit the attributes of a path:
  - Click the `Edit` button on the `Create : Path` dialog box right after you create the path.
  - When no dialog boxes are visible, right click on or near an existing path object. (Mac OS X: hold down the `Apple` key and press the mouse button.)
  - Choose `Edit : Pick One` and click on the perimeter of any existing path.
  - Choose `Edit : Path`.
  - Click on the button on the left edge of the screen with the black path symbol and the light blue 'E'. It works as if you had selected `Edit : Path` and then pressed the `Pick One` button once the dialog box was visible.

  A path is basically a series of points and a set of attributes describing how the path should be drawn. The attributes allow paths to be drawn many ways (for example, as lines, curved lines, curved lines with arrows, a series of markers, filled areas).

  There are three types of attributes on the dialog box:

  1) `Path Type`
    determines how the perimeter of the path is drawn (for example, with straight line segments connecting the points, with curved lines called "splines" connecting the points, or treating the points as Bezier control and end points).
  2) The various `Color` attributes
    determine if a given component of the path (the `Background, Fill, Line,` or `Marker`) is to be drawn. For example, if `Line Color` is `black`, a black line will be drawn along the path. But if `Line Color` is set to `notDrawn`, no line will be drawn.
  3) The component's attributes
    specify the details of how that component is to be drawn (provided the color for that component is not `notDrawn`). For example, `Line Type, Line Dashsize` and `Line Width` determine how the line will be drawn, if `Line Color` is not `notDrawn`).

    Important: If a component color (for example, `Line Color`) is `notDrawn`, none of the component's other attributes (for example, `Line Width`) will be stored. Conclusion: first set the component color to something other than `notDrawn`, then set the other attributes. For example, first set `Line Color` to `red4`, then set `Line Width` to `0.1`, not vice versa.

  The options on the `Edit : Path` dialog box are:

  `Path Type`
    determines how the perimeter of the path is drawn:
    - `Line` - draws straight lines between the points.
    - `Spline` - draws curved lines between the points.
    - `Bezier` - interprets the points as Bezier control and end points. This is very different from the `Line` or `Spline` options. Most CoPlot users will never need to use this option. See Bezier Paths below.
  `Background Color`
    specifies the solid color to be used in the background of the object. If this is set to `notDrawn`, the background won't be drawn.
  `Fill Color`
    specifies the color for the fill pattern (a hatch pattern or bit-mapped pattern). If this is set to `notDrawn`, the fill pattern won't be drawn and none of the other `Fill` attributes will be stored.
  `Fill Type`
    specifies a hatch pattern (a combination of horizontal, vertical, and diagonal lines) or a bit-mapped pattern. The bit-mapped patterns are only scaled to a limited number of sizes (integer multiples of the original pattern), so don't be surprised if a small change to `Fill Size` has no effect.
  `Fill Size`
    specifies the distance (in `Drawing Coordinates`) between lines in the hatch patterns or the unit size of bit-mapped patterns.
  `Fill Linewidth`
    specifies the linewidth (in `Drawing Coordinates`) used to draw the hatch patterns.
  `Line Color`
    specifies the color for the line around the perimeter of the path. If this is set to `notDrawn`, the line won't be drawn and none of the other `Line` attributes will be stored.
  `Line Type`
    specifies the dash-space pattern which is used repeatedly when the line is drawn. At the end of the line type list are line types that are not dash-space patterns (for example, `Parallel, Railroad, Disjoint`). `Disjoint` is unusual in that it draws a line between points 1 and 2, 3 and 4, 5 and 6, etc., but not between points 2 and 3, 4 and 5, 6 and 7, etc.
  `Line Dashsize`
    specifies the size (in `Drawing Coordinates`) of the dashes and spaces that make up the line types. For non dash-space line types, it specifies the size of the dominant feature (for example, the distance between the parallel lines).
  `Line Width`
    specifies the width of the line (in `Drawing Coordinates`).
  `Arrow Type Start, Finish`
    specifies the type of arrowhead (`notDrawn, Fancy, Filled` or `Line`) for the start and the finish of the path. The color of the arrow heads is the line color. So if `Line Color` is set to `notDrawn`, the arrowheads won't be drawn.
  `Arrow Headsize`
    specifies the length (in `Drawing Coordinates`) along one edge of the arrowhead.
  `Arrow Angle`
    specifies the angle (in degrees, 0 - 360) of the arrow head.
  `Marker Color`
    specifies the color for the line around the perimeter of the path. If this is set to `notDrawn`, the markers won't be drawn and none of the other `Marker` attributes will be stored.

    The menu option called `Drawing : Other : Draw lines through markers` determines whether lines are drawn through markers or if there is a gap.

  `Marker Background`
    specifies the background color for the markers. For the Marker font, the hollow parts of hollow markers are filled with this color. For all other fonts, a small square is drawn behind each marker with this color. [Added in version 6.100.]
  `Marker Type`
    specifies which character in which font (see `Drawing : Load Fonts`) will be used for the markers.
  `Marker Size`
    specifies the basic marker size (the height in `Drawing Coordinates` of a full-sized marker).
  `Group`
    specifies the group number for the picked path objects.

  Buttons - There are several buttons at the bottom of the dialog box which let you pick additional path objects, move, copy or delete the picked objects, insert or delete points, and hide and show the picked objects. See `Edit : Any Type`.

  ### Bezier Paths

  When the `Path Type` for a path object is set to `Bezier`, the points are interpreted as a series of Bezier segments. (Most CoPlot users will never need to use this option.) For each segment, there is a beginning point, 2 control points, and an endpoint. The endpoint of one segment is the beginning point of the next segment. When CoPlot draws a segment, it starts at the beginning point, travelling in the direction of the 1st control point. As it gets closer to the 1st control point, it starts veering off toward the second control point. As it gets closer to the 2nd control point, it veers off toward the endpoint. Finally, the segment ends at the endpoint. You can think of the control points as pulling the line segment in their direction.

  Here is a diagram of Bezier end points and control points:

  To draw a straight line segment in the middle of a Bezier Path object, just put the 2 control points in line with the beginning and end points.

  Editing Bezier Path Objects - While it is hard to create the exact curve that you want when you first draw a Bezier object, it is very easy to edit afterwards. Use `Edit : Points Move` or `Edit : Path : Move One Point` to move (by dragging) the control points and endpoints. As mentioned above, it helps to think of the control points as pulling the line segment in their direction.

  Inserting And Removing Points From Bezier Path Objects - You can use `Edit : Points : Insert` and `Delete` to let you insert and remove points from a Bezier Path object. Because of the unique meanings (as control points or endpoints) of the points that define a Bezier Path object, you should generally insert (or remove) 3 points (2 control points and 1 endpoint) into (or from) Bezier Path objects at a time.

  Relation to splines - Bezier Path objects can be rotated arbitrarily with no effect on the shape of the object. Because of this desirable property, CoPlot uses Bezier lines and filled areas internally to draw spline lines and spline filled areas. To draw a spline Path object, CoPlot calculates where the Bezier control points should be; then draws the Bezier curve. Splines are easier for you to create, but Bezier Path objects give you absolute control over the shape of the object.

  Menu Tree / Index

  ## Edit : Text

  There are several ways to get to the dialog box that lets you edit the attributes of a text object:
  - Click the `Edit` button on the `Create : Text` dialog box right after you create the text object.
  - When no dialog boxes are visible, right click on or near the creation point for an existing text object. (Mac OS X: hold down the `Apple` key and press the mouse button.)
  - Choose `Edit : Pick One` and click on the pickable point of any existing text object.
  - Choose `Edit : Text`.
  - Click on the button on the left edge of the screen with the black 't' and the light blue 'E'. It works as if you had selected `Edit : Text` and then pressed the `Pick One` button once the dialog box was visible.
  Text objects are actually text drawn within shapes (for example, rectangles, triangles, circles), although you can draw the text alone (the default), or the shape alone. The size of the shape is (usually) automatically adjusted to accommodate the text. The size of the shape's features (for example, the size of the arcs at the corners of a rounded rectangle) is determined by the `Text Height`, even if no text is displayed. A shape's minimum height and width are determined by the `Text Height` and the `Shape Border`, even if no text is displayed.

  Text objects have many attributes which you can change in order to make the text objects look like you want them to look. The text can include embedded text tags (which control bold, italics, underlining, font changes, size changes, etc) (see the '`<>`' button) and character entities (HTML-like names for accented characters, Greek characters, and mathematical symbols) (see the '`&`' button).

  What is the difference between `Text` and `Big Text`? Text objects are intended to be for one line (or maybe a few short lines) of text. When you edit a text object, all editing is done in a small, one-line, text field. Big Text is intended to be for large blocks of text. When you edit a Big Text object, a text editor screen appears. Otherwise, they are identical.

  The options on the dialog box are:

  `Text Color`
    specifies which color will be used initially for the text. If this is set to `notDrawn`, the text won't be drawn.
  `Text`
    specifies the characters to be written. The text is only visible if the `Text Color` is not `notDrawn`.

    The '`&`' button lets you pick and insert character entities (HTML-like names for non-ASCII characters) into the text.

    The '`<>`' button lets you insert embedded text tags (which control bold, italics, underlining, font changes, size changes, etc).

  `Text Font`
    specifies which font slot will be used initially for the text (see `Drawing : Load Fonts`).
  `Text Height`
    specifies the initial height of a capital letter (in `Drawing Coordinates`).
  `Text Position`
    specifies the position for the text within the shape (if the shape is larger than necessary for the text). The horizontal component also specifies whether the text is initially left justified, centered, or right justified. The default is `Center center`.
  `Background Color`
    specifies the solid color to be used in the background of the shape. If this is set to `notDrawn`, the background won't be drawn.
  `Line Color`
    specifies the color for the line around the perimeter of the shape. If this is set to `notDrawn`, the line won't be drawn and none of the other `Line` attributes will be stored.
  `Line Type`
    specifies the dash-space pattern which is used repeatedly when the line is drawn. At the end of the line type list are line types that are not dash-space patterns (for example, `Parallel, Railroad, Disjoint`). `Disjoint` is unusual in that it draws a line between points 1 and 2, 3 and 4, 5 and 6, etc., but not between points 2 and 3, 4 and 5, 6 and 7, etc.
  `Line Dashsize`
    specifies the size (in `Drawing Coordinates`) of the dashes and spaces that make up the line types. For non dash-space line types, it specifies the size of the dominant feature (for example, the distance between the parallel lines).
  `Line Width`
    specifies the width of the line (in `Drawing Coordinates`).
  `Shape Type`
    specifies the type of shape which is drawn around the text. The default is `Rectangle`. The shape is only visible if the `Background Color` or `Line Color` is not `notDrawn`.

    Most of the shapes have a rectangular area inside them in which the text is drawn. For a few shapes, the rectangular area is constrained to be a square (for example, `Shape Type: Square`). For some shapes, the shape is drawn above the text rectangle (for example, `Shape Type: Fax, Person, Printer`).

  `Shape V Align`
    specifies the vertical alignment of the shape, relative to the object's location point. There are `Shape V Align` options related to the shape and options related to the text. The options related to the shape are exact for `Shape Type: Rectangle`, but are approximate for other shapes. The default is `Shape Center`.

    The `Above 1` and `Below 1` options are useful with the `Shape Type: Rectangle, point xxx` options. The `Below 3` option is useful with the `Shape Type: Cloud, point down` and `Cloud 2, point down` options.

  `Shape H Align`
    specifies the horizontal alignment of the shape, relative to the object's location point. There are `Shape H Align` options related to the shape and options related to the text. The options related to the shape are exact for `Shape Type: Rectangle`, but are approximate for other shapes. The default is `Center`.

    The `Farther Left` and `Farther Right` options are useful when the `Shape Type` points left or right.

  `Shape Width`
    specifies the width of the shape (in `Drawing Coordinates`). `Shape Width` will be the actual width if `Shape Type` is `Rectangle`, but many other shapes are somewhat larger. If the text has to be wider than the `Shape Width` setting specifies, the shape will be drawn as wide as necessary to accommodate the text. If `Shape Width` is set to ".", the shape will be slightly wider than the text (auto-sizing, with no automatic word-wrap). The default is ".", but it may be any value greater than or equal to 0.
  `Shape Height`
    specifies the height of the shape (in `Drawing Coordinates`). `Shape Height` will be the actual height if `Shape Type` is `Rectangle`, but many other shapes are somewhat larger. If the text has to be taller than the `Shape Height` setting specifies, the shape will be drawn as tall as necessary to accommodate the text. If `Shape Height` is set to ".", the shape will be slightly taller than the text (auto-sizing). The default is "." (indicating auto-sizing), but it may be any value greater than or equal to 0.
  `Shape Border`
    specifies the relative size of the border around the text, within the shape. The default is 1. [Added in 6.100.]
  `Shape Angle`
    specifies the angle for the shape (in floating-point, counter-clockwise degrees). This is usually 0, but may be any value.
  `Shape Shadow`
    specifies the shadow type for the shape. Shadows are always colored gray. The offset of the shadow is determined by the `Text Height`. There are options for single shadows and triple shadows. The default is `(none)`.
  `Group`
    specifies the group number for the picked text objects.

  Buttons - There are several buttons at the bottom of the dialog box which let you pick additional text objects, move, copy or delete the picked objects, and hide and show the picked objects. See `Edit : Any Type`.

  Uses of Shapes Around Text - In addition to their use as simple comments, drawing shapes around text is the basic tool of many types of charts, maps, and diagrams, including: block diagrams, flow charts, organization charts, quality control charts, and UML diagrams.

  Hints for Drawing Charts:

  - Set the `Drawing : Coordinates : Grid Size` to a coarse size (for example, 0.1 inches or 0.1 cm).
  - Specify the `Shape Width` and `Shape Height` so that all of the shapes of the same type are the same size.
  - Specify the `Shape Width` and `Shape Height` to be a multiple of 2 times the grid size. For example, if the grid size is 0.1, good widths and heights include 0.6, 0.8, 1.0, 1.2, 1.4, ... . Since the shapes are centered by default, this ensures that the shape will extend up, down, right and left by a multiple of the grid size. That ensures that it will be easy to attach lines to the exact edges of the shapes.
  - When you are editing the chart and need to move one or more shapes (and their attached lines), `Edit : Points Boxed Move` is usually the best way.

  Block Diagrams - Block diagrams are used to visually describe processes in many different fields. See Hints for Drawing Charts.

  Flow Charts - Flow charts are used to visually describe the flow of information or materials in many different fields. See Hints for Drawing Charts.

  CoPlot includes all of the shape types defined in ANSI/ISO 5807-1985, the United States and international standard for "Documentation Symbols and Conventions for Data, Program and System Flowcharts, Program Network Charts and System Resources Charts" (www.ansi.org). Here are the data symbols defined in the standard and their text shape counterparts in CoPlot:

  - Data symbols (basic):
    - Data - `Parallelogram, right`
    - Stored data - `Rectangle, sides out it`
  - Data symbols (specific):
    - Internal storage - `Rectangle, lines top left`
    - Sequential access storage - `Circle, with line`
    - Direct access storage - `Cylinder, horizontal`
    - Document - `Rectangle, wavy bottom`
    - Manual input - `Rectangle, slant top`
    - Card (computer punchcard) - `Rectangle, cut upper left`
    - Paper tape - `Rectangle, wavy top bottom`
    - Display - `Bullet`
  - Process symbols (basic):
    - Process - `Rectangle`
  - Process symbols (specific):
    - Predefined process - `Rectangle, lines left right`
    - Manual operation - `Trapezoid, down`
    - Preparation - `6 sides, horizontal`
    - Decision - `Diamond, horizontal`
    - Parallel mode - use a Path object, "`Line Type = 35) Parallel`"
    - Loop begin - `Rectangle, cuts top`
    - Loop end - `Rectangle, cuts bottom`
  - Line symbols (basic):
    - Line - use a Path object, "`Line Type = 0) (-)`"
  - Line symbols (specific):
    - Control transfer - `Triangle - right`
    - Communication link - use a Path object, "`Line Type = 0) (-)`", with a zig-zag in it.
    - Dashed line - use a Path object, "`Line Type = 7) (-- )`"
  - Special symbols:
    - Connector - `Circle`
    - Terminator - `Rectangle, rounded sides`
    - Annotation - `Bracket, left`
    - Ellipsis - use a Path object, "`Line Type = 12) (--- - - - )`".

  Many people move beyond the standard shapes and use additional shapes to more clearly describe different objects in flow charts.

  Here is a sample flow chart:

  Organization Charts - indicates an organization's structure, specifically the relationships between all of the positions in the organization. See Hints for Drawing Charts.

  Here is a sample organization chart:

  Quality Control Charts - many types of charts are use for quality control purposes, including Cause and Effect Diagrams, Goal/QPC Research, Hoshin Planning, and charts used for Total Quality Management.

  UML Diagrams - Unified Modeling Language diagrams indicate the relationships of classes (data and procedures) in an object-oriented computer program. See Hints for Drawing Charts.

  UML was created by Rational Software (www.rational.com). CoPlot includes all of the shape types used in UML diagrams. Here are the data symbols defined by Rational and their text shape counterparts in CoPlot:

  - Shapes:
    - Package - `Rectangle, tab`
    - Actor - `Person`
    - Use case - `Ellipse, 2 wide`
    - Note (comment) - `Rectangle, folded corner`
    - Class - `Rectangle` (use '`<hrls>`' for horizontal lines)
    - State - `Rectangle, rounded`
    - Runtime processing elements (nodes) - `Cube, right`
  - Connecting lines:
    - Dependency - use a Path object, "`Line Type = 1) (- )`"
    - Association - use a Path object, "`Line Type = 0) (-)`"

  Menu Tree / Index

  ## Edit : Objects

  `Edit : Objects` lets you quickly move, copy, or delete individual objects. The options are:
  `Move`
    lets you drag an object (with the left mouse button) to its new location. This doesn't support scaling or rotating the object as it is moved (see the `Move` option in `Edit : Any Type`). Or, if you click on an object with the right mouse button, you can edit its attributes (like `Edit : Pick One`).

    Hint for Aligning Objects - Use the '`Grid +`' toolbar button to get a fairly coarse grid (for example, 0.1 inches or 0.5 cm). Then use `Edit : Objects : Move` (or any of the other '`Move`' options elsewhere in the program) to move the objects into alignment. With a coarse grid, you can get objects in perfect alignment even if you just do it visually (without looking at the coordinates).

  `Copy`
    lets you copy an object by dragging the object (with the left mouse button) to the new location. This doesn't support scaling or rotating the object as it is copied (see the `Copy` option in `Edit : Any Type`).
  `Delete`
    lets you delete an object by clicking on it. When you pick objects to be deleted with this dialog box, the objects are temporarily erased. When you close this dialog box, the objects are actually deleted. The `Redraw` button in the dialog redraws all of the objects in the drawing, except the ones you intend to delete. The `Redraw` button in the main window redraws all of the objects (even the ones you intend to delete).
  `Hide`
    lets you pick an object and put it at the beginning of the list of objects. Whenever the screen is redrawn, that object will be drawn first and perhaps be partially hidden when subsequent objects are drawn.
  `Show`
    lets you pick an object and put it at the end of the list of objects. Whenever the screen is redrawn, that object will be drawn last so that it will not be even partially hidden.

  Menu Tree / Index

  ## Edit : Points Move

  `Edit : Points Move` lets you move individual points (the points you specified when you created the objects) by dragging them to their new location. After dragging a point, you can move it more by typing a newer X,Y position or by using the `+` and `-` buttons. Or, you can move another point.

  There is an `Undo` button to undo the changes, one by one. One unusual feature is that each time you move a different point, two undo events (not just one) are generated. This is useful, because if you then press `Undo` once, the point is returned to its original position so you can use the `+` and `-` buttons to move it.

  Hint for Aligning Objects - Use the '`Grid +`' toolbar button to get a fairly coarse grid (for example, 0.1 inches or 0.5 cm). Then use `Edit : Points Move` (or any of the other '`Move`' options elsewhere in the program) to move the objects into alignment. With a coarse grid, you can get objects in perfect alignment even if you just do it visually (without looking at the coordinates).

  Menu Tree / Index

  ## Edit : Points Boxed Move

  `Edit : Points Boxed Move` lets you mark a box (by dragging the corners) and an arrow (by dragging the base and the tip) and move all of the points in the box by the amount specified by the arrow. This is particularly useful for moving sections of a drawing.

  Menu Tree / Index

  ## Edit : Change Color

  This lets you specify an `Old Color` and a `New Color`. When you press `OK`, the procedure changes all objects with the old color so that they use the new color. For example, you could change all `red4` objects into `orange4` objects. This is not an on-the-fly change; it actually changes all of the relevant color attributes in all of the relevant objects.

  Menu Tree / Index

  ## Edit : Exchange Black And White

  This lets you change everything that is black into white, and vice versa (including the background color). This can be useful when right before making slides, since it is common to use a black (or other dark color) background and a white foreground; whereas most people use a white background and black (and other colors) for the foreground on the screen and when printing. This is not an on-the-fly change; it actually changes all of the relevant color attributes in all of the relevant objects.

  Menu Tree / Index

  ## Drawing

  The options on the `Drawing` menu apply to all of the objects in the current drawing. All of these settings are saved when you save the drawing in a .draw file.

  These are preferences which apply to the current drawing, as opposed to the preferences on the Screen menu (which apply to the program and all drawings).

  The options on the `Drawing` menu are:

  - `Background Color`
  - `Coordinates`
  - `Draw Grid`
  - `Groups`
  - `List Of Files`
  - `Load Fonts`
  - `Other`
  - `Zoom Box`
  - `Zoom 1`

  Menu Tree / Index

  ## Drawing : Background Color

  This sets the background color (a specific color, or `notDrawn`) for the drawing. See Colors. This setting is saved in the .draw drawing file.

  Menu Tree / Index

  ## Drawing : Coordinates

  This lets you set up the drawing coordinate system (the minimum and maximum values of the units you work with on your drawing). It also connects the drawing coordinates to physical coordinates (for the screen and the printer) via a `Scale` factor (drawing coordinate units `per inch`, or `per cm`).

  Overview - The drawing area is a rectangular box. You can specify any coordinate system you want for the drawing area; the default is inches. The coordinate system is always based at the lower left of the drawing, with x,y values increasing to the right and up. The coordinate system is always isotropic (a unit along the X axis is as long as a unit along the Y axis). The coordinate information is saved in the .draw drawing file.

  On the screen and when printing or saving to a graphics file, the `Scale` setting converts the drawing's user-defined coordinates into the actual physical size. For example, you might set up a drawing with `X Bounds` coordinates of 0 to 10 miles and set the `Scale` so that "2 miles" on the drawing becomes 1 physical inch on the screen or printer.

  When you print a drawing or save it to some types of vector graphics files (for example, PostScript eps, Acrobat pdf, and HPGL/2 B&W and Color), the drawing area is positioned on the page based on the `Page Width, Page Height, Left Margin,` and `Bottom Margin` settings.

  Little Boxes - When this dialog box is open, CoPlot draws little boxes at the sides of the drawing area (see `X,Y Min,Max Bounds`) and at the lower left of the drawing area (see `Left, Bottom Margin`). You can drag the boxes to change the corresponding values in the dialog box.

  Landscape Printing - If the `Page Width` value is greater than the `Page Height` value, the drawing will be printed in landscape orientation.

  Zoom - Before using the options on this dialog box, it is often useful to click on the `'Zoom -'` toolbar button four times so that you get an overview of the page and the drawing area.

  The options in the dialog box are:

  `Units Name`
    is the name of the units that you want to work with: inches, feet, miles, cm, km, pixels -- whatever. The default is the generic name: "drawing units".
  `Common Names`
    lets you pick a `Units Name` from a list of common, standard unit names.
  `X Min,Max Bounds (units)`
    specifies the minimum and maximum X values that you want to work with. These are used to set up the scroll bars and to clip the drawing when it is printed (portions of objects outside this range will not be drawn). The defaults are `X Min=0` and `X Max=8` units. These can be changed on an existing drawing (to expand or contract the range you want to work with) without affecting the size and position of existing objects.

    Alternatively, you can drag the tiny boxes on the edges of the drawing area to resize the drawing area. This is a graphical way of changing the `X,Y Min,Max` values.

  `Y Min,Max Bounds (units)`
    specifies the minimum and maximum Y values that you want to work with. These are used to set up the scrollbars and to clip the drawing (portions of objects outside this range will not be drawn). The defaults are `Y Min=0` and `Y Max=10.5` units. These can be changed on an existing drawing (to expand or contract the range you want to work with) without affecting the size and position of existing objects.

    Alternatively, you can drag the tiny boxes on the edges of the drawing area to resize the drawing area. This is a graphical way of changing the `X,Y Min,Max` values.

  `Scale (units per inch)`
    sets the scale for the drawing so that scale units in drawing coordinates (for example, 10 feet) is scaled to 1 inch on the screen or a printer. In other words, this is the connection between the drawing coordinates you want to work with (inches, sixteenths of an inch, feet, miles, cm, km, pixels -- whatever) and the physical size on the screen and when printed. The default is 1 drawing unit per inch, but you can change it. An alternative to `Scale` is `Scale (per cm)`, and changes here are mirrored there. Examples of common uses are:
    `Scale: 1, Units Name: inches`
      This makes a drawing where "1 inch" in drawing coordinates is scaled to 1 physical inch on the screen or when printed. Hence the drawing coordinates of objects matches the physical size of the objects.
    `Scale: 10, Units Name: feet`
      This makes a drawing where "10 feet" in drawing coordinates is scaled to 1 physical inch on the screen or when printed. Hence the drawing scale is 10 feet per inch.
    `Scale: 100, Units Name: pixels`
      This makes a drawing where "100 pixels" in drawing coordinates are scaled to 1 physical inch on the screen or when printed. 100 pixels per inch is useful because that is the number of pixels per inch for CoPlot's screen driver and when you use (see `File : Save As : GIF` or `JPG`.

    Screen sizes vary and resolutions vary. CoPlot makes an assumption that there are 100 pixels per inch on your screen. This is pretty close for a 17 inch monitor with a resolution of 1024x768. At 1024x768, one default unit will appear slightly shorter than an inch on 14 and 15 inch monitors, and slightly longer on 21 inch monitors. Of course, on printers, an inch is an inch. The assumption of 100 pixels per inch has a secondary benefit: line widths and other sizes are very easy to specify (0.01 inches generates a one pixel wide line, 0.02 inches generates a two pixel wide line, etc).

    Changing the `Scale` does not affect the drawing coordinates of objects. For example, if you drew a square that was 1 unit by 1 unit in size, changing the `Scale` does not change the coordinates of the square -- it is still 1 unit by 1 unit. But it does change the physical size of the square on the screen and when printed, since 1 unit is now scaled to a different number of inches on the screen or printer.

    Zoom - The effect of the scale value is modified on-the-fly by the `Drawing : Zoom` factor. Whenever you print a drawing or use `File : Save As`, CoPlot temporarily sets the `Zoom Factor` to `1`.

  `Scale (per cm)`
    sets the scale for the drawing so that scale units in drawing coordinates (for example, 10 meters) is scaled to 1 cm on the screen or printer. In other words, this is the connection between the drawing coordinates you want to work with (inches, feet, miles, cm, km -- whatever) and the physical size on the screen and when printed. The default is 0.3937007 drawing units per cm, but you can change it. For example, you could specify `Scale: 10` and `Units Name: meters` to make a drawing where 10 meters in drawing coordinates is scaled to 1 cm on the screen or printer. This is an alternative to `Scale (per inch)` and changes here are mirrored there.
  `Display`
    when you are moving the cursor over the drawing, and the drawing coordinates are being displayed, this setting determines how the X,Y coordinates will be displayed: in `User's Units` (for example, "5.3 feet"), in `inches` (when printed), or in `cm` (when printed).
  `Resulting Size`
    Given the `X Y Bounds` and the drawing `Scale`, CoPlot can calculate the size of the drawing (in inches and cm) when printed.
  `Grid Size (units)`
    You can specify the size of the grid used to position objects when you create or move them. The coordinates for the grid size are in whatever units you are working in (see `Unit's Name`). You can make the grid visible with `Draw Grid` below.

    As you move the cursor to specify a position (for example, in `Create : Path`), you will see a '`+`' following the cursor. The cursor can be moved to any pixel on the screen, but the '`+`' will only move to points on the grid. When you mark a point when creating or moving an object, the point will be placed wherever the '`+`' is, not where the cursor is.

    When you see the '`+`' cursor, you can move it with your mouse or the arrow keys on your keyboard. You can also press `Home` (like the left mouse button) or `Esc` (like the right mouse button). If you use the arrow keys and then move the mouse (even a tiny bit), the '`+`' will jump back to near the mouse's cursor.

    In situations where the grid system is not active (for example when picking an object), the '`+`' isn't drawn.

    Hint: We find that a fairly coarse `Grid Size` is useful (for example, 0.1 inches or 0.5 cm). This is small enough to give you flexibility in positioning objects, but big enough to easily align objects.

    Hint: If you want the '`+`' cursor to move smoothly, not from grid point to grid point, change the `Grid Size` to a smaller number (for example, 0.001, or smaller, depending on your coordinate system). The resulting grid size will be so small the size of pixels on the screen will be the limiting factor in positioning objects.

    Hint: You can quickly increase or decrease the `Grid Size` without opening up the `Drawing : Coordinates` dialog by using the `Grid +` and `Grid -` buttons on the toolbar. Because these buttons don't open a dialog box, they can be used at any time (for example, while using `Create : Path`).

  `Draw Grid`
    This checkbox determines if the grid (an array of dots with the spacing determined by the `Grid Size` ) should be drawn on the screen. Seeing the grid can help you line things up.

    The grid dots are drawn with what computer programmers call 'xor' drawing mode, which essentially reverses the current colors on the screen wherever the dots are drawn. Thus, the dots are drawn with different colors depending on the color of the drawing underneath each dot.

    If the `Grid Size` is so small that the dots are right next to each other, CoPlot will just draw lines. If the `Grid Size` is even smaller, so small that the lines would touch or almost touch each other, CoPlot will just draw lines at a multiple of the grid size. In either case, if CoPlot draws the grid with lines, you know the grid size is less than the pixel size.

    Regardless of the setting here, the grid is never drawn when you print the image or when you use `File : Save As` to save the drawing in some other type of file. It is just intended to be a useful tool when you are working with the drawing on the screen.

    The `Drawing : Draw Grid` menu checkbox is another way to set this setting. Since the menu checkbox doesn't require opening a dialog box, it is useful when you want to turn the grid on or off while another dialog box is open.

  `Page Width, Height (inches)`
    For printing and some `File : Save As` file types, this sets the page size, in inches. The default is 8.5 x 11 inches. Changes here are mirrored by `Page Width, Height (cm)`. To print in landscape orientation, specify a `Page Size` where the `Width` is greater than the `Height`.

    `Print Preview` - CoPlot doesn't have a `File : Print Preview` option. Instead, if you zoom out, the page is represented on the screen as a light gray area. Thus you can see what the drawing will look like when printed. One important difference: objects (or parts of objects) which are outside of the drawing area will be drawn on the screen but they won't be drawn when the drawing is printed. This is useful because it allows you to create objects entirely off of the drawing (for example, comments related to the history of the drawing).

  `Page Width, Height (cm)`
    For printing and some `File : Save As` file types, this sets the page size, in cm. This is an alternative to `Page Width, Height (inches)`, and changes here are mirrored there.
  `Common Sizes`
    lets you pick and set `Page Width` and `Page Height` from a list of common, standard page sizes.
  `Left, Bottom Margins (inches)`
    This sets the position of the drawing area on the printed page by setting the left and bottom margins (the distance from the lower left corner of the paper to the lower left corner of the drawing, in inches). Most printers have an small border where they can't print (usually, about 0.25 inches all around the page); so you generally shouldn't set this to 0, or the edge of your drawing won't be printed. The default is 0.25 inches and 0.25 inches. Changes here are mirrored by `Left, Bottom Margin (cm)`.

    Alternatively, you can drag the tiny box at the bottom left corner of the drawing area to reposition the drawing area on the paper. This is a graphical way of changing the `Left, Bottom Margins`.

  `Left, Bottom Margins (cm)`
    This sets the left and bottom margins (in cm). This is an alternative to `Left, Bottom Margins (inches)`, and changes here are mirrored there.
  `Center The Drawing`
    This tells the program to adjust the `Left, Bottom Margins` so that the drawing area is centered on the page.

  Menu Tree / Index

  ## Drawing : Groups

  Each object belongs to a group. Groups are numbered 0..65535. `Drawing : Groups` lets you choose which groups of objects are visible by specifying a list of visible groups (for example `0-3, 5` or `All`). You can use groups as if they were separate drawings (that is, layers) within one .draw file. Or, you can use groups as a way for CoPlot to 'remember' a group of picked objects (for example, for a component that is drawn with several objects that is part of a drawing) since it is easy to pick objects by their group number (see `Pick Group` on the `Edit : Xxx` dialog boxes).

  `Drawing : Groups` also has buttons that let you use groups for animation (see `Animation` below). Animation is possible because CoPlot can show a series of groups very quickly.

  Related information:

  - Change the group number - You can change the group number of picked objects like any other attribute on the `Edit : Xxx` dialogs (see the `Group` attribute).
  - Pick by group number - `Edit : Xxx : Pick Group` lets you pick objects based on their group number. The picked groups are automatically added to the visible groups list.
  - Pick from visible groups only - The other Pick options (`Pick One, Pick Box, Pick Color`, etc.) on the `Edit : Xxx` dialogs will only pick objects that are in visible groups -- non-visible objects are not pickable.
  - `Edit : Xxx : Visible Groups` - lets you specify which groups are visible, but it works a little differently than `Drawing : Groups : Visible Groups`. If objects have already been picked, their group numbers will automatically be added to the list of visible groups. Thus, CoPlot ensures that picked objects will remain visible.
  - .draw files - The group number for each object is stored in .draw files like other attributes (`setGroup(int)`).

  The options on the `Drawing : Groups` dialog box are:

  `Groups Visible`
    lets you choose which groups of objects are visible by specifying a comma-separated-value list of visible groups (for example `0-3, 5` or `All`). This lists can contain individual group numbers (for example, `5`), and ranges of groups (two group numbers, separated by a dash, for example, `0-3`). You can specify all groups by entering `All`.
  `Animation`
    Animation is possible because CoPlot can show a series of groups very quickly (groups 0 and 1, then groups 0 and 2, then groups 0 and 3, ... then groups 0 and the last active group). Group 0 is always shown so that you can use it for background objects (for example, the map of a farm) and then use the other groups (1, 2, 3,...) for the information which changes (for example, what was planted in the various fields each year). If you don't want any objects to be used as a background, just don't put any objects in group 0.

    The buttons allow you to control the animation:

    - Rewind ( `|<` ), which makes groups 0 and 1 visible.
    - Play backwards one step ( `-` ).
    - Play backwards ( `<` ).
    - Stop ( `[]` ).
    - Play forwards ( `>` ).
    - Play forwards one step ( `+` ).
    - Fast forward ( `>|` ), which makes group 0 and the last group with objects visible.
    To save the animation in an animated GIF file, use `File : Save As : Animated GIF (.gif)`. Note that you have to use `Add Frame` to save each frame (image) individually in the GIF file.
  `Frames Per Second`
    specifies the maximum speed of the animation. The animation won't go any faster than this speed, but if the frames take a long time to draw, the animation will go slower.
  `Group For New Objects`
    lets you specify the group number for new objects (on `Create : Xxx` dialogs). You can also set this on any of the `Create : Xxx` dialogs.

  Menu Tree / Index

  ## Drawing : List Of Files

  Drawing (.draw) files just store the names of data and image files used in the drawing. This dialog box shows a list of data and image files used by the current drawing.

  Since the names of datafiles may change when the drawing is saved, you must save the drawing with the `Save The Drawing` button. Then, this dialog box shows you a list of the data files, image files, and the .draw file which are used by this drawing. If you press the `Create Zip File` button, CoPlot will compress and save these files in a .zip file. The zip file is a handy way to transmit the drawing and its associated files to your coworkers.

  The zip file includes the directory names for the files. If you don't utilize the directory names when you unzip the file, CoPlot will still be able to find the data and image files because they will be in the same directory as the .draw file.

  The `Put On Clipboard` button puts the list on the clipboard. This is especially useful if you want to put the list in a `Text` or `Big Text` object, so that the list of required files is printed on the drawing (or just beyond the printed part of the drawing). This is also useful if you want to transfer the list to a word processor, a text editor, or some other program.

  Menu Tree / Index

  ## Drawing : Load Fonts

  CoPlot has 15 slots to hold font families (each family can draw light, regular, bold, light italic, regular italic, and bold italic fonts). This dialog box lets you load different font families into the font slots. Any font can be loaded into any slot. It is recommended (but not essential) that you leave the first five (standard) fonts alone. The five standard fonts are `0:Helvet, 1:TmsRmn, 2:Cour, 3:Marker, 4:Greek`.

  The font selections are saved in the .draw drawing file.

  All drawing objects that refer to fonts actually refer to a font slot number. Loading a different font into a font slot, will cause all objects which refer to that font slot to be drawn with the new font. For example, you can change all Helvet references into TmsRmn references! If an object refers to an empty font slot, the font in slot 0 is used.

  Custom fonts from DOS CoDraw - The DOS version of CoDraw allowed users to create and edit fonts. The Java version of CoPlot uses the same file format for fonts, so you can still use any custom fonts that you created for the DOS CoDraw. To use the custom fonts, copy them to the cohort directory. Use `Drawing : Load Fonts` to load the fonts and make them available in the current drawing. Ideally, for each font family, you should have three .fnt files: `name.fnt` (the standard version, for example, helvet.fnt), `name-l.fnt` (a light-weight version, for example, helvet-l.fnt), and `name-b.fnt` (a bold version, for example, helvet-b.fnt). The name-l.fnt is usually drawn with just lines, since it is often substituted for the regular and bold fonts when they are drawn at small sizes on the screen.

  In CoPlot, Font Sizes Are Specified in Drawing Coordinates, Not Points. In most programs, you specify the `Font Size`, in points (1/72"). In CoPlot, you specify the `Text Height`, in `Drawing Coordinates`. Here is why:

  In CoPlot, the `Drawing Coordinates` may match the physical size (inches or centimeters) or they may not. Specifying the `Text Height` in points makes some sense for drawings where the `Drawing Coordinates` match the physical size, but not for other coordinate systems. For example, when people (in the U.S.) make field maps, they probably use feet as the basic unit (since that is how fields are usually measured) and make drawings with coordinates that range, for example, 0 - 5000 feet. In that case, a suitable `Text Height` might be 50 "feet". The program could always tie `Text Height` to the physical size. But then if you changed `Drawing : Coordinates : Scale`, it is unclear whether the `Text Height` should change proportionally or not. It would be trouble. When the `Text Height` is measured in `Drawing Coordinates`, it is obvious that the numerical value of `Text Height` should not change with changes to `Drawing : Coordinates : Scale` (just as other size values don't change).

  Another problem arises with the use of symbols which are stored in fonts (like electrical symbols stored in the elec font). In this case, it is far more appropriate to specify the exact height of the symbol in drawing coordinates, not points.

  Personally, we have also found points to be awkward to use. For a given point size, different font families produce characters of different heights -- a 12 point Times Roman character is significantly taller than a 12 point Courier character. And the height of a capital letter has nothing to do with a font's point size (as measured in 1/72") -- a capital letter in a 72 point font is not 1" high; it is much smaller. But in CoPlot, the height of a capital letter in any font will be exactly the size that you specify (in `Drawing Coordinates`).

  Conversion Rule-of-Thumb - For most fonts, a capital letter in an n point font will be roughly n/100ths of an inch high. Thus, if your Drawing Coordinates are inches (the default), you can get a roughly 10 point font by specifying `Text Height = 0.10`.

  Menu Tree / Index

  ## Drawing : Draw Grid

  When `Drawing : Draw Grid` is checked, the grid (an array of dots with the spacing determined by the `Grid Size` ) is drawn on the screen. When it is not checked, the grid is not drawn.

  Since this checkbox doesn't require opening a dialog box, it is useful when you want to turn the grid on or off while another dialog box is open.

  This setting is an alias for `Draw Grid` on the `Drawing : Coordinates` dialog box.

  Menu Tree / Index

  ## Drawing : Other

  The `Drawing : Other` dialog box has several options related to the current drawing.

  The settings are saved in the .draw drawing file. These settings do not apply to other drawing files, and will be changed when you load another .drawing file.

  The options on the `Drawing : Other` dialog box are:

  `Author`
    is a text string which identifies the author of the current drawing. This is used by some `File : Save As` options (notably eps, pdf, svg, and cgm), to identify the author of the drawing.

    Traditionally, people just enter their name or company name here, but we recommend adding an email address or web site URL (for example, "`John Smith jSmith@myCompany.com`" or "`My Company (www.myCompany.com)`"). Because some programs display this information in a small text field, you should keep this entry pretty short.

  `Minimum Line Width`
    sets the minimum line width (in `Drawing Coordinates`) for all of the lines in the drawing. Any object which has a `Line Width` or `Fill Linewidth` specified to be less than the width here will be drawn with the width here. The object's line width value is not changed, just temporarily over-ridden. The default is 0.006, which is a thin line.

    This is useful when printing to high-resolution printers (for example, laser printers) or when using `File : Save As` to save to vector file types which are capable of drawing very narrow lines. It allows you to quickly ensure that all lines are at least the minimum width.

  `Draw Colors As`
    This lets you choose to draw colors that are neither black nor white as: `Colors, Grays, Black, Web Palette Colors,` or `CoHort Palette Colors`. This change is made on-the-fly, so the color attributes of the drawing objects are not changed.
  `Smoothing`
    This specifies if smoothing (anti-aliasing) should be used to smooth the edges of lines and text on the screen and when saving the drawing to image files. The `Mostly On` setting smooths everything except small text, which may look worse when smoothed. The default is `On`. On Mac OS X, everything looks bad unless smoothing is set to `On`.
  `Try to use system fonts *`
    is a checkbox that instructs CoPlot to use the system fonts whenever possible. Currently, on the screen, when saving a drawing as an image file (for example, .ppm, .gif, .png, and .jpg), and when printing, CoPlot can use system fonts for standard characters (characters 32-127) if the font is `Helvet, TmsRmn,` or `Courier`. Currently, when saving as a PostScript-related file (for example, PostScript .eps and Adobe Acrobat .pdf), CoPlot can use PostScript fonts for standard characters (characters 32-127) if the font is `Helvet, TmsRmn, Century` or `Courier`. In any other situation, CoPlot always uses CoHort fonts. The '`*`' indicates that the default is "checked".

    System fonts look slightly nicer than CoHort fonts on the screen and they take less time to transmit to files and printers.

  `Draw bold markers`
    When "checked", this draws markers with a bold font. The default is "not-checked".
  `Draw lines through markers`
    When "checked", lines connecting markers are drawn through the markers. When "not checked", lines connecting markers stop at the edges of the markers. When the lines are drawn through the markers, they can be drawn a little bit faster, but we don't think it looks as nice. Obviously, if the markers are solid-filled, this setting doesn't matter. The default is "not-checked".
  `Draw error bars through markers`
    When "checked", the error bar lines are drawn through the markers in graph objects. When "not checked", lines connecting markers stop at the edges of the markers. When the error bar lines are drawn through the markers, they can be drawn a little bit faster, but we don't think it looks as nice. Obviously, if the markers are solid-filled, this setting doesn't matter. The default is "not-checked".
  `Draw caps on error bars *`
    When "checked", little horizontal lines are drawn at the ends of error bars in graph objects. When the lines are not drawn, error bars are drawn a little bit faster, but (except for stock charts) it isn't the standard way to draw error bars. The '`*`' indicates that the default is "checked".
  `Missing values make gaps *`
    When "checked", the program makes gaps in lines when plotting datasets on a graph whenever there is a missing value. If this is not checked, there will not be any gaps. The '`*`' indicates that the default is "checked".
  `Enable Undo All *`
    When "checked", the program enables the `Undo All` button on many dialogs.

    There are a few dialogs that use a different and faster system to prepare for `Undo All`. These dialogs (and dialogs that have `Undo #` buttons) are unaffected by this setting.

    For large files (for example, files with more than 5000 objects), it may take a noticeable amount of time for CoPlot to set up the Undo All system when a dialog box is shown. For these files, you may wish to disable the `Undo All` system. The '`*`' indicates that the default is "checked".

  Menu Tree / Index

  ## Drawing : Zoom Box

  Zooming controls how much of the drawing you see on the screen. This dialog box controls all aspects of zooming. It also lets you specify a box on the drawing so you can zoom in on that box.

  Zooming does not affect printing or `File : Save As`. It is as if the zoom factor were temporarily set to `1` during those operations. Remember that `Drawing : Coordinates : Scale` is the setting that relates drawing coordinates to the physical size of the drawing. Zooming can be thought of as a way of modifying `Drawing : Coordinates : Scale` in a temporary way while you are working with the drawing on screen.

  The zoom information is not stored in the .draw file. Thus, drawings always load with the zoom factor set to 1.

  Windows95/98/ME does a poor and erratic job of clipping when you are zoomed way in (for example, a `Zoom Factor` greater than 50). For this reason, you may see some odd things in these situations.

  The `Drawing : Zoom Box` has these options:

  `X1, Y1, X2, Y2`
    You can zoom in on a specific section of the drawing by dragging the corners of the box (or by specifying `X1, Y1, X2, Y2`) and then clicking on `OK`.
  `OK`
    Zooms in on the specific section of the drawing specified by the box (or `X1, Y1, X2, Y2`).
  `Undo`
    Will undo the effects of the last time you pressed `OK`.
  `Zoom Factor`
    This lets you set the `Zoom Factor` directly. It affects how much of the drawing is visible on the screen. The zoom factor is a double value in the range of 0.01 to 100. The default is `1`.
  `Zoom In`
    This multiplies the zoom factor by about 1.2. Only 0.69 as much of the drawing will be visible on the screen (0.83 in the X direction and 0.83 in the Y direction). The `'Zoom +'` toolbar button is a shortcut for this.
  `Zoom Out`
    This divides the zoom factor by about 1.2. 1.4 times as much of the drawing will be visible on the screen (1.2x in the X direction and 1.2x in the Y direction). The `'Zoom -'` toolbar button is a shortcut for this.
  `Zoom 1`
    This sets the `Zoom Factor` to `1`.

  Menu Tree / Index

  ## Drawing : Zoom 1

  `Drawing : Zoom 1` sets the zoom factor to 1. See `Drawing : Zoom Box` for more information.

  It may seem redundant to have `Zoom 1` on the `Zoom Box` dialog box and on the `Drawing` menu, but there is an important difference. The options on the `Drawing` menu can be accessed without opening the `Zoom Box` dialog box. Since CoPlot allows only one dialog box to be open at once, the options on the `Drawing` menu can be accessed while another dialog box is showing, whereas the options on the `Zoom Box` dialog box can't.

  Menu Tree / Index

  ## Screen

  The `Screen` menu has many options related to the screen and to CoPlot preferences in general (not just the current drawing).

  These settings are saved in the CoPlot.pref preference file (see the CoStat Manual (costat.htm)). These settings apply to the program (not just the current drawing) and are not changed if you load a different drawing.

  These are preferences which apply to the program and all drawings, as opposed to the preferences on the Drawing menu (which apply only to the current drawing).

  The options on the `Screen` menu are:

  `Redraw`
    redraws the drawing on the screen. When editing individual objects, CoPlot just redraws the objects you are working on. This may damage the on-screen appearance of other objects if they overlap. Using `Screen : Redraw` will redraw the entire drawing.

    A note about all screen redraws - All screen redraws occur in a background thread (a computer process separate from the event-handling thread), so that control of the program always returns immediately to you while the redraw thread works in the background. If you then make another change that leads to another screen redraw, the previous redraw is cancelled (although the change to the drawing specification is always completed) and the new redraw begins.

    Users can cancel the current redraw by left clicking on the status line. This will not affect the changes being made to the drawing specification. If a screen redraw takes a long time, you can peek at the screen redraw in progress by right clicking on the status line.

  `Automatic Redraw`
    This controls whether CoPlot redraws nothing, part, or all of the drawing every time you make a change to the drawing. If you choose `No`, changes to the drawing specification are still made, but the changes do not cause the screen image to be redrawn. The default is `Yes, always redraw everything` (otherwise, the `Drawing : Other : Smoothing` feature leaves ghosts on the screen whenever an object is erased).

    `Yes, always redraw everything` looks the best on the screen. For complex drawings (particularly drawings with maps), that option may be too slow and you should use `Yes, but just things that change`. If even that option is too slow, use `No` and use `Screen : Redraw` or the `Redraw` button to manually redraw the screen whenever you desire.

  `Dialogs Inside Main Window`
    By default, `Dialogs Inside Main Window` is not checked and most dialog boxes will pop up to the right of the program's window, so that the dialog boxes don't obscure your drawing.

    If you prefer to have the dialog boxes pop up on top of your drawing (just to the left of the vertical scrollbar), put a check by `Dialogs Inside Main Window`.

    CoHort Software encourages people not to make CoPlot's main window full screen. When it is less than full screen, there is space to its right for the dialog boxes to appear and not obscure the drawing.

  `Fix MenuBar`
    Sometimes the text of the items on the menu bar is garbled when you run the program. This is a known bug that we have been unable to completely fix. Choosing `Screen : Fix MenuBar` will un-garble the text. It may be hard to find `Screen : Fix MenuBar` when the menu bar text is garbled. But if you poke around, you will find it. In unusual cases, you may need to use it two or three times.
  `Font Size`
    This lets you change the size of the system fonts used for menus, dialog boxes, the help line. This does not affect the size of any of the text used in the drawing.
  `Language`
    This lets you choose the language used for most of the one-line help messages displayed on the main window's status line and for the text of the lessons on the `Help` menu.

    Many thanks to the people who edited the translations: Roberto Masini and Marco Contin (Italian), Carlos Costa and Florindo Luiz Castoldi (Portuguese), and Fernando J. Parra Velandia (some of the Spanish phrases). The other translations (done by a computer program) are far from perfect. We will continue to work on improving the translations.

  `Path Aliases` ``
    Because CoPlot stores the names of datafiles and image files in .draw files and not the actual data or images, if you move a .draw file to another computer, the references to the data and image files can become invalid. The `Path Aliases` system is an optional system which can solve this problem by giving names (called "`Path Aliases`", for example "`2000Data::`") to commonly used directories (called "`Real Paths`", for example "`c:\users\bob\data\`" on one computer, but "`d:\mydata\`" on another computer). When a .draw file is saved, data and image file names that start with a Real Path name (for example "`c:\users\bob\data\`") will be saved with a Path Alias (for example "`2000Data::`") instead. When the .draw file is opened on another computer, the data and image file names that start with a Path Alias (for example "`2000Data::`") will be changed so that they start with the new Real Path name (for example, "`d:\mydata\`").

    The `Suggest Real Paths` button looks through the current drawing file and makes sure that all of the directories used by data and image files are listed in the Real Path column.

    Details:

    - When loading data and image files within CoPlot, use the regular real path names, not the Path Aliases. The Path Alias system is just used by CoPlot when .draw files are saved or opened.
    - The Real Path names and the Path Aliases that you enter on this dialog box are stored in the CoPlot.pref file. When you run the program next time, the Real Path names and the Path Aliases will be reloaded.
    - The .draw file also stores the Real Path names and the Path Aliases. But these instances are only used if CoPlot tries to load a .draw file, but doesn't recognize the Path Aliases that are referenced in the .draw file.
    - This system works best if you store data and image files in just one or only a few directories and if you routinely transfer files to another computer which has corresponding directories.

    Alternative - When CoPlot loads a drawing which refers to a .dt or image file which should be in some other directory (but isn't), CoPlot also looks in the same directory as the .draw file. Thus, if you keep related .draw, .dt, and image files in the same directory, CoPlot will find them if you move them all to a different directory (even a different computer).

  `Show CoText`
    This creates an instance of CoText, the text editor that is built into CoPlot, and displays it. Sometimes it is useful to have a text editor easily available. See CoText's `Help` menu for information on how to use CoText. This is a different instance of CoText than the one used by CoStat to capture statistical results, so you can edit one text file in CoPlot's copy of CoText and edit another text file in CoStat's copy of CoText.
  `Slash Date Format`
    This lets you specify how the program should interpret date strings with slashes (as MM/DD/YYYY or as DD/MM/YYYY) whenever CoStat or CoPlot encounters them. See "Entering Numeric Values: Slash Dates" in the CoStat manual.
  `Text-Only Buttons`
    When this is checked, the buttons right below the main menu will show text only, not images and text.

    When the buttons show text only, the font size will be slightly smaller that the font size specified with `Screen : Font Size`. When the buttons show images and text, the font size is fixed.

    If CoPlot is not installed quite right (notably, if the XxxButton.gif files aren't present in the cohort directory), the buttons will appear text-only regardless of whether `Screen : Text-Only Buttons` is checked. See the download page at www.cohort.com.

  `Tool Tips`
    Tool tips are little help windows which pop up automatically when the cursor is motionless for a few seconds over a GUI widget (for example, a button or a textfield). When this checkbox is checked, the tool tips feature is enabled and tool tips will appear for some GUI widgets. Changes to this setting are applied to all currently open CoPlot, CoStat, and CoText windows (if they are using the same instance of the Java Virtual Machine).
  `Use System File Dialog`
    When this checkbox is checked (and if a macro isn't playing or recording), CoPlot uses the file dialog box that the operating system provides; otherwise, CoPlot uses the file dialog from CoHort Software. If you prefer the operating system's file dialog, make sure this checkbox is checked.

  Menu Tree / Index

  ## Macro

  This menu has options related to recording, playing, and editing macros. Since macros work the same way in different CoHort programs, they are described in one place: see Using Macros and The Macro Language in the CoStat Manual (costat.htm).

  If you run CoPlot from the command line, you can have it run a macro immediately by putting the name of a macro as the last parameter on the command line (for example, MyMacro.cpm).

  The `Macro` and `Help` menu options behave slightly differently than other menu options:

  Usually, only one dialog box can be visible.
    For non-`Macro` and non-`Help` menu options, CoPlot allows only one dialog box (and its children) to be open at once. Thus, if you make a menu selection which opens a dialog box, CoPlot will automatically close a currently open dialog box. The `Macro` and `Help` dialog boxes are not part of this system; they do not cause other dialog boxes to close nor do other dialog boxes cause them to be closed.
  Usually, user actions are recorded in macros.
    For non-`Macro` and non-`Help` menu options, CoPlot records all user activity when recording a macro. But `Macro` and `Help` menu related activities are not recorded.

  Menu Tree / Index

  ## Help

  This menu has various help options:
  `Lesson 1,2,3,4,5,6`
    The lessons are dialog boxes with information about how to use CoPlot.
    - Lesson 1 - Creating and Editing Drawing Objects
    - Lesson 2 - The 'Edit', 'Drawing', and 'Screen' Menus
    - Lesson 3 - Shortcuts
    - Lesson 4 - Macros
    - Lesson 5 - Different Types of Drawings - which includes block diagrams, electrical schematics, plasmid maps (genetic maps), pie charts, and chemical structures.
    - Lesson 6 - Creating Graphs
  `Switching from DOS CoPlot to Java CoPlot`
    shows a dialog box with a lot of detailed information useful to people switching from the DOS programs. This manual has an even more useful version (because it has lots of hyperlinks): see Switching From DOS CoStat, CoPlot, and CoDraw
  `Quick: Plot your data on a graph`
  `Quick: Plot your data on a map`
    These options show a dialog box with a brief description of how to plot your data on a graph or map.
  `Mac OS X`
    shows a dialog box with information specific to running CoPlot on a Mac with OS X.
  `Online`
    shows a dialog box that says that the online help is in coplot.htm (this document).
  `Register`
    shows a dialog box that lets you register your copy of the program by entering `Your Name` (first and last, for example, "`John Smith`") and your `Registration Number` (a large integer number). When you press the `Am I registered?` button, CoPlot will check if the information is valid. You can buy a license and get a registration number from CoHort Software. Until you buy a license and enter the registration information here, CoPlot will display "not registered" on your drawings.
  `View Error Log`
    CoStat writes low level diagnostic messages and error messages to an ASCII text file called "error.log" in the cohort directory. If you select `Help : View Error Log`, you can view the file. These messages probably won't mean much to you, but they are useful to us at CoHort Software when debugging the programs and when trying to solve problems that you encounter. If the program freezes or crashes, the error log is often particularly valuable. We may ask you to email this file to us. Note that viewing the file with `Help : View Error Log` clears the file.
  `About`
    displays information about:
    - The Program - the version number, the copyright information, and how to contact CoHort Software.
    - The Java Virtual Machine - the company name and version number.
    - The Java Just-In-Time Compiler - if one is being used. Note that even when HotSpot is active, it reports `'none'`.
    - Memory - "Currently Using" indicates how much memory CoPlot is currently using for its data structures. "max" indicates the maximum amount of memory Java has allocated for CoPlot's data structures in this session. When you select `Help : About`, CoPlot runs the Java garbage collector (which reclaims data structures which are no longer in use), so these numbers are accurate, but don't indicate how memory was allocated before garbage collection was done. These numbers say nothing about how much memory the Java Virtual Machine is using (a lot!) or is allowed to allocate (the "`-Xmx`" amount on the command line), since those numbers are not accessible from a Java program. See Memory in the CoStat Manual (costat.htm).
    - `Your Name` from `Help : Register` and whether or not this copy of CoPlot is registered.

  The `Macro` and `Help` menu options behave slightly differently than other menu options:

  Usually, only one dialog box can be visible.
    For non-`Macro` and non-`Help` menu options, CoPlot allows only one dialog box (and its children) to be open at once. Thus, if you make a menu selection which opens a dialog box, CoPlot will automatically close a currently open dialog box. The `Macro` and `Help` dialog boxes are not part of this system; they do not cause other dialog boxes to close nor do other dialog boxes cause them to be closed.
  Usually, user actions are recorded in macros.
    For non-`Macro` and non-`Help` menu options, CoPlot records all user activity when recording a macro. But `Macro` and `Help` menu related activities are not recorded.

  Menu Tree / Index

  ## Speed

  Normal Behavior

  - On a 200 MHz or faster computer with 64 MB or more of memory, CoPlot should run reasonably quickly, even with complex drawings and large datafiles. The program may pause for a second unexpectedly every few minutes. That is normal.
  - If you are also running another program and you return to the CoPlot window, CoPlot may be sluggish for a few seconds.
  - On a computer that is slower than 200 MHz, performance should degrade proportionally to the speed of the computer.
  - On a computer with 32 MB of memory, the program will become unreasonably slow with medium-sized drawings or medium-sized data files. Please consider getting more memory.
  - Very complex drawings or large datafiles will make the program sluggish. Roughly speaking, this includes drawings with more than 10,000 of any kind of object, or more than 1000 ellipses, or more than 500 text objects, or more than 20 graphs, or many images, or large images. Datafiles with >100,000 numbers or >50,000 Strings will also make the program sluggish, but it varies greatly in different procedures. If you go over these levels, you will want to be using a computer that is as fast as possible (certainly faster than 200 MHz) and which perhaps has more memory.

  Abnormal Behavior

  - Excessive pausing and disk activity - If the program normally runs quickly, but suddenly (perhaps after opening a huge datafile or huge image) you notice that the program is pausing frequently and the disk drive is frequently active when you are not loading or saving a file, you are probably low on memory. Check your memory usage with `Help : About : Memory`. If the `max` memory usage is more than the amount of memory in your computer minus 32 MB, this is almost certainly the problem. Read about Memory in the CoStat Manual (costat.htm). If you are working with large datafiles, or drawings with a huge number of objects, or have just 32 MB of memory, please consider getting more memory for your computer.

    If you run the program from a batch file or shell script, it may indicate that the program is not configured properly. Did you modify the batch file which runs the program? If so, make sure that `-Xincgc` is still on the command line which runs the program. See the download page at www.cohort.com for information about installing and running CoPlot.

  - If the program seems slower than is reasonable considering the size of your drawing and datafile, the `Help : About` max memory usage, and the amount of physical memory in your computer, contact CoHort Software and ask for advice.

  Things You Can Do To Speed Up CoPlot

  `Edit : Path : Type`
    `Edit : Path : Type: Line` draws much faster than `Spline` or `Bezier`.
  `Ellipse`
    Ellipse objects are drawn faster when `Ellipse nSides` is set to a smaller number. For small ellipses, you can often reduce `Ellipse nSides` without affecting the appearance of the ellipse. But remember that a larger value of `Ellipse nSides` is needed to make an ellipse look nice on a printer compared to on a screen.
  `Marker Type`
    `Marker Types` drawn with a few straight lines (for example, plus, square, triangle) draw much faster than `Marker Types` drawn with curved lines (for example, circles) or filled areas (for example, filled squares).
  `Graph : Dataset : Representation`
    Simple `Graph : Dataset : Representations` (for example, `Line`) are drawn much faster than more complex representations (for example, `Spline` or `Marker`). The comments about `Marker Type` (above) apply to `Marker` representations. Markers that are letters in standard fonts (like `Helvet` or `TmsRmn`) are drawn faster than markers in the `Marker` font.
  `Graph : Map`
    If your drawing has a graph has map layers, consider changing their `Line, Background` and `Text Color` to `notDrawn` temporarily. Map layers take a long time to draw.
  `Graph : Legend`
    Large legends are drawn very slowly. When animating graphs, consider setting the `Edit : Graph : Legend : Color` to `notDrawn`.
  Datafiles with String data
    Some procedures (notably, `Edit : Sort`) work much more slowly on datafiles with String data than datafiles with just numeric data. And any operations that access the String data are many times slower than operations with the numeric data. Never store numeric data as Strings (use CoStat's `Edit : Format Columns : Simplify` to store the data in a more efficient way).
  `Pick`
    When a drawing has a huge number of objects (>10,000?), `Pick One` will be somewhat slower than the other `Pick` options.
  `Screen : Automatic Redraw`
    If you are working with a drawing that takes a long time to redraw, select `Screen : Automatic Redraw : Yes, but just things that change`. In extreme cases, set it to `No`. Then you can use the program quickly, since there won't be any redraws unless you specifically request them (via `Screen : Redraw` or the `Redraw` button).
  Printing
    - Use the recommended cable - Recent computers and printers often recommend an IEEE-1284 compliant parallel cable, which looks just like a cheap parallel cable, but performs much better.
    - `Printer Properties` - Often, changes to your computer's printer driver can make a huge difference in printing speed (in Windows, see `My Computer : Control Panel : Printers`, right click on your printer, and choose `Properties`). On our HP LaserJet, for example, selecting `Graphics : Use raster graphics` prints much faster than `Graphics : Use vector graphics`. The type of dithering the printer driver uses also can make a huge difference.
  Get more memory
    Java Virtual Machines (the programs that run Java programs like CoStat) perform better when there is more physical memory in the computer. This is particularly true of Sun's "HotSpot" JVMs.
  Get a better graphics card
    The color depth of the graphics card in your computer can affect the speed of CoPlot. Usually, Java should run somewhat faster with graphics cards that run in a 24 or 32 bits per pixel mode (16.7 million colors) rather than an 8 or 16 bits per pixel mode (255 or 65536 colors).
  Use a faster computer
    We understand that buying a faster computer usually isn't an option. Maybe you can use someone else's faster computer when working with big files. This is facilitated by the fact that Java programs such as CoPlot can be run on many different kinds of computers and since all of CoPlot's files are platform independent.
  Report the problem to CoHort Software
    If some part of the program seems unreasonably slow, report it to CoHort Software. We may be able to rewrite the procedure to make it faster.

  Menu Tree / Index

  ## Colors

  Most objects in CoPlot let you set a color attribute by picking a color from a dialog box. The color dialog box has:

  142 colors
    white, black and 10 shades each for gray, red, orange, yellow, lawn, green, spring, cyan, sky, blue, purple, magenta, maroon, and brown. The shaded colors are named with the base color name (for example, `blue`) plus a digit `0` (almost white) - `9` (almost black). Shade 4 is always the pure color. For example, `blue4` is pure blue. These color names appear in other dialog boxes. The current color name and number (in 0xRRGGBB hexadecimal notation) are always displayed below the color samples.
  `notDrawn (ND)`
    which means "Not Drawn". Choose this is you don't want the object (or this part of the object) to be drawn.
  `mapDefault (MD)`
    which means "Map Default". This is useful only for the `Map` parts of a `Graph` object. Since the map data files have default colors for the objects, choosing `mapDefault` lets you use those defaults. For any other situation, `mapDefault` is inappropriate and acts like `notDrawn`
  Custom Color
    You can specify a custom color (a color not in the palette) by specifying the `Red, Green,` and `Blue` components (each is an integer, 0 - 255) of the color and then pressing the `Apply` button.

    This allows you to specify any one of about 16.7 million colors.

    In some place in the program, these colors will be described by their hexadecimal name which uses the format 0xRRGGBB (2 hexadecimal digits each for the red, green, and blue components).

  Double Click - In the color dialog box, if you double click on a color, the color will be selected and the dialog box will be closed.

  `Color2.colorNames` - Whenever you are entering a number, referring to a color in a `<color=>` embedded text command, or referring to a color in a .draw file, you can refer to a color name (preceded by "`Color2.`") instead of an integer. For example, `<color=Color2.red4>` is equivalent to `<color=0xFF0000>` (the format is 0xRRGGBB, where 2 hexadecimal digits each for the red, green, and blue components). Internally, color names are specified in a Java class called `Color2`.

  Other methods related to colors:

  `Drawing : Background Color`
    lets you choose the background color for the drawing area for this drawing. The information is stored in the .draw file when you save the drawing. `White` or "`notDrawn`" are recommended, since you will often be printing to a white piece of paper. If you choose a color other than white and print to a color printer, it will use a lot of ink.
  `Drawing : Other : Draw Colors As`
    lets you choose how non-white and non-black colors will be drawn temporarily: as colors, as grays, or as black. This may be useful when printing a drawing with colors other than black and white on a black and white printer, although most printers convert the color information to gray-scale. This setting works on-the-fly; it affects the appearance of a drawing on the screen and when printing; it does not affect the color information that is associated with each drawing object.
  `Edit : Change Color`
    can change all references to a specific color to some other color. For example, you might change everything that uses `red4` to `red2`.
  `Edit : Exchange Black and White`
    changes all references to white into references to black, and vice versa. This is useful when switching between a drawing prepared for printing (usually with a white background) and a drawing prepared for a slide maker (usually with a black or dark background).

  On color printers the program tries to print colors on the printer that mimic the colors on the screen. Thus if you are printing onto a white piece of paper and you want some of the foreground objects to be drawn with black ink, you need to use those colors on the screen. If necessary, use `Edit : Exchange Black and White`.

  Some printer drivers change non-black line or text colors into black. This is out of our control. If this causes a problem for you, try to get an alternative driver for your printer.

  Color Perception Problems - Human perception of colors is not straightforward.

  - A given color will look different depending on the surrounding colors.
  - A given color will look different if it is used for a small vs. a large area.
  - A given color will look different in different ambient light.

  Color Production Problems - Different devices render the same color differently.

  - The colors you see on the screen won't exactly match what is printed because screens and printers create colors in very different ways (phosphors vs. inks).
  - Because they use very different technologies to produce colors, screens and printers have a different range of available colors.
  - A given color will look different on different models of monitors because of different monitor technologies.
  - A given color may look different on different monitors of the same model because of different monitor settings.
  - A given color will look different on different models of printers because of different printer technologies (for example, inkjet vs. laser vs. dye sublimation).
  - A given color may look different on different printers of the same model because of ink cartridge differences or different settings.
  - A given color may look different on the same printer at different times because of changes to the ink cartridge or different paper.

  Color Matching - Because of color perception and color production problems, it may difficult to get exactly the color that you want. One thing you can do is use `File : Open : GIF (.gif)` to load the file called `palette.gif` in the cohort directory. Then use `File : Print` to print the resulting drawing. You can use the printout to try to adjust your monitor so that the screen and printer colors match as closely as possible. Also, you can use the printout as a reference for picking colors, so that you know ahead of time exactly how a given color will look when printed.

  Internally, CoPlot stores the colors as 32 bit integers (256 levels each for the red, green, and blue components), which allows for about 16.7 million different colors. You can use any of these colors by specifying the `Red, Green`, and `Blue` components on the color dialog box. But there are advantages to sticking to the standard 122 colors:

  - It makes it harder to accidentally assign two similar colors for two objects when you meant to assign the same color.
  - It makes it easy to use `Edit : Change Color` to change all references to a specific color to some other color.

  Problems On 256 Color Graphics Cards - Many graphics cards (for example, using a screen resolution of 1024x768 on a 1MB video card) support only 256 colors. In this case, there is often an imperfect match between the colors specified by the program and the colors available on the screen. The operating system will display the closest available color. This leads to close but imperfect color samples on the screen. (On one of our computers, `sky3` looks just like `cyan3` and neither looks appropriate.) The color rendering will improve if you take the drawing to a computer which supports more than 256 colors, or print the drawing to a color printer which supports more than 256 colors.

  Menu Tree / Index

  ## Embedded Text Tags

  Whenever you are entering text that is part of a drawing object, you can insert HTML-like embedded text tags which control underlining, boldness, italics, different font sizes, etc. If you press the '`<>`' button to the right of a textfield, you can see a list of tags and pick one. It will be inserted in the text at the current insertion point. Or you can just type the tag. For some tags (for example, `Color`), you need to modify the tag slightly (for example, by specifying the name of the color that you want).

  Details -

  - Most of the tags that CoPlot supports are standard HTML tags.
  - All of the tags use the basic HTML tag syntax: they start with '`<`' and end with '`>`'.
  - Many of the tags should be used in pairs. For example, '`This is <B>bold</B>`.' (which also demonstrates that the 'off' tag is the same as the 'on' tag, except that it has a '`/`' right after the '`<`'.
  - The tags are not case sensitive ('`<B>`' equals '`<b>`').

  Non-standard tags or non-standard uses of tags in CoPlot are marked "[non-standard]" below. In general, CoHort has added two types of non-standard tags:

  Low level physical tags
    These let you specify low-level features. Standard HTML avoids this type of tag but it seems important to make them available since they are sometimes to only way to get some things done. Examples are `<MARK>, <OV>, <RT>,` and `<UP>`;.
  Mathematical tags
    These are for formatting mathematical equations. Examples are `<ATOP>, <EXPAND>, <OVER>, <INT>, <SQRT>, <SUBSUP>,` and `<UNDEROVER>`.

    After we created these, the W3 organization proposed MathML, a math extension to HTML. It seems to be very complete, but quite complex, and more geared toward computer processing of the information than to the initial creation of equations by humans.

  Not supported tags - Some commonly used HTML tags are not supported: `<H1> - <H6>,` and the standard `<FONT>` tag attributes for text color, face, and size (which are replaced by the `<COLOR=>, <FONT=>,` and `<SIZE=>` tags since we use different parameters).

  Embedding Tags Within Tags - In almost all cases, it is okay to embed tags within tags (for example, `<tt><b>This is TT and Bold.</b></tt>`). In fact, it is allowed to a greater extend that standard HTML. The exceptions center around the use of `<atop>` and similar tags that draw text on two lines because CoPlot currently does not adjust for the extended vertical boundary. For example, `<sqrt><atop1>over<atop2>under<atop3></sqrt>` currently does not work properly.

  Non-ASCII Characters - You can get non-ASCII characters by using character entities (HTML-like names for unusual characters). For example, '`&Aacute;`' is drawn as '`Á`'. There are character entities for accented characters, Greek characters, mathematical symbols, and other symbols. There is often an '`&`' button to the right of the textfield which will show you lists of character entities.

  Common Error Messages - If CoPlot doesn't recognize an embedded text tag or if the syntax of the tag is nor correct, it may do one of two things:

  - Ignore the problem and just print the characters as if they were ordinary text.
  - Show you a 'Bad News' dialog box indicating the problem. Common problems include:
    - Using `<` to mean "less than" when you should have used `&lt;`, the character entity for "less than". CoPlot will think it is the beginning of a tag and will not recognize the tag. CoPlot will display an error message: `Unknown <tag>: <something`.
    - Misspelling a tag. Again, CoPlot will display an error message: `Unknown <tag>: <something>`.

  Why HTML? HTML is a very widely used, cross-platform, standard method for formatting text. We considered other embedded text systems, but rejected them:

  - RTF - seems too tied to Microsoft products. It is not an open standard. Far fewer people are familiar with RTF than HTML. Lately, even Microsoft has moved away from RTF and toward HTML.
  - TeX - is very powerful but quite complex for novices. Far fewer people are familiar with TeX than HTML.
  - The CoHort for DOS system - was too restricted by being limited to one character commands.

  Here are the supported tags and examples:

  `<ARCDIMENSION units format>`
    (in ellipse objects only) inserts the angle defined by the ellipse. 'units' may be:
    - '`d`'=degrees,
    - '`r`'=radians,
    - '`p`'=multiples of pi radians.
    - anything else = treat as '`d`'egrees.
    'format' may be:
    - '`g`'=general format,
    - '`f`'=a fraction,
    - '`0'..'9`'= a fixed number of digits to the right of the decimal point.
    - anything else = treat as '`g`'eneral.
    Examples: `<ARCDIMENSION d g>` (degrees general), `<ARCDIMENSION r 4>` (radians 4 decimal places), `<ARCDIMENSION p f>` (pi fraction).
  `<ATOP1> <ATOP2> <ATOP3>`
    let you put some text over other text. [non-standard]
    - For example, `<ATOP1>over<ATOP2>under<ATOP3>`.
    - CoPlot is smart enough to know which text is longer and to append subsequent text appropriately.
  `<B>`
    increases the current font weight setting. '`</B>`' decreases it.
    - All fonts are available in light, normal, and bold weights.
    - The closest available weight is displayed.
    - '`</B>`' can be used before '`<B>`' to lighten the initial font. [non-standard]
    - For example, `This is <B>bold</B>.`
  `<BAR>`
    turns on the printing of a line over subsequent lower case letters. `</BAR>` turns it off. [non-standard]
    - This is useful for putting a bar over a lower case letter.
    - The weight of the line is determined by the bold level in effect when `<BAR>` is started.
    - For example, `The mean is <BAR>x</BAR>`.
    - See also `<OVERLINE>`
  `<BIG>`
    really means bigger. `</BIG>` really means smaller (by an amount inverse to `<BIG>`).
    - 1 BIG = 1.2247x bigger; 2 BIGs = 1.5*bigger; etc.
    - `<BIG>, </BIG>, <SMALL>, </SMALL>` can be used in any order. [non-standard]
    - For example, `This is <BIG>big and <BIG>bigger</BIG></BIG>.`
  `<BR>`
    causes a break (starts a new paragraph) with no gap between paragraphs. There is no `</BR>`.
    - For example, `line 1 <BR>line2`.

    An alternate form of this tag is `<BR=double>`, where double specifies the line spacing for this line break (as a number to be multiplied by the normal single spacing). For example, `<BR=1.5>` will generate a line spacing halfway between single and double spacing. [non-standard]

  `<CENTER>`
    causes subsequent lines of text to be centered. It also acts like `<BR>` if there is any text on the current line. This tag only works when the text object's hAlign is left and when `<LINELENGTH=double>` has been defined. There is a `</CENTER>` tag. But unlike in HTML, it is not required.

    The intended use of this tag is with CoPlot's Text and Big Text objects. For these objects, CoPlot internally uses `H Align: Left` and automatically defines the `LineLength`. For text in other situations (for example, a graph's title), use the H Align setting instead.

    - For example, `Original <left> Left! <center> Center! <right> Right!`
  `<CITE>`
    turns on italics. `</CITE>` turns italics off.
    - For example, `This is a <CITE>citation</CITE>`.
  `<CODE>`
    turns on Monospaced font. `</CODE>` returns to the previous font.
    - For example, `This is <CODE>code</CODE>.`
  `<COLOR=int>`
    lets you change the current text color. [non-standard]
    - `</COLOR>` returns you to the previous color.
    - The number values can be in integer or 24 bit hexadecimal form with the red, green, and blue components. For example, `<COLOR=0xFF0000>This is red!</COLOR>`.
    - The number value can also be a `Color2.colorName`. For example, `<COLOR=Color2.red4>This is red!</COLOR>`.
    - Because color definitions may change slightly, it is better to use the color names than color numbers.
  `<!-- Comment -->`
    Comments are not printed. There may be other tags within comments.
    - For example, `<!-- This is a comment. -->`.
    - Comments can't be embedded in other comments.
  `<DATE>`
    inserts the current date. [non-standard]
    - For example, `The date is <DATE>.`
  `<DIMENSION format>`
    (in Dimension objects only) inserts the distance between the two points in `Drawing Coordinates`. 'format' may be:
    - '`g`'=general (`String2.gen(d,9,0)`),
    - '`f`'=fraction,
    - '`0'..'9`'= a fixed number of digits to the right of the decimal point.
    - (nothing)=nothing or any invalid format is treated as '`g`'eneral.
    For example, `<DIMENSION g>`.
  `<DRAWINGNAME>`
    inserts the current drawing name (no directory or extension). [non-standard]
    - For example, `The drawing is <DrawingName>.`
  `<EM>`
    (emphasize) turns on italics. `</EM>` turns italics off.
    - For example, `This is <EM>emphasized</EM>.`
  `<EXPAND=double value>`
    changes the current height of the characters relative to the current height but leaves them with the same centerY. [non-standard]
    - The value can be a positive decimal amount.
    - This is used internally by
    - For example, `<EXPAND=2>doubled<EXPAND=0.5> normal`.
  `<FLIP>`
    rotates the character 180 degrees about its center. `</FLIP>` turns it off. [non-standard]
    - For example, `<FLIP>?</FLIP>` gives you an inverted question mark, although it is better to use `&iquest;` for that symbol, since it should also be lowered below the base line.
  `<FONT=fontname>`
    lets you change the current font. `</FONT>` returns you to the previously loaded font. [non-standard]
    - If the font has not been loaded, it will be loaded automatically.
    - If the font can't be found or loaded, the current font won't change.
    - For example, `<FONT=GREEK>a</FONT>`.
  `<FRAC1> <FRAC2> <FRAC3>`
    lets you create a fraction: some text over some other text with a line in between (like `OVER`, but compressed in size). [non-standard]
    - For example, `<FRAC1>numerator<FRAC2>denominator<FRAC3>`.
    - It is smart enough to know which text is longer and to append subsequent text appropriately.
  `<FULLDRAWINGNAME>`
    inserts the current drawing name (with the directory and extension). [non-standard]
    - For example, `The drawing is <FullDrawingName>.`
  `<HR>`
    starts a new paragraph and puts a horizontal rule (a line) between the paragraphs. There is no `</HR>`.
    - For example, `Before <HR> After`.
  `<HR2>`
    starts a new paragraph and puts a double horizontal rule (two lines) between the paragraphs. There is no `</HR2>`. [non-standard]
    - For example, `Before <HR2> After`.
  `<HRLS>`
    starts a new paragraph and puts a horizontal rule (a line) between paragraphs, with very little space (hence "LS") above and below the line. There is no `</HRLS>`. [non-standard]
    - For example, `Before <HRLS> After`.
  `<HRLS2>`
    starts a new paragraph and puts a double horizontal rule (two lines) between paragraphs, with very little space (hence "`LS`") above and below the lines. There is no `</HRLS2>`. [non-standard]
    - For example, `Before <HRLS2> After`.
  `<I>`
    turns on italics. `</I>` turns italics off.
    - For example, `This is <I>italics</I>`.
  `<INT1> <INT2> <INT3>`
    let you define an integral. [non-standard]
    - For example, `<INT1>sub<INT2>sup<INT3>`.
    - It is smart enough to know whether the sub or sup text is longer and to append subsequent text appropriately.
  `<KBD>`
    (keyboard-style font) turns on Monospaced font. `</KBD>` returns to the previous font.
    - For example, `This is <KBD>keyboard-style</KBD>`.
  `<LEFT>`
    causes subsequent lines of text to be left justified. It also acts like `<BR>` if there is any text on the current line. There is a `</LEFT>` tag, but it is not required. [non-standard]

    The intended use of this tag is with CoPlot's text and Big Text objects. For these objects, CoPlot internally uses `H Align: Left` and automatically defines the `LineLength`. For text in other situations (for example, a graph's title), use the `H Align` setting instead.

    - For example, `Original <left> Left! <center> Center! <right> Right!`
  `<LeftMargin=double>`
    moves the left margin to the right by double*textHeight. Any text on the current line is printed. 'double' may be positive or negative, but there will be problems if the net change moves the left margin to the left of the original left margin. [non-standard]
  `<LegendBackground exampleSize=1 bColor=Color2.blue1 up=0>`
    LegendBackground draws a filled rectangle with the specified attributes. All of the parameters must be present and must use the format specified above. This is useful for creating a legend entry. '`up`' shifts the sample upwards but intentionally doesn't influence the line's y bounds. [non-standard]
  `<LegendFill exampleSize=1 lColor=Color2.blue4 lType=0 lDashsize=.02 lWidth=.003 bColor=Color2.blue1 fColor=Color2.blue4 fType=1 fSize=.1 fLinewidth=.003 up=0>`
    LegendFill draws a filled rectangle with the specified attributes. All of the parameters must be present and must use the format specified above. This is useful for creating a legend entry in a custom legend. '`up`' shifts the sample upwards but intentionally doesn't influence the line's y bounds. [non-standard]
  `<LegendHighLow exampleSize=1 width=0.1 lColor=Color2.blue4 lWidth=.005>`
    LegendHighLow draws a vertical line with ticks to the left and right, with the specified attributes. All of the parameters must be present and must use the format specified above. This is useful for creating a legend entry in a custom legend. [non-standard]
  `<LegendLine exampleSize=1 lColor=Color2.blue4 lType=0 lDashsize=.02 lWidth=.003>`
    LegendLine draws a centered line with the specified attributes. All of the parameters must be present and must use the format specified above. This is useful for creating a legend entry in a custom legend. [non-standard]
  `<LegendMarker exampleSize=1 lColor=Color2.blue4 lType=0 lDashsize=.02 lWidth=.003 mColor=Color2.blue4 mFont=3 mType=52 mSize=.1 mBackground=Color2.notDrawn up=0>`
    LegendMarker draws 1 (or 2 markers with a connecting line if `lColor!=Color2.notDrawn`) with the specified attributes. All of the parameters must be present and must use the format specified above. This is useful for creating a legend entry in a custom legend. [non-standard] [`mBackground` and `up`, optional but strongly recommended, were added in version 6.100.]
  `<LegendVector exampleSize=1 lColor=Color2.blue4 lWidth=0.003>`
    LegendVector draws a vector with the specified attributes. All of the parameters must be present and must use the format specified above. This is useful for creating a legend entry in a custom legend. [non-standard]
  `<LegendWhiskers exampleSize=1 width=0.1 bColor=Color2.notDrawn lColor=Color2.blue4 lWidth=.003 caps=1>`
    LegendWhiskers draws a box and whiskers symbol with the specified attributes. All of the parameters must be present and must use the format specified above. This is useful for creating a legend entry in a custom legend. [non-standard] [`bColor`, optional but strongly recommended, was added in version 6.100.]
  `<LegendWindbarb exampleSize=1 lColor=Color2.blue4 lWidth=0.003>`
    LegendWindbarb draws a windbarb with the specified attributes. All of the parameters must be present and must use the format specified above. This is useful for creating a legend entry in a custom legend. [non-standard]
  `<LINELENGTH=double>`
    specifies the linelength (in drawing units) used to determine when a line is so long that it needs to be broken. The initial value is infinity, so lines won't be broken unless you use this tag. The value can be a positive decimal amount. [non-standard]
  `<LI>`
    identifies the start of the next item in the current list. Use this after `<OL>` or `<UL>`.
  `<MARK>`
    marks the current point. `</MARK>` makes the last MARKed point the current point. [non-standard]
    - Most users won't ever need to use this.
    - This is used internally to control `<OVER>, <SUBSUP>,` etc.
    - For example, `<MARK>1st pass</MARK>2nd pass`.
  `<OL>`
    starts an ordered list. Lists can be embedded in other lists. `</OL>` ends the current list.
    - The 1st list uses A,B,C,D,...
    - The 2nd list (embedded in the 1st) uses a,b,c,d,...
    - Subsequent lists use 1,2,3,4,...
    - `<LI>` identifies each of the list items.
    - For example: `<OL> <LI> text1 <LI> text2 </OL>`.
  `<OV>`
    turns on Overstriking of subsequent characters. `</OV>` turns it off. [non-standard]
    - The widest character determines the width of the overstruck unit.
    - Overstruck characters can be in different fonts, but all get the weight based on weight when `/OV` is processed.
    - Most users won't ever need to use this. Use the &names (Character Entities) instead.
    - This is used internally to implement many &names.
    - For example, `<OV>a`</OV> for à`.
  `<OVER1> <OVER2> <OVER3>`
    lets you put some text over other text with a line in between. The size of the text is the current text size. [non-standard]
    - For example, `<OVER1>over<OVER2>under<OVER3>`.
    - It is smart enough to know which text is longer and to append subsequent text appropriately.
  `<OVERLINE>`
    turns on the printing of a line over subsequent text. `</OVERLINE>` turns it off. [non-standard]
    - The line height is fixed. But you can trick it, for example: `<SIZE=1.36> <OVERLINE> <SIZE=0.735> text </OVERLINE>`.
    - Most users won't ever need to use this.
    - The weight of the line is determined by the bold level in effect when `<OVERLINE>` is started.
    - For example, `<OVERLINE>This is overlined.</OVERLINE>`.
    - See also `<HIGHLINE>`
  `<P>`
    starts a new paragraph and puts a blank line between paragraphs. `</P>` is allowed but ignored.
    - For example, `Paragraph 1... <P>Paragraph 2.`
  `<PRE>` and `</PRE>`
    The "preformatted" text between these two tags is displayed in a Courier font with spaces and linebreaks unchanged (unlike regular HTML). This is useful in Big Text objects for displaying ASCII text such as simple tables and computer source code. (For fancier tables, see `Create : Table`). Usually, the text should be left justfied, so set `TextPosition` to `UpperLeft, CenterLeft,` or `LowerLeft` or use the `<left>` tag. HTML tags which affect the formatting of the text (`<P>, <OL>, <UL>`, etc.) are not supported between `<pre>` and `</pre>` and will generate an error message. An exception is `<BR>`, which is supported and is useful in Text objects where the text is entered on one line. HTML tags which affect the style of the text (`<U>, <I>, <font>`, etc.) and character entities (for example, `&alpha;`) are allowed. Tabs (which in HTML are treated as white space) are expanded to multiple spaces (to a position which is a multiple of 8). If a `Linewidth` tag has been used, it will be ignored by the `PRE` text.
  `<RT=double value>`
    moves the current position some distance to the right along the baseline. There is no `LT` (left) tag; use the `RT` tag with a negative value. [non-standard]
    - The baseline may be at an angle, see setShapeAngle().
    - The value can be a positive or negative decimal amount.
    - The units are multiples of the current text height (setTextHeight() but perhaps modified by `<BIG> <SMALL>` and `<SIZE>` tags).
    - This is useful for kerning and is used a lot internally.
    - For example, `<RT=-0.5>` moves the current position back 1/2 the current text height. Thus, this can be used for manual kerning.
  `<RIGHT>`
    causes subsequent lines of text to be right justified. It also acts like `<BR>` if there is any text on the current line. There is a `</RIGHT>` tag, but it is not required. [non-standard]

    The intended use of this tag is with CoPlot's text and Big Text objects. For these objects, CoPlot internally uses `H Align: Left` and automatically defines the `LineLength`. For text in other situations (for example, a graph's title), use the `H Align` setting instead.

    - For example, `Original <left> Left! <center> Center! <right> Right!`
  `<SCALE>`
    inserts the current drawing scale (based on inches) (for example, "1 inch = 10 miles". See `Drawing : Coordinates`. [non-standard]
    - For example, `Scale: <SCALE>`.
  `<SCALECM>`
    inserts the current drawing scale (based on cm) (for example, "1 cm = 10 km". See `Drawing : Coordinates`. [non-standard]
    - For example, `Scale: <SCALECM>`.
  `<SIZE=double value>`
    changes the current height of the characters relative to the current height. [non-standard]
    - The value can be a positive decimal amount.
    - The units are multiples of the current text height (setTextHeight() but perhaps modified by `<BIG>, <SMALL>,` and `<SIZE>` tags).
    - This is used a lot internally for `<SUP>, <SUB>,` etc.
    - For example, `normal <SIZE=0.5>half size<SIZE=2> normal`.
  `<SMALL>`
    really means smaller. `</SMALL>` really means bigger (by an amount inverse to `<SMALL>`).
    - 1 SMALL = .8165x bigger (1.2247x smaller); 2 SMALL's = .6666x bigger (1.5*smaller); etc.
    - `<BIG>, </BIG>, <SMALL>, </SMALL>` can be used in any order. [non-standard]
    - For example, `This is <SMALL>small and <SMALL>smaller</SMALL></SMALL>.`
  `<SQRT>`
    is like `<OVERLINE>`, but adds the square root symbol at the beginning.
    - For example, `<SQRT>formula</SQRT>`.
  `<STRIKE>`
    turns on the strikingout of subsequent text (a centered horizontal line). `</STRIKE>` turns it off.
    - The line width is set based on Height and Boldness in effect when `<STRIKE>` starts.
    - For example, `This is <STRIKE>struckout</STRIKE>`.
  `<STRONG>`
    increases the current font weight setting. `</STRONG>` decreases it.
    - All fonts are available in light, normal, and bold weights.
    - The closest available weight is displayed.
    - `</STRONG>` can be used before `<STRONG>` to lighten the initial font [non-standard].
    - For example, `This is <STRONG>strong.</STRONG>`.
  `<SUB>`
    means subscript (smaller and lower). Use `</SUB>` to undo it (not `<SUP>`, since `<SUP>` will give you a superscript on the subscripted text). `<SUB>, </SUB>, <SUP>, </SUP>` should be used in matched pairs, but can be embedded. (Undo them in reverse order or there's trouble!)
    - A simple example: `A<SUB>sub</SUB>`.
    - A complex example: `A<SUP>super<SUB>sub on super</SUB></SUP> normal`.
    - An incorrect example: `A<SUP>super<SUB>sub on super</SUP></SUB> not normal`.
  `<SUBSUP1> <SUBSUP2> <SUBSUP3>`
    let you append a subscript and a superscript simultaneously. [non-standard]
    - For example, `X<SUBSUP1>sub<SUBSUP2> sup<SUBSUP3>`.
    - It is smart enough to know whether the sub or sup text is longer and to append subsequent text appropriately.
  `<SUP>`
    means superscript (higher and smaller). Use `</SUP>` to undo it (not `<SUB>`, since `<SUB>` will give you a subscript on the superscripted text). `<SUB>, </SUB>, <SUP>, </SUP>` should be used in matched pairs, but can be embedded. (Undo them in reverse order or there's trouble!)
    - A simple example: `A<SUP>sup</SUP>`.
    - A complex example: `A<SUP>super<SUB>sub on super</SUB></SUP> normal`.
    - An incorrect example: `A<SUP>super<SUB>sub on super</SUP></SUB> not normal`.
  `<TIME>`
    inserts the current time. [non-standard]
    - For example, `The time is <TIME>.`
  `<TT>`
    (teletype-style font) turns on Monospaced font. `</TT>` returns to the previous font.
    - For example, `This is <TT>teletype-style</TT>`.
  `<U>`
    turns on underlining. `</U>` turns it off.
    - Linewidth is determined by Height and Boldness when `<U>` starts.
    - For example, `This is <U>underlined</U>`.
  `<UL>`
    starts an unordered list. Lists can be embedded in other lists. `</UL>` ends the current list.
    - The 1st list uses small filled circles.
    - The 2nd list (embedded in the 1st) uses small circles.
    - The 3rd list (embedded in the 2nd) uses small filled squares.
    - Subsequent lists use small squares.
    - `<LI>` identifies each of the list items.
    - For example: `<UL> <LI> text1 <LI> text2 </UL>`.
  `<UNDEROVER1> <UNDEROVER2> <UNDEROVER3> <UNDEROVER4>`
    lets put small text above and below the enlarged main text. For example, when used with `&Sigma;`, this is useful for making the mathematical notation for a sum of a series of terms. [non-standard]
    - For example, `<UNDEROVER1>Σ<UNDEROVER2> i=1<UNDEROVER3>n<UNDEROVER4>`.
    - It is smart enough to know whether the sub or sup text is longer and to append subsequent text appropriately.
    - You can make some temporary size changes after underover2 and underover3, if desired. But don't make changes between underover1 and underover2.
  `<UP=double value>`
    moves the current position some distance upward from the baseline. There is no `Down` tag; use a negative value with the `Up` tag. [non-standard]
    - The baseline may be at an angle, see setShapeAngle().
    - The value can be a positive or negative decimal amount.
    - The units are multiples of the current text height (setTextHeight() but perhaps modified by `<BIG> <SMALL>` and `<SIZE>` tags).
    - Most users won't ever need to use this.
    - This is used a lot internally for `<SUP>, <SUB>, <OVER>,` etc.
    - For example, `Normal <UP=0.7>higher<UP=-0.7> normal`.

  Menu Tree / Index

  ## Character Entities

  Whenever you are entering a text that is part of a drawing object, you can insert a non-ASCII character or character entity by using the `&` button (which brings up a special character insertion dialog box) or by just typing a character entity. A character entity is just an ASCII name for the character. Character entities always begin with an '`&`' and end with '`;`' to distinguish them from the surrounding regular text. For example, the entity named '`&Aacute;`' is drawn as '`Á`'.

  The character insertion dialog box lets you pick from among several groups of characters (accented characters in Latin 1, Greek characters, mathematical symbols, etc.) When you click on one of the characters or its name, the character's name is inserted in the text at the current insertion point. If you double click, the character's name is inserted and the character insertion dialog box is closed.

  Details -

  - The character entities use the same syntax as HTML character entities: all entities start with '`&`' and end with '`;`'.
  - Since '`&`' signifies the start of a character entity and '`<`' signifies the start of an embedded text tag, you need to use `&amp;` to get the actual '`&`' character and `&lt;` to get '`<`'.
  - Since HTML supports only a small number of character entities, CoPlot also supports SGML character entities (as defined in SGML, An Author's Guide by Martin Bryan, 1988, Addison-Wesley), including most Greek and mathematical characters.
  - CoPlot also supports a large number of non-standard character entities, so you can refer to characters in the ELEC, LANDSC, MARKER, WEATH, and other fonts.
  - Entity names are case sensitive. For example, `&beta;` is the lower case Greek beta, while `&Beta;` is the upper case Greek Beta.

  Accented Characters - Many languages use accented characters. All of the standard accented characters (the ones in Unicode), can be picked from the screens that are shown when you press on the '`&`' button.

  But you can also create any accented character (even ones not in Unicode) by typing the entity's name in the form: `'&' + letter + accentName + ';'`. For example, '`&Aacute;`' is drawn as '`Á`'. Here are the accent names you can use:

  - `acute` ( ´ ),
  - `breve` (something like a 'u'),
  - `caron` (something like a 'v'),
  - `cedil` (for cedilla, ¸ ),
  - `circ` (circumflex, often called hat, ^ ),
  - `dot` (·),
  - `dyad` (left-right arrow),
  - `grave` ( ` ),
  - `huml` (long, Hungarian umlaut)
  - `macr` (for macron, ¯ ),
  - `ogon` (ogonek, sort of a reversed cedilla)
  - `ring` (a circle above the character, ° ),
  - `slash` (slash through, / ),
  - `tilde` ( ~ ),
  - `uml` (for umlaut, ¨ ).
  - `vec` (vector, right arrow),
  This system works for any character+accent combination. The accents which are over letters are smart enough to raise themselves for capital letters versus short letters. For accents on top of i and j, this system is smart enough to remove the dots. If you want the dotless i or j alone, use '`&inodot;`' and '`&jnodot;`'.

  Details for Character Entity Categories -

  ASCII symbols
    These are the most common characters. These correspond to characters #32 to #127 as defined by ASCII and the ISO 8859-1 Character Encoding. Usually, you will just type these characters, but some characters have special names. Notably, you should use the character entity names '`&amp;`' (because '`&`' signifies the start of a character entity) and '`&lt;`' (because '`<`' signifies the start of an embedded text tag). These are HTML and SGML standard names.
  Greek
    The SGML-standard entity names for most Greek characters are the names of the characters, for example '`&alpha;`'. In cases where the letter is not different in appearance from the Latin letter, the SGML standard is in the form '`&Agr;`' (which can be pronounced as "A Greek"). In these cases, CoHort has also named aliases which use the Greek name (for example, '`&Alpha;`') for consistency (if there is an '`&alpha;`' there should be an '`&Alpha;`') and to match the TeX names.
  Electric
    These are CoHort-only entities for electrical symbols.

    You can make many electrical symbols by creating two text objects at the same position: one with '`&enclosure;`' (from the Elec font) and one with a smaller (1/2 the height) standard letter. This makes an encircled letter. For example, an encircled 'A' is the symbol for an ammeter. Other commonly encircled letters are 'M' (motor), 'V' (voltmeter, and 'G' (generator).

  Interiors
    These are CoHort-only entities for interior design symbols. The numbers that are part of many entity names are sizes in inches of the longest dimension. Common abbreviations are: '`rec`'=rectangular, '`rnd`'=round, '`sqr`'=square, '`ovl`'=oval.
  Landscape
    These are CoHort-only entities for landscape design symbols.
  Latin 1
    These are the most commonly used accented characters and some other common characters. These correspond to characters #160 to #255 as defined by the ISO 8859-1 Character Encoding. The names are standard HTML and SGML names.
  Latin A
    These are infrequently used accented characters. The names are from SGML.
  Latin B
    These are infrequently used accented characters. The names are from SGML.
  Map symbols
    These are CoHort-only entities for characters commonly found on maps.
  Markers
    The names of the markers are mostly SGML standard names (which are difficult to read), but some are CoHort names in the same style. Common abbreviations are:
    - 'tri'=triangle, 'rec'=rectangle, 'vrec'=vertical rectangle, 'squ'=square, 'circ'=circle, 'loz'=lozenge, 'dia'=diamond, 'dot'=with a dot in the middle,
    - 'n'=north, 's'=south, 'e'=east, 'w'=west,
    - 'ne'=northeast, 'nw'=northwest, 'se'=southeast, 'sw'=southwest,
    - 'f'=solid filled, 'h'=horizontal hatch, 'v'=vertical hatch, 'l'=left hatch, 'r'=right hatch,
    - 'u'=up pointing, 'd'=downpointing, 'l'=left pointing, 'r'=right pointing.
    For example '`&rtrif;`' is a triangle ('tri'), pointing right ('r'), and filled ('f').
  Mathematical symbols
    These SGML standard names often match the TeX names.
  Punctuation
    These are SGML standard names for punctuation symbols.
  Weather symbols
    These are CoHort-only entities for standard weather map symbols. Common abbreviations are: 's'=slight, 'm'=moderate, 'h'=heavy, 'i'=intermediate, 'c'=continuous, 'f'=freezing, 'v'=violent, 'GB'=getting better in last hour, 'GW'=getting worse in last hour, 'Sh'=Shower, 'Th'=Thunder, 'NTO'=Not at Time of Observation, 'Sky'=Sky visible, 'NoSky'=sky not visible.

  Menu Tree / Index

  ## The Drawing (.draw) File Format

  CoPlot stores drawings in ASCII text files (with the extension `.draw`) using a simple graphics language. The graphics language has procedures for creating objects and specifying their attributes. Like drawings, drawing files are device independent. CoPlot has facilities to create and edit drawing files and to print the drawings to screens, printers, and graphics files. Because they are ASCII files, drawing files can also be created or edited with any text editor or word processor.
  Because they are ASCII files, you can also easily write programs (using BASIC, C, C++, Java, Pascal, Perl, Python, Rexx, Tcl, etc.) that create drawing files. You can then use CoPlot for interactive editing and printing of the drawings. This is an extremely powerful feature: Let's say you have a program that generates data that you would like to plot on a special type of graph. Modify the program so that it generates a drawing file that describes how to plot the data. Once you have the drawing file, you can use CoPlot to edit it, annotate it, and print it. This is an easy way to get access to the power of CoPlot with minimal changes to existing programs.

  We don't expect that very many people will sit down and write .draw files by hand (by reading the specification below) or even write computer programs (by hand) to write .draw files, although you can. Instead, we encourage you to use CoPlot to generate a .draw file and then use that .draw file as a basis for your program. Looking at .draw files generated by CoPlot is also a good way to figure out the details of the .draw specification if you don't understand some part of it.

  Relation to Java Programs, Batch Files, Shell Scripts, Pipes, Perl, Python, Rexx, and Tcl - By bypassing the graphical front end of CoPlot, you can convert graphics files from one type to another; you can print graphics files; or you can use any of the commands in .draw files in your own Java programs, batch files, shell scripts, Perl programs, Python programs, Rexx programs, and Tcl programs. See Java Programs, Batch Files, Shell Scripts, Pipes, Perl, Python, Rexx, and Tcl. Knowing the commands in the .draw files (as described below) is essential to this type of work.

  CoPlot's graphics system vs. PostScript, Java2D, and SVG

  PostScript, Java2D, and SVG are related standards for computer graphics. They are great. Unfortunately, they lack many important features for scientific graphs and technical drawings (sub and superscripts and other embedded text commands, markers, lines between markers, splines, arrows, etc.). So we built our own graphics system (`NPS`, which is not PostScript, but similar to it) to make the additional features an integral part of the graphics system. Also, when we created CoPlot's graphics system (mid-1996), Java2D and SVG were not available or even announced. CoPlot now uses Java2D for low level graphics services. Currently, you can create SVG files from CoPlot with '`File : Save As : SVG`'. It is unclear if CoPlot will be able to import SVG files in the future.

  Since part of CoPlot's job is to maintain a list of graphics objects (and their attributes), the procedures used in .draw files are an interface to a Java class called `Drawing`, not an interface to `NPS`. The `Drawing` class maintains the list of graphics objects and has procedures to redraw the image and save it in a .draw file or some other type of graphics file.

  Relation to attributes in CoPlot and the methods in our Java code

  The attribute names and data types which are used in drawing files are almost identical to the attribute names and data types used in CoPlot and in the underlying Java code. In fact, the syntax of drawing files was chosen specifically so that drawing files could be easily converted to/from Java code.

  Design goals

  The names of the procedures in a drawing file and their syntax, were designed with the following goals in mind:

  - The files should be entirely ASCII. Other characters should be encoded with character entities (ASCII names for non-ASCII characters). ASCII files have numerous advantages:
    - The files can be created with any programming language.
    - The files can be read and written by computer and any operating system.
    - The files don't need to be changed if they are moved to a different type of computer or operating system.
    - The files can be transmitted on 7-bit electronic mail systems.
    - The files can be read and written by humans.
    - The files can be created and edited with any text editor or word processor.
    Since there don't seem to be any 7-bit email systems anymore, we have subsequently loosened this goal. The drawing files now also allow characters (#128..#255) from the ISO 8859-1 character set. This makes it possible to support for European languages without resorting to character entities.
  - The files should be reasonably compact.
  - The files should be easy to parse (i.e., easy for a computer to read).
  - The procedure names should be logical and easy for a human to read and remember.
  - The procedure names should match the names known to users of CoPlot.
  - The procedure names and syntax should match the names and syntax in the underlying Java code, so that drawing files can be converted to/from Java code with few or no changes.
  - Backward compatible - It should be easy to add new object types and new attributes in the future without disrupting the current system.
  - Forward compatible - Old versions of CoPlot should do a pretty good job of reading files from subsequent versions of CoPlot (which will probably have a few new procedures).

  Format of commands

  Our system balances these various goals. The system borrows from several existing systems in the world of computers.

  1. Syntax - The syntax is very much like that of a C, C++, or Java program. Procedure names are followed by parameters which are surrounded by parentheses and separated by commas. A semicolon immediately follows each procedure. For example, `create("path", "2,1,2,2");`. Spaces and carriage returns between parts of a command (except between the command name and the opening parenthesis) are ignored.
  2. Separate procedures - Instead of a few big procedures to specify all of the attributes of an object (for example, specifying all of the attributes of a line), the various attributes are specified by a series of separate procedures (lineColor, lineWidth, etc.). This makes it easy to add new attributes in the future. It also makes the files more compact, since only the attributes that change need to be in the file.
  3. Character entities - let you put all types of accented characters and Greek characters in text strings using only ASCII characters.

     CoPlot also allows ISO 8859-1 characters #128..#255. If you use them, the files will have 8 bit characters and may have problems with some 7-bit email systems. But, there don't seem to be any 7-bit email systems any more.

  Data Types

  Each of the procedures in the drawing files requires a series of parameters. The parameters must be of an appropriate type (integer, double, string, etc.) to convey the desired information. Drawing files use common types of values.

  boolean
    Booleans values are either `true` or `false`.
  int
    An integer value ranging from -2 billion to 2 billion. In practice, most integer values have a narrower range of acceptable values. If the drawing file has a floating point number when an integer is called for, CoPlot will automatically round the number and won't generate an error message.
  color
    A color may be a standard `Color2.name` (for example, `Color2.green4`) (see Colors) or a color number. A color name which is not recognized is treated as `Color2.black`. A color number is a 24 bit rgb value in hexadecimal (for example, `0x00FF00`) or base 10 (for example, `12596`) notation. Actually, colors are the same as int's, since you can use Color names in place of int's in many places in CoHort programs (see Entering Numeric Values in the CoStat Manual (costat.htm)), but it is easier to understand the descriptions below if we label color parameters separately from int parameters.
  double
    A double precision floating point number (i.e., a number with an optional decimal point and optional exponent). The numbers may be in the common computer form of scientific notation, for example, 0.0012 can be represented as `1.2E-3`. (The '`E`' need not be capitalized.) A missing value can be represented by a period.
  string
    Text strings are specified according to the C, C++, and Java conventions. Strings are a series of characters with double quotation marks at the beginning and end. (The quotation marks are removed when the drawing file is read.) Strings can have any number of characters.

    Special characters (double quotation marks and backslash) within a string must be preceded by a backslash. Here is an example with double quotes: `"He said, \"No\"."`. Here is an example with backslashes: `"In Windows, the file name is C:\\cohort6\\CoPlot.class."`. This is awkward to read, but necessary.

    If you want to write a long string on more than one line, you can use a double quote mark (to temporarily close the string), a plus sign, and then a double quotation mark on the next line (to reopen the string), for example, `
    "Pretend this is "+
    "a long line."`

  booleanList
    This indicates a series of boolean values stored as comma-separated-values in a string. For example, `"false, false, true, false"`. If two or more successive values are the same, you can replace them with `int*value`, for example `"2*false, true, false"`.
  intList
    This indicates a series of int's stored as comma-separated-values in a string. For example, `"0, 0, 2, 200"`. If two or more successive values are the same, you can replace them with `int*value`, for example `"2*0, 2, 200"`.
  colorList
    This indicates a series of colors stored as comma-separated-values in a string. For example, `"Color2.green4, Color2.green4, Color2.white, Color2.black, 0xFFEA02"`. If two or more successive values are the same, you can replace them with `int*value`, for example `"2*Color2.green4, Color2.white, Color2.black, 0xFFEA02"`.
  doubleList
    This indicates a series of doubles stored as comma-separated-values in a string. A common use of a doubleList is to store a series of points: one or more x,y pairs. For example, 3 points could be specified as `"0, 0, 1.7, 1.3, 0, 2.1"` (the order is x1, y1, x2, y2, x3, y3). Points are always specified in `Drawing : Coordinates`. If two or more successive values are the same, you can replace them with `int*value`, for example `"2*0, 1.7, 1.3, 0, 2.1"`.
  stringList
    This indicates a series of strings stored as comma-separated-values in a string. Each individual string is stored with double quotes around it. For example, 4 axis titles could be stored as `"\"X\", \"Y\", \"Z\", \"T\""`. If two or more successive values are the same, you can replace them with `int*value`, for example `"2*\"My Title\", \"Z\", \"T\""`.

    Although .draw files generated by the program always have double quotes around each individual string, you really only need to have double quotes if the string has leading or trailing spaces (that you want to keep), a comma, or a double quote.

  Coordinate Systems and Units

  As in CoPlot, all coordinates and sizes in drawing files are specified in `Drawing : Coordinates`.

  Error Checking

  CoPlot tries to check for all possible errors. For most errors, CoPlot abandons the current procedure and jumps forward to the next procedure in the drawing file. Errors include unrecognized procedure names, invalid parameter types, invalid syntax (i.e., improper use of parenthesis, commas, semicolons) and invalid numbers of parameters. CoPlot saves and displays the message for the first error that it finds.

  Overview of a drawing file

  Files contain procedures (which define the coordinate system and describe the objects and their attributes). Optionally, files may also contain comments.

  The procedures can be broken down into these groups:

  1. '`CoPlot.drawVersion(versionNumber);`' This must be the first procedure in the file. It identifies the file as a CoPlot drawing file and identifies the file type version number (which changes to match the CoPlot version whenever the drawing file definition changes). The number for the drawing file version is currently 6.300.

     If a file with a previous version number is encountered, CoPlot will properly interpret the information.

  2. Optional `Drawing` Menu Procedures - correspond to options on CoPlot's `Drawing` menu and apply to the whole drawing (for example, set the coordinate system, grid size, fonts, minimum line width, etc.). If any or all of these procedures are missing, CoPlot uses the relevant default values.
  3. Datafile Procedures - correspond to options on CoPlot's `Datafile` menu and let you load data.
  4. Attribute and Object Procedures - describe the attributes and create the objects that make up the drawing. These procedures make up the bulk of the file.
  5. '`endOfFile();`' This must be the last procedure in the file. It identifies the end of the file.

  Files can contain comments. You can store comments in text objects, using the embedded text command for comments within the character string (for example, `setCharacters("Main text.<!-- This is a comment -->");`. These comments will be visible in the relevant textfields in dialog boxes, but they will not be visible on the drawing, and will not be lost when you load and then save the file. Files can't contain comments in the C/C++/Java backslash-star style (for example, `\*a comment*\`) or the slash-slash style (for example, `//a comment`).

  "Deprecated" - Note that some methods below are marked "Deprecated". This means that they were once valid commands but their use is now strongly discouraged. In most cases, a newer version of the method is suggested.

  Optional `Drawing` Menu Procedures

  After the `CoPlot.drawVersion()` command, drawing files may have any of several procedures which apply to the whole drawing (for example, to set the coordinate system, grid size, fonts, etc.). These procedures correspond to the options on the `Drawing` menu in CoPlot. If any or all of these procedures are missing, CoPlot uses the relevant default values.

  `setDrawingBackgroundColor(color);`
    The default color is `Color2.white`. See `Drawing : Background Color`.
  `setFont(int slot, string name);`
    The default fonts are `0:Helvet, 1:TmsRmn, 2:Cour, 3:Marker, 4:Greek`. See `Drawing : Load Fonts`.
  `setUnitsName(string);`
    The default is "`inches`". See `Drawing : Coordinates`.
  `setXBounds(double, double);`
    The default is `xMin=0, xMax=8` `Drawing Coordinate` units.
  `setYBounds(double, double);`
    The default is `yMin=0, yMax=10.5` `Drawing Coordinate` units.
  `setScale(double);`
    The default is `1` unit per inch. See `Drawing : Coordinates`.
  `setScaleCM(double);`
    The default is `2.54` units per inch. (Internally, this calls `setScale(double/2.54)`.) See `Drawing : Coordinates`.
  `setDisplayUnits(int);`
    The default is `0` (use the user's units name). See `Drawing : Coordinates`.
  `setGridSize(double);`
    The default is `0.01` `Drawing Coordinate` units.
  `setPageWidth(double);`
    The default is `8.5` inches. See `Drawing : Coordinates`.
  `setPageWidthCM(double);`
    This is an alternative to `setPageWidth()` which uses centimeters. See `Drawing : Coordinates`.
  `setPageHeight(double);`
    The default is `11` inches. See `Drawing : Coordinates`.
  `setPageHeightCM(double);`
    This is an alternative to `setPageHeight()` which uses centimeters. See `Drawing : Coordinates`.
  `setLeftMargin(double);`
    The default is `0.25` inches. See `Drawing : Coordinates`.
  `setLeftMarginCM(double);`
    This is an alternative to `setLeftMargin()` which uses centimeters. See `Drawing : Coordinates`.
  `setBottomMargin(double);`
    The default is `0.25` inches. See `Drawing : Coordinates`.
  `setBottomMarginCM(double);`
    This is an alternative to `setBottomMargin()` which uses centimeters. See `Drawing : Coordinates`.
  `setVisibleGroups(String);`
    See `Drawing : Groups`.
  `setGroupForNewObjects(int);`
    See `Drawing : Groups`.
  `setGroupsFramesPerSecond(double);`
    See `Drawing : Groups`.
  `setGraphSpinFramesPerSecond(double);`
    See `Edit : Graph : Overview`.
  `setGraphAxisFramesPerSecond(double);`
    See `Edit : Graph : Axis : Center`.
  `setDatasetFramesPerSecond(double);`
    See `Edit : Graph : Dataset`.
  `setAuthor(String);`
    This identifies the author of the drawing. The default is "". See `Drawing : Other`.
  `setMinimumLineWidth(double);`
    The default is `0.006` inches (not Drawing Coordinates). See `Drawing : Other`.
  `setSmoothing(int);`
    0=On (the default), 1=Mostly On, 2=Off. See `Drawing : Other`.
  `setDrawColorsAs(int);`
    The default is `0`. Valid values are: `0=as colors, 1=as grays, 2=as black`. See `Drawing : Other`.
  `setUseSystemFonts(boolean);`
    The default is `true`. See `Drawing : Other`.
  `setDrawBoldMarkers(boolean);`
    The default is `false`. See `Drawing : Other`.
  `setDrawLinesThroughMarkers(boolean);`
    The default is `false` (put a gap in the line where the markers are). See `Drawing : Other`.
  `setDrawErrorBarsThroughMarkers(boolean);`
    The default is `false`. See `Drawing : Other`.
  `setDrawCapsOnErrorBars(boolean);`
    The default is `true`. See `Drawing : Other`.
  `setIgnoreMissingValues(boolean);` [deprecated]
    The default is `false`. See `Drawing : Other`. [As of version 5.920, this is deprecated. Use `setMissingValuesMakeGaps()` instead.]
  `setMissingValuesMakeGaps(boolean);`
    The default is `true`. See `Drawing : Other`. [Added in version 5.920.]

  Datafile Procedures

  Loading data into a Datafile slot
    The `openDatafile` command corresponds to using `Datafile : x : File : Open` in CoPlot. For details, see Datafile. When CoPlot saves a drawing in a .draw file, this is the command it uses to record which datafiles are in use. [Added in version 5.913.]

    CoPlot automatically converts \'s in datafile names to /'s when the .draw file is saved. When .draw files are opened, /'s are converted to \'s if appropriate for the current operating system. [Added in version 5.918.]

    `openDatafile(int slot, int fileType, int mode, String fileDirectory, String fileName, int simplify, int headerLength, String fileStructure);`
      where:
      `slot`
        is the datafile slot number (`1-15`).
      `fileType`
        is the type of file: `0=ASCII/columnar, 1=ASCII/comma, 2=ASCII/tab, 3=ASCII/space, 4=binary, 5=dt, 6=dbase, 7=old excel, 8=lotus1, 9=lotus3, 10=microstat, 11=mstat, 12=quattro, 13=odbc, 14=MSWindows(many types, including new Excel), 15=clipboardFormatted, 16=clipboardRaw, 17=html` .
      `mode`
        is `0=replace current data, 1=append to the right, 2=append below`. Usually, you will use mode 0.
      `fileDirectory`
        is the file directory.
      `fileName`
        is the file name.
      `simplify`
        specifies how much to simplify the column data types: `0=don't, 1=aggressive`.
      `headerLength`
        For binary files, this specifies the number of bytes to ignore at the beginning of the file. For ASCII files, this specifies the number of lines to ignore at the beginning of the file.
      `fileStructure`
        For binary file types, this specifies what information is in each record.
  `datafile.xxx` commands
    If you are writing your own .draw files and want to store the data directly in the .draw files, you can use the following datafile commands. They are an alternative to the standard way to read data into a drawing (see `openDatafile` above to read data from an existing data file). When CoPlot saves a drawing in a .draw file, it never stores the data in this manner. Also, unless you use `Datafile : x : File : Save As`, the data loaded with these commands will not be saved in a data file. So this approach to loading data is useful only for a one time use of the data (for example, when creating a graph with a batch file or shell script).

    Here are the datafile.xxx commands (presented in the order they should be used). Rows and columns are numbered 1..n. [All of these commands were introduced in 5.913.]

    `createDatafile(int slot);`
      This creates an empty datafile (0 columns and 0 rows) in the specified slot (`1-15`). You should call this before using any of the `datafile.xxx()` commands.
    `datafile.insertRows(int where, int howMany);`
      You should call this just once per datafile. For example, use `datafile.insertRows(1, 100);` to make 100 rows.
    `datafile.insertColumn(int where, String type, String name);`
      You must call this once per column, starting with column 1 and proceeding to the last column.
      - `where` is the column number (`1`..).
      - `type` is: 'b'=boolean, 'B'=Byte, 's'=short, 'i'=int, 'l'=long, 'f'=float, 'd'=double, 'c'=char, 'S'=String.
      - `name` is the name for the column (usually 9 or fewer characters, but may be any length).
    `datafile.setRow(int row, stringList csvData);`
      sets all of the data for one row, given comma-separated-values stored in a string. Call this once for every row of data. The data will be automatically converted from a string to the appropriate data type. This is an alternative to `setString()` and `setCol()`.
    `datafile.setCol(int col, stringList csvData);`
      sets all of the data for one column, given comma-separated-values stored in a string. Call this once for every column of data. The data will be automatically converted from a string to the appropriate data type. This is an alternative to `setString()` and `setRow()`, but is faster.
    `datafile.setString(int col, int row, string value);`
      sets one data value in the current datafile. Call this once for each cell in the data table. The data will be automatically converted from a string to the appropriate data type. This is an alternative to `setRow()` and `setCol()`, but is slower.

  Attribute and Object Procedures

  The bulk of a drawing file consists of the procedures related to setting attributes and creating objects. The attributes exactly match the attributes on the `Edit : xxx` menus; see `Edit : Big Text`, `Edit : Dimension`, `Edit : Ellipse`, `Edit : Graph`, `Edit : Image`, `Edit : Path`, and `Edit : Text`.

  When creating an object in a drawing file, the order of procedures is backwards from the order you use in CoPlot. In a drawing file, you specify the attributes first, then create the object. For subsequent objects of the same type, you need not specify every attribute; just specify the attributes that have changed. For example, you might:

  1. Set all of the line attributes (width, color, type, and dash size).
  2. Create 5 lines with those attributes.
  3. Change the line color.
  4. Create 2 more lines.
  This is not true for graph attributes, which don't carry over from one graph to the next.

  Different types of objects use different groups of attributes.

  Big Text Objects
    use Shape, Background, Line, Text, and Characters drawing attribute procedures.
  Dimension Objects
    use Line, Arrow, Text, and Characters drawing attribute procedures.
  Ellipse Objects
    use Fill, Line, Arrow, Ellipse, Text, and Characters drawing attribute procedures.
  Graph Objects
    use the Characters procedure to specify the optional graph name.
  Image Objects
    use the Characters procedures to specify the file name.
  Path Objects
    use Fill, Line, Arrow, Marker, and PathType drawing attribute procedures.
  Text Objects
    use Shape, Background, Line, Text, and Characters drawing attribute procedures.

  For the `Fill, Line, Marker,` and `Text` groups of attributes, if the related color attribute is `Color2.notDrawn`, the other attributes in that group are ignored and not stored. Similarly, for the `Arrow` groups of attributes, if the `arrowTypeStart` is `notDrawn` and the `arrowTypeFinish` is `notDrawn`, the other attributes in that group are ignored and not stored. For example, if `lineColor` is `Color2.notDrawn`, the `lineWidth` setting will not be saved. This saves a tremendous amount of space in the drawing list.

  Attributes for Primitive Drawing Objects

  The Group Attribute
    `setGroup(int);`
      This is used for all drawing objects (not just primitives).
  Background Attributes
    `setBackgroundColor(color);`
      The default color is `Color2.notDrawn`.
  Fill Attributes
    `setFillColor(color);`
      The default color is `Color2.notDrawn`.
    `setFillType(int);`
      The default fill type is `1` (horizontal lines).
    `setFillSize(double);`
      The default is `0.1` `Drawing Coordinate` units.
    `setFillLinewidth(double);`
      The default is `0.003` `Drawing Coordinate` units.
  Line Attributes
    `setLineColor(color);`
      The default color is `Color2.black`.
    `setLineType(int);`
      The default line type is `0` (a solid line).
    `setLineDashsize(double);`
      The default is `0.02` `Drawing Coordinate` units.
    `setLineWidth(double);`
      The default is `0.003` `Drawing Coordinate` units.
  Arrow Attributes
    `setArrowTypeStart(int);
    setArrowTypeFinish(int);`
      Valid values are: `0=(notDrawn), 1=Fancy, 2=Filled, 3=Line.` The default for both is `0` (notDrawn). [Added in version 5.913.]
    `setArrowHeadsize(double);`
      The default is `0.1` `Drawing Coordinate` units.
    `setArrowAngle(int);`
      The default is `30` degrees.
    `setArrowColor(color);` [deprecated]
      The default color is `Color2.black`. [As of version 5.913, this is deprecated. Use `setLineColor()` and/or `setArrowTypeStart(0)` and `setArrowTypeFinish(0)` instead.]
    `setArrowType(int);` [deprecated]
      Valid values are:`0=Fancy at initial point, 1=Fancy at final point, 2=Fancy at both points, 3=Filled at initial point, 4=Filled at final point, 5=Filled at both points, 6=Line at initial point, 7=Line at final point, 8=Line at both points.` The default for both is `1` (Fancy at final point). [As of version 5.913, this is deprecated. Use `setArrowTypeStart()` and `setArrowTypeFinish()` instead.]
  Marker Attributes
    `setMarkerColor(color);`
      The default color is `Color2.notDrawn`.
    `setMarkerBackgroundColor(color);`
      The default is `Color2.notDrawn`. [Added in version 6.100.]
    `setMarkerFont(int);`
      The default is `3` (which by default is the marker font). See `Drawing : Load Fonts`.
    `setMarkerType(int);`
      The default is `52` (which is a plus sign in the Marker font).
    `setMarkerSize(double);`
      The default is `0.1` `Drawing Coordinate` units.
  Shape Attributes
    `setShapeType(int);`
      Valid values are:`0=Arrow, both, 1=Arrow, left, 2=Arrow, right, 3=Bracket, left, 4=Bracket, right, 5=Bullet, 6=Burst 1, 7=Burst 2, 8=Circle, 9=Circle, with line, 10=Cloud, 11=Cloud, point down, 12=Cloud 2, 13=Cloud 2, point down, 14=Computer, PC, 15=Computer, Server, 16=Cube, right, 17=Cylinder, horizontal, 18=Cylinder, vertical, 19=Diamond, horizontal, 20=Ellipse, 2 wide, 21=Ellipse, flexible, 22=Fax, 23=Hexagon, 24=Home plate, down, 25=Home plate, left, 26=Home plate, right, 27=Home plate, up, 28=Octagon, 29=Parallelogram, left, 30=Parallelogram, right, 31=Pentagon, 32=Person, 33=Printer, 34=Rectangle, 35=Rectangle, cut upper left, 36=Rectangle, cuts bottom, 37=Rectangle, cuts top, 38=Rectangle, folded corner, 39=Rectangle, jagged bottom, 40=Rectangle, lines left right, 41=Rectangle, lines top left, 42=Rectangle, point down, 43=Rectangle, point left center, 44=Rectangle, point lower left, 45=Rectangle, point lower right, 46=Rectangle, point right center, 47=Rectangle, point up, 48=Rectangle, point upper left, 49=Rectangle, point upper right, 50=Rectangle, rounded, 51=Rectangle, rounded sides, 52=Rectangle, sides in out, 53=Rectangle, sides out in, 54=Rectangle, slant top, 55=Rectangle, tab, 56=Rectangle, wavy bottom, 57=Rectangle, wavy top bottom, 58=Square, 59=Square, round right, 60=Trapezoid, down, 61=Trapezoid, up, 62=Triangle, down, 63=Triangle, left, 64=Triangle, right, 65=Triangle, up, 66=6 sides, horizontal, 67=6 sides, vertical, 68=Phone, 69=Burst 3, 70=Burst 4, 71=Rectangle, point left, 72=Rectangle, point right.` The default is `34` (Rectangle). Note that the order on the Choice widget is alphabetical, which is different from the numerical order. [Added in version 5.912.]
    `setShapeHAlign(int);`
      Valid values are: `FartherLeft3=0, FartherLeft1=1, ShapeLeftEdge=2, TextLeftEdge=3, Center=4, TextRightEdge=5, ShapeRightEdge=6, FartherRight1=7, FartherRight3=8.` The default is `4` (Center). [Added in version 5.912.]
    `setShapeVAlign(int);`
      Valid values are: `Above3=0, Above1=1, ShapeTop=2, Line1Top=3, Line1Upper=4, Line1Center=5, Line1Lower=6, Line1Bottom=7, TextCenter=8, LineNLower=9, ShapeCenter=10, ShapeBottom=11, Below1=12, Below3=13.` The default is `10` (ShapeCenter). [Added in version 5.912.]
    `setShapeWidth(double);`
      The default is "." (default value). [Added in version 5.912.]
    `setShapeHeight(double);`
      The default is "." (default value). [Added in version 5.912.]
    `setShapeBorder(double);`
      The default is 1. [Added in version 6.100.]
    `setShapeAngle(double);`
      The default is `0` degrees. [Added in version 5.912.]
    `setShapeShadow(int);`
      Valid values are:`0=(none), 1=LowerLeft, 2=LowerRight, 3=UpperLeft, 4=UpperRight, 5=LowerLeft*3, 6=LowerRight*3, 7=UpperLeft*3, 8=UpperRight*3.` The default is `0` (none). [Added in version 5.912.]
  Text Attributes
    `setTextColor(color);`
      The default color is `Color2.black`.
    `setTextFont(int);`
      The default is `0` (which by default is the Helvet font). See `Drawing : Load Fonts`.
    `setTextHeight(double);`
      The default is `0.1` `Drawing Coordinate` units.
    `setTextPosition(int);`
      The default is 4. Valid values are: `0=UpperLeft, 1=UpperCenter, 2=UpperRight, 3=CenterLeft, 4=CenterCenter, 5=CenterRight, 6=LowerLeft, 7=LowerCenter, 8=LowerRight`.
    `setTextHAlign(int);` [deprecated]
      Valid values are: `0=Left, 1=Center, 2=Right`. The default is `0` (Left). [As of version 5.912, this is deprecated. Use `setShapeHAlign(oldValue+3)` instead.]
    `setTextVAlign(int);` [deprecated]
      Valid values are: `0=Top, 1=Upper, 2=Center, 3=Lower, 4=Bottom.` The default is `3` (Lower). [As of version 5.912, this is deprecated. Use `setShapeVAlign(oldValue+3)` instead.]
    `setTextAngle(double);` [deprecated]
      The default is `0` degrees. [As of version 5.912, this is deprecated. Use `setShapeAngle(double)` instead.]
  Path Attributes
    `setPathType(int);`
      Valid values are `0=line, 1=spline, 2=bezier`. The default is `0` (line).
  Ellipse Attributes
    `setEllipseSize(double);`
      The default is `0.5` inch.
    `setEllipseInnersize(double);`
      The default is `0` `Drawing Coordinate` units.
    `setEllipseWidth(double);`
      The default width/height ratio is `1`.
    `setEllipseStart(double);`
      The default is `0` degrees.
    `setEllipseFinish(double);`
      The default is `360` degrees.
    `setEllipseNSides(int);`
      The default is `90`.
    `setEllipseTextPosition(int);`
      `0=HorizontalOut, 1=RadialIn, 2=RadialOut.` The default is `0`. [Added in version 5.913.]
    `setEllipseAngle(double);`
      The default is `0` degrees.
    `setEllipseSkew(double);`
      The default is `0` degrees.
  Characters
    `setCharacters(string);`
      The default is "".
  Image attributes
    There are several image attributes. See the list below.
  Graph attributes
    There are many graph attributes. See the list below.

  Create an Object - After the attributes for an object have been set, use `create(string, doubleList);` to actually create the object (for example, '`create("path", "2,1,2,2");`'). `string` has the type of object (`bigText, dimension, ellipse, image, graph, path,` and `text`). `doubleList` has the x,y points.

  Special 'Create' Procedures -

  `createBarGraph(String graphType, String graphTitle, String yAxisTitle, int whichDatafile, int labelsColumn, String csvDataColumns, double centerX, double centerY, int tGroupForNewObjects);`
    This corresponds to `Create : Bar Graph`.
  `createPieChart(int whichDatafile, int tLabelsColumn, int tDataColumn, String tKeepIf, tLegendType, double tInitialAngle, double tCenterX, double tCenterY, int tGroupForNewObjects);`
    This corresponds to `Create : Pie Chart`.
  `createTable(int datafileNumber, int firstColumn, int lastColumn, int firstRow, int lastRow, double textHeight, int textFont, int textColor, int backgroundColor, int linesColor, double boxLineWidth, double namesLineWidth, double horizontalLinesWidth, double verticalLinesWidth, double horizontalPadding, double verticalPadding, double centerX, double centerY, int tGroupForNewObjects);`
    This corresponds to `Create : Table`.

  Image Attributes

  Unlike the drawing attributes listed above, image attributes must be set separately for each image. For example, if one image has a non-default `Top Margin`, the non-default value doesn't automatically carry over to the next image.

  For each image,

  1. Use `setCharacters` to specify the image file name. CoPlot automatically converts \'s in image file names to /'s when the .draw file is saved. When .draw files are opened, /'s are converted to \'s if appropriate for the current operating system. [Added in version 5.918.]
  2. Call `newImage();` to create the local `image` object.
  3. Call the various `image.xxx();` commands for settings that are different from the defaults.
  4. Call `create("image", "x, y");`, where x, y is the center of where the image will be drawn. (Prior to 5.917, you had to specify `x1,y1,x2,y2` - the upper left and upper right corners of the image's location.)

  The image.xxx attributes correspond to options on the `Edit : Image` dialog box:

  `image.setSize(double);`
    The default is `0.32` `Drawing Coordinate` units. [The command was added in 5.917.]
  `image.setAngle(double);`
    The default is `0` degrees. [This command added was in 5.917.]
  `image.setLeftMargin(int);`
    The default is `0` pixels.
  `image.setRightMargin(int);`
    The default is `0` pixels.
  `image.setTopMargin(int);`
    The default is `0` pixels.
  `image.setBottomMargin(int);`
    The default is `0` pixels.
  `image.setNotDrawnColor(color);`
    The default notDrawn color is `Color2.notDrawn`.
  `image.setNegativeColors(boolean);`
    The default is `false`.
  `image.setPaletteColorsOnly(boolean);`
    The default is `false`. [Deprecated as of 6.202. Use `image.setDisplay` instead.]
  `image.setDisplay(String);`
    The options are "`All Colors`" (the default), "`Web Palette Colors`", or "`CoHort Palette Colors`".
  `image.setBrightness(String);`
    The default is "`Regular`".
  `image.setContrast(String);`
    The default is "`Regular`".
  `image.setBackgroundColor(int);`
    The default color is `Color2.notDrawn`.
  `image.setLineColor(int);`
    The default color is `Color2.notDrawn`.
  `image.setLineWidth(double);`
    The default is `0.003` `Drawing Coordinate` units.

  Graph Attributes

  Unlike the drawing attributes listed above, graph attributes must be set separately for each graph. For example, if one graph has a non-default graph title, the non-default value doesn't automatically carry over to the next graph.

  For each graph,

  1. You must first call `newGraph();` to create the local `graph` object.
  2. Call the various `graph.xxx();` commands for settings that are different from the defaults.
  3. Finally, call `create("graph", "x,y");`.

  The graph attributes are in groups which correspond to the buttons on the `Edit : Graph` dialog box:

  - `Graph : Overview` Commands
  - `Graph: Title` Commands
  - `Graph : Map` Commands
  - `Graph : Dataset` Commands
  - `Graph : Function` Commands
  - `Graph : Axis : Overview` Commands
  - `Graph : Axis : Title 1` Commands
  - `Graph : Axis : Title 2` Commands
  - `Graph : Axis : Labels` Commands
  - `Graph : Axis : Axis Line` Commands
  - `Graph : Axis : Ticks 1` Commands
  - `Graph : Axis : Ticks 2` Commands
  - `Graph : Axis : Grid 1` Commands
  - `Graph : Axis : Grid 2` Commands
  - `Graph : Axis : Zero Line` Commands
  - `Graph : Legend` Commands
  `Graph : Overview` Commands - most of this settings correspond to options on the `Edit : Graph : Graph : Overview` dialog box.
    `graph.setVisible(boolean);`
      The default value is `true`. See `Edit : Graph`. [Added in version 5.920.]
    `graph.setBackgroundColor(color);`
      The default background color is `Color2.notDrawn`.
    `graph.setType(int);`
      Valid types are: `0=XY, 1=3D, 2=Conic, 3=Mercator, 4=Orthographic, 5=Polar, 6=Triangle.` The default is `0`.
    `graph.setZ3DSpin(double);`
      The default is `30` degrees.
    `graph.setZ3DAttitude(double);`
      The default is `20` degrees.
    `graph.setXAxisSize(double);`
      The length of the X axis in `Drawing Coordinates`. The default is `2.4`. [Added in version 5.915.]
    `graph.setYAxisSize(double);`
      The length of the Y axis in `Drawing Coordinates`. The default is `2.4`. [Added in version 5.915.]
    `graph.setZAxisSize(double);`
      The length of the z axis in `Drawing Coordinates`. The default is `2.4`. [Added in version 5.915.]
    `graph.setAngle(double);`
      This sets the rotation angle for the entire graph. The default is `0` degrees. [Added in version 5.915.]
    `graph.setDatasetLabelsFont(int);`
      The number of the font to be used for datasets whenever text is needed ( `Representation=Markers/Labels, Markers/Labels3D, WindBarb, etc.`). Valid values are `0 - 14`. The default is `0`. [Added in version 5.914.]
    `graph.setDatasetLabelsFontStyle(int);`
      The number of the font style to be used for datasets whenever text is needed (`0=Plain, 1=Bold, 2=Italics, 3=BoldItalics`). [Added in version 5.920.]
    `graph.setDrawXYGraphAsOriginGraph(boolean);`
      The default is `false`. [Added in version 5.915.]
    `graph.setDrawPolarGraphAsCompassGraph(boolean);`
      The default is `false`. [Added in version 5.915.]
    `graph.setDrawTriangleGraphReversed(boolean);`
      The default is `false`. [Added in version 5.915.]
    `graph.setDrawColorArraysDarkToLight(boolean);`
      The default is `true`. [Added in version 5.920.]
    `graph.setY2DX1(double);`
      Deprecated as of 5.915 -- the graph's center is now specified by the graph object's x,y location. Old information: The default is `3` (see `Drawing Coordinates`). The center of the graph (as defined by the setY2D values) should match the center of the graph when you use `create("graph", x,y);`. If it doesn't, the setY2D values will be shifted so that graph is the same size and shape, but moved to the new center point.
    `graph.setY2DY1(double);`
      Deprecated as of 5.915 -- the graph's center is now specified by the graph object's x,y location. Old information: The default is `3` (see `Drawing Coordinates`).
    `graph.setY2DX2(double);`
      Deprecated as of 5.915 -- the graph's center is now specified by the graph object's x,y location. Old information: The default is `5.4` (see `Drawing Coordinates`).
    `graph.setY2DY2(double);`
      Deprecated as of 5.915 -- the graph's center is now specified by the graph object's x,y location. Old information: The default is `5.4` (see `Drawing Coordinates`).
    `graph.setZ3DSize(double);`
      Deprecated as of 5.915 -- see graph.setZAxisSize. Old information: The default is `2.4` `Drawing Coordinate` units.
    `graph.setZ3DXSize(double);`
      Deprecated as of 5.915 -- see graph.setZAxisSize. Old information: The default is `100.0` percent.
    `graph.setZ3DYSize(double);`
      Deprecated as of 5.915 -- see graph.setZAxisSize. Old information: The default is `100.0` percent.
    `graph.setDrawingOrder(String);`
      The default is "`1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11`". See `Drawing Order`. [Added in version 5.920.] The numbers, 1 - 11, represent parts of the graph: `1=map layers 1-6, 2=map layers 7..., 3=axis grid and zero lines, 4=axis lines, ticks, labels, titles, 5=function 1, 6=functions 2..., 7=dataset 1, 8=datasets 2..., 9=legend, 10=graph title, 11=comments.`
  `Graph : Title` Commands - correspond to options on the `Edit : Graph : Graph : Title` dialog box. All of the procedures take a list that should have two values (corresponding to title1 and title2).
    `graph.title.text(stringList);`
      The default for title1 and title2 is ".".
    `graph.title.radius(doubleList);`
      The default for title1 and title2 is `0.5` `Drawing Coordinate` units. Note that a graph title's position is stored internally as r,theta polar coordinates relative straight outward from the center of the axis. Stored in this way, the position doesn't have to be adjusted when the graph size and shape is changed.
    `graph.title.theta(doubleList);`
      The default for title1 and title2 is `0` degrees.
    `graph.title.color(colorList);`
      The default color for title1 and title2 is `Color2.black`.
    `graph.title.font(intList);`
      The default for title1 and title2 is `0` (which by default is the Helvet font). See `Drawing : Load Fonts`.
    `graph.title.fontStyle(intList);`
      Valid values are: `0=Plain, 1=Bold, 2=Italic, 3=Bold Italic`. The default for title1 and title2 is `0`.
    `graph.title.height(doubleList);`
      The default for title1 and title2 is `0.1` `Drawing Coordinate` units.
    `graph.title.angle(doubleList);`
      The default for title1 and title2 is `0` degrees.
    `graph.title.hAlign(intList);`
      Valid values are: `0=Left, 1=Center, and 2=Right`. The default for title1 and title2 is `1`.
  `Graph : Map` Commands - correspond to options on the `Edit : Graph : Map` dialog box. Other than `setNLayers`, all of the procedures takes a list that should have nLayers values.
    `graph.map.setLineDetail(int);`
      The default is `0` (automatic). Other valid values are the integers `1` (coarse) to `9` (fine).
    `graph.map.setNLayers(int);`
      The default is `0`. You must use this before assigning other map attributes.
    `graph.map.mapFile(stringList);`
      The default for each map layer is "".
    `graph.map.objectDetail(stringList);`
      The default for each map layer is "`1-2`".
    `graph.map.backgroundColor(colorList);`
      The default color for each map layer is `Color2.notDrawn`.
    `graph.map.lineColor(colorList);`
      The default color for each map layer is `Color2.mapDefault`.
    `graph.map.lineType(intList);`
      The default line type for each map layer is `0` (a solid line).
    `graph.map.lineDashsize(doubleList);`
      The default for each map layer is `0.02` `Drawing Coordinate` units.
    `graph.map.lineWidth(doubleList);`
      The default for each map layer is `0.003` `Drawing Coordinate` units.
    `graph.map.markerColor(colorList);`
      The default color for each map layer is `Color2.notDrawn`.
    `graph.map.markerSize(doubleList);`
      The default for each map layer is `0.1` `Drawing Coordinate` units.
    `graph.map.textDetail(stringList);`
      The default for each map layer is "".
    `graph.map.textColor(colorList);`
      The default color for each map layer is `Color2.mapDefault`.
    `graph.map.textHeight(doubleList);`
      The default for each map layer is `0.1` `Drawing Coordinate` units.
  `graph.openDataFile`.
    There was a command to let you load data into graph.data, but graph.data is gone and the command is now deprecated (as of 5.913): `graph.openDataFile(int fileType, int mode, String fileDirectory, String fileName, int simplify, int headerLength, String fileStructure);` Use `openDatafile` instead.
  `graph.data`
    There were commands to let you load data directly in graph.data, but graph.data is gone and the commands are now all deprecated (as of 5.913). Use the `datafile.xxx` commands instead.
    `graph.data.insertRows(int where, int howMany);`
      Deprecated in 5.913. Use `datafile.insertRows` instead.
    `graph.data.insertColumn(int where, String type, String name);`
      Deprecated in 5.913. Use `datafile.insertColumn` instead.
    `graph.data.setString(int col, int row, string value);`
      Deprecated in 5.913. Use `datafile.setString` instead.
    `graph.data.setRow(int row, stringList csvData);`
      Deprecated in 5.913. Use `datafile.setRow` instead.
    `graph.data.setCol(int col, stringList csvData);`
      Deprecated in 5.913. Use `datafile.setCol` instead.
  `Graph : Dataset` Commands - correspond to options on the `Edit : Graph : Dataset` dialog box. Other than `setNDatasets`, all of the procedures takes a list that should have nDatasets values.
    `graph.dataset.setNDatasets(int);`
      The default is `0`. You must use this before assigning other dataset attributes.
    `graph.dataset.datafile(intList);`
      The default for each dataset is `1`.
    `graph.dataset.representation(intList);`
      The default for each dataset is `1`. The representations are: `0=Bars/2D, 1=Bars/3D, 2=Bars/3D simple, 3=Box & whisker, 4=Fill above, 5=Fill below, 6=Fill between 2 Y, 7=Fill inward, 8=Fill outward, 9=Fill zero, 10=, 11=Line, 12=Line/staircase/HorVer, 13=Markers, 14=Markers/labels, 15=Markers/nth point, 16=Markers/variable, 17=Spline, 18=Grid/2D/colored blocks/1 point,19=Grid/2D/colored blocks/4 points, 20=Grid/3D/colored blocks/1 point,21=Grid/3D/colored blocks/4 points, 22=Grid/3D/colored surface, 23=Grid/3D/one color, 24=Grid/3D/transparent, 25=Vector, 26=Wind barb, 27=Grid/2D/bold nth line, 28=Grid/2D/bold nth spline, 29=Grid/2D/colored surface, 30=Grid/2D/line color, 31=Grid/2D/line dashsize, 32=Grid/2D/line width, 33=Markers/variable/color, 34=, 35=Grid/3D/histogram, 36=Grid/3D/one color with sides, 37=Grid/3D/pyramids, 38=, 39=, 40=, 41=Bars/3D pyramids, 42=Histogram, 43=BarGraph/Grouped, 44=BarGraph/Stacked, 45=BarGraph/100%, 46=HighLowOpenClose, 47=Fill/staircase/HorVer, 48=Line/staircase/VerHor, 49=Fill/staircase/VerHor.`
    `graph.dataset.variable1(intList);`
      The default for each dataset is `1`.
    `graph.dataset.variable2(intList);`
      The default for each dataset is `2`.
    `graph.dataset.variable3(intList);`
      The default for each dataset is `3`.
    `graph.dataset.variable4(intList);`
      The default for each dataset is `-1` (blank).
    `graph.dataset.variable5(intList);`
      The default for each dataset is `-1` (blank).
    `graph.dataset.variable6(intList);`
      The default for each dataset is `-1` (blank).
    `graph.dataset.variable7(intList);`
      The default for each dataset is `-1` (blank).
    `graph.dataset.extra1(intList);`
      The default for each dataset is `4`.
    `graph.dataset.extra2(doubleList);`
      The default for each dataset is `0`.
    `graph.dataset.backgroundColor(colorList);`
      The default color for each dataset is `Color2.notDrawn`.
    `graph.dataset.color(colorList);`
      The default color for each dataset is `Color2.black`.
    `graph.dataset.markerFont(intList);`
      The default for each dataset is `3` (which by default is the Marker font). See `Drawing : Load Fonts`.
    `graph.dataset.markerType(intList);`
      The default for each dataset is `52` (which is a plus sign in the Marker font).
    `graph.dataset.size(doubleList);`
      The default for each dataset is `0.1` `Drawing Coordinate` units.
    `graph.dataset.fillType(intList);`
      The default fill type for each dataset is `1` (horizontal lines).
    `graph.dataset.fillSize(doubleList);`
      The default for each dataset is `0.1` `Drawing Coordinate` units. [Added in version 5.918.]
    `graph.dataset.lineWidth(doubleList);`
      The default for each dataset is `0.003` `Drawing Coordinate` units.
    `graph.dataset.lineType(intList);`
      The default line type for each dataset is `0` (a solid line).
    `graph.dataset.lineDashsize(doubleList);`
      The default for each dataset is `0.02` `Drawing Coordinate` units.
    `graph.dataset.errorWidth(doubleList);`
      The default for each dataset is `0.003` `Drawing Coordinate` units.
    `graph.dataset.legend(stringList);`
      The default for each dataset is ".".
    `graph.dataset.keepIf(stringList);`
      The default for each dataset is "".
  `Graph : Function` Commands - correspond to options on the `Edit : Graph : Function` dialog box. Other than `setNFunctions`, all of the procedures takes a list that should have nFunctions values.
    `graph.function.setNFunctions(int);`
      The default is `0`. You must use this before assigning other function attributes.
    `graph.function.equation(stringList);`
      The default for each function is "".
    `graph.function.legend(stringList);`
      The default for each function is ".".
    `graph.function.representation(intList);`
      The default for each function is `3`. The representations are: `0=Fill above, 1=Fill below, 2=Fill zero, 3=Line, 4=Grid/2D/bold nth line, 5=Grid/2D/bold nth spline, 6=Grid/2D/colored surface, 7=Grid/2D/line color, 8=Grid/2D/line dashsize, 9=Grid/2D/line width, 10=Grid/2D/colored blocks/1 point, 11=Grid/2D/colored blocks/4 points, 12=Grid/3D/colored blocks/1 point, 13=Grid/3D/colored blocks/4 points, 14=Grid/3D/colored surface, 15=Grid/3D/one color, 16=Grid/3D/transparent, 17=Grid/3D/one color with sides.`
    `graph.function.backgroundColor(colorList);`
      The default backgroundColor for each function is `Color2.notDrawn`.
    `graph.function.color(colorList);`
      The default color for each function is `Color2.black`.
    `graph.function.fillType(intList);`
      The default fill type for each function is `1` (horizontal lines).
    `graph.function.fillSize(doubleList);`
      The default for each function is `0.1` `Drawing Coordinate` units.
    `graph.function.lineType(intList);`
      The default line type for each function is `0` (a solid line).
    `graph.function.lineDashsize(doubleList);`
      The default for each function is `0.02` `Drawing Coordinate` units.
    `graph.function.lineWidth(doubleList);`
      The default for each function is `0.003` `Drawing Coordinate` units.
    `graph.function.xEvaluate(intList);`
      The default for each function is `100`.
    `graph.function.yEvaluate(intList);`
      The default for each function is `25`.
    `graph.function.zSpacing(stringList);`
      The default for each function is ".".
    `graph.function.from(doubleList);`
      The default for each function is a missing value (represented by a dot).
    `graph.function.to(doubleList);`
      The default for each function is a missing value (represented by a dot).
  `Graph : Axis : Overview` Commands - correspond to options on the `Edit : Graph : Axis : Overview` dialog box. All of the procedures take a list that should have 4 values (corresponding to the X, Y, Z, and T axes).
    `graph.axis.type(intList);`
      The default for each axis is `0`. The valid types are: `0=Linear Scale, 1=Log Base 10, 2=Degrees, 3=Normal Probability, 4=Standard Deviation, 5=Double Log base 10, 6=Natural Log, 7=Date, 8=Seconds, 9=Pi, 10=Probit, 11=Square Root.`
    `graph.axis.low(doubleList);`
      The default for each axis is a missing value (represented by a dot).
    `graph.axis.high(doubleList);`
      The default for each axis is a missing value (represented by a dot).
    `graph.axis.offset(doubleList);`
      The default for each axis is `0` `Drawing Coordinate` units.
    `graph.axis.setConicParallel1(double);`
      The default is "." (automatic). Other valid values are doubles between `-89` and `89`.
    `graph.axis.setConicParallel2(double);`
      The default is "." (automatic). Other valid values are doubles between `-89` and `89`.
  `Graph : Axis : Title 1` Commands - correspond to options on the `Edit : Graph : Graph : Title` dialog when `Which Part` is set to `Title1`. All of the procedures take a list that should have 4 values (corresponding to the X, Y, Z, and T axes).
    `graph.axis.title1.text(stringList);`
      The default for each axis is ".".
    `graph.axis.title1.radius(doubleList);`
      The default for each axis is `0.5` `Drawing Coordinate` units. Note that an axis title's position is stored internally as r,theta polar coordinates relative straight outward from the center of the axis. Stored in this way, the position doesn't have to be adjusted when the graph size and shape is changed.
    `graph.axis.title1.theta(doubleList);`
      The default for each axis is a missing value (automatic) (represented by a dot).
    `graph.axis.title1.color(colorList);`
      The default color for each axis is `Color2.black`.
    `graph.axis.title1.font(intList);`
      The default for each axis is `0` (which by default is the Helvet font). See `Drawing : Load Fonts`.
    `graph.axis.title1.fontStyle(intList);`
      Valid values are: `0=Plain, 1=Bold, 2=Italic, 3=Bold Italic`. The default for each axis is `0`.
    `graph.axis.title1.height(doubleList);`
      The default for each axis is `0.1` `Drawing Coordinate` units.
    `graph.axis.title1.angle(doubleList);`
      The default for each axis is a missing value (represented by a dot). If you enter a specific value, it is in degrees.
    `graph.axis.title1.hAlign(intList);`
      Valid values are: `0=Left, 1=Center, 2=Right`. The default for each axis is `1` (Center).
    `graph.axis.title1.visible(intList);`
      Valid values are: `0=on main axis, 1=on opposite axis, 2=on main and opposite axes`. The default for each axis is `0`.
  `Graph : Axis : Title 2` Commands - correspond to options on the `Edit : Graph : Graph : Title` dialog when `Which Part` is set to `Title2`. All of the procedures take a list that should have 4 values (corresponding to the X, Y, Z, and T axes).
    `graph.axis.title2.text(stringList);`
      The default for each axis is ".".
    `graph.axis.title2.radius(doubleList);`
      The default for each axis is `0.7` `Drawing Coordinate` units. Note that an axis title's position is stored internally as r,theta polar coordinates relative straight outward from the center of the axis. Stored in this way, the position doesn't have to be adjusted when the graph size and shape is changed.
    `graph.axis.title2.theta(doubleList);`
      The default for each axis is a missing value (automatic) (represented by a dot)
    `graph.axis.title2.color(colorList);`
      The default color for each axis is `Color2.black`.
    `graph.axis.title2.font(intList);`
      The default for each axis is `0` (which by default is the Helvet font). See `Drawing : Load Fonts`.
    `graph.axis.title2.fontStyle(intList);`
      Valid values are: `0=Plain, 1=Bold, 2=Italic, 3=Bold Italic`. The default for each axis is `0`.
    `graph.axis.title2.height(doubleList);`
      The default for each axis is `0.1` `Drawing Coordinate` units.
    `graph.axis.title2.angle(doubleList);`
      The default for each axis is `0` degrees.
    `graph.axis.title2.hAlign(intList);`
      Valid values are: `0=Left, 1=Center, 2=Right.` The default for each axis is `1` (Center).
    `graph.axis.title2.visible(intList);`
      Valid values are: `0=on main axis, 1=on opposite axis, 2=on main and opposite axes`. The default for each axis is `0`.
  `Graph : Axis : Labels` Commands - correspond to options on the `Edit : Graph : Axis : Labels` dialog box. All of the procedures take a list that should have 4 values (corresponding to the X, Y, Z, and T axes).
    `graph.axis.labels.text(stringList);`
      The default for each axis is ".".
    `graph.axis.labels.radius(doubleList);`
      The default for each axis is `0.1` `Drawing Coordinate` units. Note that an axis label's position is stored internally in polar coordinates (r,theta) relative to straight outward from the center of the axis. Stored in this way, the position doesn't have to be adjusted when the graph size and shape is changed.
    `graph.axis.labels.theta(doubleList);`
      The default for each axis is `0` degrees.
    `graph.axis.labels.color(colorList);`
      The default color for each axis is `Color2.black`.
    `graph.axis.labels.font(intList);`
      The default for each axis is `0` (which by default is the Helvet font). See `Drawing : Load Fonts`.
    `graph.axis.labels.fontStyle(intList);`
      Valid values are: `0=Plain, 1=Bold, 2=Italic, 3=Bold Italic`. The default for each axis is `0`.
    `graph.axis.labels.height(doubleList);`
      The default for each axis is `0.1` `Drawing Coordinate` units.
    `graph.axis.labels.angle(doubleList);`
      The default for each axis is `0` degrees.
    `graph.axis.labels.hAlign(intList);`
      Valid values are: `0=Left, 1=Center, 2=Right, 3=Auto`. The default for each axis is `3` (Auto).
    `graph.axis.labels.visible(intList);`
      Valid values are: `0=on main axis, 1=on opposite axis, 2=on main and opposite axes`. The default for each axis is `0`.
    `graph.axis.labels.division(stringList);`
      The default for each axis is ".".
    `graph.axis.labels.format1(intList);`
      The default for each axis is `0` (general format). See format options in the CoStat Manual (costat.htm).
    `graph.axis.labels.format2(intList);`
      The default for each axis is `0` (if format1 is 0, 0 here specifies a 9 digit field).
    `graph.axis.labels.decimalPoint(intList);`
      The default for each axis is `0` (a period).
    `graph.axis.labels.prefix(stringList);`
      The default for each axis is "".
    `graph.axis.labels.suffix(stringList);`
      The default for each axis is "".
    `graph.axis.labels.drawFirstLabel(booleanList);`
      The default for each axis is `true`. (This was added in 5.923.)
    `graph.axis.labels.drawLastLabel(booleanList);`
      The default for each axis is `true`. (This was added in 5.917.)
  `Graph : Axis : Axis Line` Commands - correspond to options on the `Edit : Graph : Axis : Lines` dialog when `Which Part` is set to `Axis Line`. All of the procedures take a list that should have 4 values (corresponding to the X, Y, Z, and T axes).
    `graph.axis.axisLine.type(intList);`
      The default line type for each axis is `0` (a solid line).
    `graph.axis.axisLine.dashsize(doubleList);`
      The default for each axis is `0.02` `Drawing Coordinate` units.
    `graph.axis.axisLine.width(doubleList);`
      The default for each axis is `0.003` `Drawing Coordinate` units.
    `graph.axis.axisLine.color(colorList);`
      The default color for each axis is `Color2.black`.
    `graph.axis.axisLine.arrowHeadVisible(intList);`
      For each axis, 0=Low End, 1=High End (the default), and 2=Both Ends.
    `graph.axis.axisLine.arrowHeadsize(doubleList);`
      The default for each axis is `0` `Drawing Coordinate` units.
    `graph.axis.axisLine.visible(intList);`
      Valid values are: `0=on main axis, 1=on opposite axis, 2=on main and opposite axes`. The default for each axis is `2`.
  `Graph : Axis : Ticks 1` Commands - correspond to options on the `Edit : Graph : Axis : Lines` dialog when `Which Part` is set to `Ticks 1`. All of the procedures take a list that should have 4 values (corresponding to the X, Y, Z, and T axes).
    `graph.axis.ticks1.type(intList);`
      The default line type for each axis is `0` (a solid line).
    `graph.axis.ticks1.dashsize(doubleList);`
      The default for each axis is `0.02` `Drawing Coordinate` units.
    `graph.axis.ticks1.width(doubleList);`
      The default for each axis is `0.003` `Drawing Coordinate` units.
    `graph.axis.ticks1.color(colorList);`
      The default color for each axis is `Color2.black`.
    `graph.axis.ticks1.division(stringList);`
      The default for each axis is ".".
    `graph.axis.ticks1.in(doubleList);`
      The default for each axis is `0.06` `Drawing Coordinate` units.
    `graph.axis.ticks1.out(doubleList);`
      The default for each axis is `0` `Drawing Coordinate` units.
    `graph.axis.ticks1.visible(intList);`
      Valid values are: `0=on main axis, 1=on opposite axis, 2=on main and opposite axes`. The default for each axis is `0`.
  `Graph : Axis : Ticks 2` Commands - correspond to options on the `Edit : Graph : Axis : Lines` dialog when `Which Part` is set to `Ticks2`. All of the procedures take a list that should have 4 values (corresponding to the X, Y, Z, and T axes).
    `graph.axis.ticks2.type(intList);`
      The default line type for each axis is `0` (a solid line).
    `graph.axis.ticks2.dashsize(doubleList);`
      The default for each axis is `0.02` `Drawing Coordinate` units.
    `graph.axis.ticks2.width(doubleList);`
      The default for each axis is `0.003` `Drawing Coordinate` units.
    `graph.axis.ticks2.color(colorList);`
      The default color for each axis is `Color2.black`.
    `graph.axis.ticks2.division(stringList);`
      The default for each axis is ".".
    `graph.axis.ticks2.in(doubleList);`
      The default for each axis is `0.03` `Drawing Coordinate` units.
    `graph.axis.ticks2.out(doubleList);`
      The default for each axis is `0` `Drawing Coordinate` units.
    `graph.axis.ticks2.visible(intList);`
      Valid values are: `0=on main axis, 1=on opposite axis, 2=on main and opposite axes`. The default for each axis is `0`.
  `Graph : Axis : Grid 1` Commands - correspond to options on the `Edit : Graph : Axis : Lines` dialog when `Which Part` is set to `Grid 1`. All of the procedures take a list that should have 4 values (corresponding to the X, Y, Z, and T axes).
    `graph.axis.grid1.type(intList);`
      The default line type for each axis is `0` (a solid line).
    `graph.axis.grid1.dashsize(doubleList);`
      The default for each axis is `0.02` `Drawing Coordinate` units.
    `graph.axis.grid1.width(doubleList);`
      The default for each axis is `0.003` `Drawing Coordinate` units.
    `graph.axis.grid1.color(colorList);`
      The default color for each axis is `Color2.notDrawn`.
    `graph.axis.grid1.division(stringList);`
      The default for each axis is ".".
  `Graph : Axis : Grid 2` Commands - correspond to options on the `Edit : Graph : Axis : Lines` dialog when `Which Part` is set to `Grid 2`. All of the procedures take a list that should have 4 values (corresponding to the X, Y, Z, and T axes).
    `graph.axis.grid2.type(intList);`
      The default line type for each axis is `0` (a solid line).
    `graph.axis.grid2.dashsize(doubleList);`
      The default for each axis is `0.02` `Drawing Coordinate` units.
    `graph.axis.grid2.width(doubleList);`
      The default for each axis is `0.003` `Drawing Coordinate` units.
    `graph.axis.grid2.color(colorList);`
      The default color for each axis is `Color2.notDrawn`.
    `graph.axis.grid2.division(stringList);`
      The default for each axis is ".".
  `Graph : Axis : Zero Line` Commands - correspond to options on the `Edit : Graph : Axis : Lines` dialog when `Which Part` is set to `Zero Line`. All of the procedures take a list that should have 4 values (corresponding to the X, Y, Z, and T axes).
    `graph.axis.zeroLine.type(intList);`
      The default line type for each axis is `0` (a solid line).
    `graph.axis.zeroLine.dashsize(doubleList);`
      The default for each axis is `0.02` `Drawing Coordinate` units.
    `graph.axis.zeroLine.width(doubleList);`
      The default for each axis is `0.003` `Drawing Coordinate` units.
    `graph.axis.zeroLine.color(colorList);`
      The default color for each axis is `Color2.notDrawn`.
    `graph.axis.axisLine.arrowHeadVisible(intList);`
      For each axis, 0=Low End, 1=High End (the default), and 2=Both Ends.
    `graph.axis.zeroLine.arrowHeadsize(doubleList);`
      The default for each axis is `0` `Drawing Coordinate` units.
  `Graph : Legend` Commands - correspond to options on the `Edit : Graph : Legend` dialog box.
    `graph.legend.setText(string);`
      The default is "".
    `graph.legend.setOrder(intList);`
      The integers 1 through 20 in a comma-separated list specify the order of datasets and functions in the legend. 1 - 9 represent functions #1 - #9. 10 represents functions #10 and higher. 11 - 19 represent datasets #1 - #9. 20 represents datasets #10 and higher. The default is "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20". [Added in version 6.100.]
    `graph.legend.setEncodedX(double x);`
      This specifies the x part of the legend's location in an encoded way. The encoding is: pretend the `Graph Angle` is 0 degrees, `encodedX = (drawingX-graph.x)/ (graph.xAxisSize/2)`. Thus, it is the x distance relative to the graph's center point and relative to the X axis size. [Added in version 5.916]
    `graph.legend.setEncodedY(double y);`
      This specifies the y part of the legend's location in an encoded way. The encoding is: pretend the `Graph Angle` is 0 degrees, `encodedY = (drawingY-graph.y)/ (graph.yAxisSize/2)`. Thus, it is the y distance relative to the graph's center point and relative to the Y axis size. [Added in version 5.916]
    `graph.legend.setX(double);` [deprecated]
      [As of version 5.915, this is deprecated. Use `graph.legend.setEncodedX` instead.]
    `graph.legend.setY(double);` [deprecated]
      [As of version 5.915, this is deprecated. Use `graph.legend.setEncodedY` instead.]
    `graph.legend.setTextColor(color);`
      The default color is `Color2.black`.
    `graph.legend.setFont(int);`
      The default is `0` (which by default is the Helvet font). See `Drawing : Load Fonts`.
    `graph.legend.setFontStyle(int);`
      The default is `0`=plain. Other valid values are `1=bold, 2=italics,` and `3=bold italics`.
    `graph.legend.setHeight(double);`
      The default is `0.1` `Drawing Coordinate` units.
    `graph.legend.setAngle(double);`
      The default is `0` degrees.
    `graph.legend.setType(int);`
      The default legend type is `1`=Vertical. Valid values are: `0=Horizontal, 1=Vertical,` or `2=Interlaced`.
    `graph.legend.setInterline(double);`
      The default is `1`, which represents the standard interline spacing
    `graph.legend.setExampleSize(double);`
      The default is `1`, which represents the standard size (which is scaled relative to the legend height value).
    `graph.legend.setBackgroundColor(color);`
      The default color is `Color2.notDrawn`.
    `graph.legend.setLineColor(color);`
      The default color is `Color2.notDrawn`.
    `graph.legend.setLineWidth(double);`
      The default is `0.003` `Drawing Coordinate` units.
    `graph.legend.setShapeType(int);`
      See the list of valid shape types. The default is `34` (Rectangle).
    `graph.legend.setShapeHAlign(int);`
      See the list of valid shapeHAlign types. The default is 4.
    `graph.legend.setShapeVAlign(int);`
      See the list of valid shapeVAlign types. The default is `10` (ShapeCenter).
    `graph.legend.setShapeShadow(int);`
      See the list of valid shapeShadow types. The default is `0` (none).
    `graph.legend.setShapeBorder(double);`
      The default is 1. [Added in version 6.100.]
    `graph.legend.setUseCustomLegend(boolean);`
      The default is `false`.
    `graph.legend.setCustomLegendText(String);`
      The default is "".
  `Graph : Comment` Commands - correspond to options on the `Edit : Graph : Comment` dialog box.
    `graph.comment.setNComments(int);`
      The default is `0`. You must use this before assigning other comment attributes.
    `graph.comment.graphX(doubleList);`
      The default is `0` (in the graph's coordinate system).
    `graph.comment.graphY(doubleList);`
      The default is `0` (in the graph's coordinate system).
    `graph.comment.graphZ(doubleList);`
      The default is `0` (in the graph's coordinate system).
    `graph.comment.shapeType(intList);`
      See the list of valid shape types. The default is `34` (Rectangle). Note that the order on the Choice widget is alphabetical, which is different from the numerical order. [Added in version 5.912.]
    `graph.comment.shapeHAlign(intList);`
      See the list of valid shapeHAlign types. The default is `4` (Center). [Added in version 5.912.]
    `graph.comment.shapeVAlign(int);`
      See the list of valid shapeVAlign types. The default is `10` (ShapeCenter). [Added in version 5.912.]
    `graph.comment.shapeWidth(doubleList);`
      The default is "." (default value). [Added in version 5.912.]
    `graph.comment.shapeHeight(doubleList);`
      The default is "." (default value). [Added in version 5.912.]
    `graph.comment.shapeBorder(doubleList);`
      The default is 1. [Added in version 6.100.]
    `graph.comment.shapeAngle(doubleList);`
      The default is `0` degrees. [Added in version 5.912.]
    `graph.comment.shapeShadow(intList);`
      See the list of valid shapeShadow types. The default is `0` (none). [Added in version 5.912.]
    `graph.comment.backgroundColor(colorList);`
      The default color for each comment is `Color2.notDrawn`. [Added in version 5.912.]
    `graph.comment.lineColor(colorList);`
      The default color for each comment is `Color2.mapDefault`. [Added in version 5.912.]
    `graph.comment.lineType(intList);`
      The default line type for each comment is `0` (a solid line). [Added in version 5.912.]
    `graph.comment.lineDashsize(doubleList);`
      The default for each comment is `0.02` `Drawing Coordinate` units. [Added in version 5.912.]
    `graph.comment.lineWidth(doubleList);`
      The default for each comment is `0.003` `Drawing Coordinate` units. [Added in version 5.912.]
    `graph.comment.textColor(colorList);`
      The default color is `Color2.black`. [Added in version 5.912.]
    `graph.comment.textFont(intList);`
      The default is `0` (which by default is the Helvet font). See `Drawing : Load Fonts`. [Added in version 5.912.]
    `graph.comment.textHeight(doubleList);`
      The default is `0.1` `Drawing Coordinate` units. [Added in version 5.912.]
    `graph.comment.textPosition(intList);`
      Valid values are: `0=Upper left, 1=Upper center, 2=Upper right, 3=Center left, 4=Center center, 5=Center right, 6=Lower left, 7=Lower center,` and `8=Lower right`. The default is `4` (Center center). [Added in version 5.912.]
    `graph.comment.color(colorList);` [deprecated]
      The default color is `Color2.black`. [As of version 5.912, this is deprecated. Use `graph.comment.textColor(colorList)` instead.]
    `graph.comment.font(intList);` [deprecated]
      The default is `0` (which by default is the Helvet font). See `Drawing : Load Fonts`. [As of version 5.912, this is deprecated. Use `graph.comment.textFont(intList)` instead.]
    `graph.comment.height(doubleList);` [deprecated]
      The default is `0.1` `Drawing Coordinate` units. [As of version 5.912, this is deprecated. Use `graph.comment.textHeight(doubleList)` instead.]
    `graph.comment.angle(doubleList);` [deprecated]
      The default is `0` degrees. [As of version 5.912, this is deprecated. Use `graph.comment.shapeAngle(doubleList)` instead.]
    `graph.comment.hAlign(intList);` [deprecated]
      Valid values are: `0=Left, 1=Center, 2=Right`. The default is `0` (Left). [As of version 5.912, this is deprecated. Use `graph.comment.textPosition(intList: oldValue+3)` instead.]

  Menu Tree / Index

  A Sample Drawing File

  Here is an example of a drawing file with data embedded in it and the drawing that can be created with it.

  In general it is good practice to look at drawing files that CoPlot has created. As with any ASCII file, you can view/edit drawing files in CoText (see `Screen : Show CoText`) or any other text editor. This file is `sample.draw` in the cohort directory.

      CoPlot.drawVersion(6.300);

      createDatafile(1);
      datafile.insertRows(1,3);
      datafile.insertColumn(1, "d", "X");
      datafile.insertColumn(2, "d", "Y");
      datafile.setRow(1, "1.5, 0.5");
      datafile.setRow(2, "3, 4");
      datafile.setRow(3, "8.5, 9.5");

      setCharacters("");
      newGraph();
      graph.title.text("\"Sample Drawing\","+
        "\".\"");
      graph.dataset.setNDatasets(1);
      graph.dataset.representation("13");
      create("graph", "2.09, 8.04");

      setLineColor(Color2.green4);
      setLineType(0);
      setLineDashsize(0.02);
      setLineWidth(0.01);
      setPathType(0);
      create("path", "0.97, 5.08, 2.23, 6.14, "+
        "3.76, 5.64");

      setCharacters("");
      setBackgroundColor(Color2.yellow4);
      setFillColor(Color2.blue4);
      setFillType(1);
      setFillSize(0.1);
      setFillLinewidth(0.01);
      setLineColor(Color2.orange4);
      setLineWidth(0.02);
      setEllipseSize(0.5);
      setEllipseInnerSize(0);
      setEllipseWidth(1);
      setEllipseStart(0);
      setEllipseFinish(360);
      setEllipseNSides(90);
      setEllipseAngle(0);
      setEllipseSkew(0);
      create("ellipse", "2.04, 5.71");

      endOfFile();

  Here is the drawing from the sample.draw drawing file:

  Menu Tree / Index

  ## Java Programs, Batch Files, Shell Scripts, Pipes, Perl, Python, Rexx, and Tcl

  You can bypass the graphical front end of CoPlot in order to convert drawings in various types of graphics files (notably .draw files) into other types of graphics files (notably .gif files, or printed on the default printer) via Java programs, batch files, shell scripts, pipes, Perl, Python, Rexx, and Tcl.

  When you run CoPlot, you are really running a graphical front end to a Java class called `Drawing` (which comes with CoPlot). It is Drawing that actually maintains the list of drawing objects, draws them to an Image (which CoPlot draws on the screen), opens and saves various types of graphics files, etc.

  One way to use the Drawing class is by using the Drawing program, a program that you can run from a command line by typing "drawing" when you are in the cohort directory. The Drawing program is a text mode, command line program that reads in some type of graphics file (for example, .draw, .dra, .gra, .grg, .wmf, .cgm, .gif, .jpg) (or reads system.in) and writes out to an image file (for example, .gif, .jpg), a vector graphics file (for example, .cgm, .wmf, .eps), or the default printer. You can direct the output to `system.out` instead of to an actual file. As soon as you run `drawing`, it asks you four questions:

  `Input file name (""=System.in)?`
    This can be a .draw file name (for example, `test.draw`) or nothing. If you enter nothing, it will look for drawing information from System.in (the Java equivalent of C's stdin, which in practice is the command line window). See Drawing (.draw) File Format
  `Input type (""=0=.draw, 1=.dra, 2=.gra, ...)?`
    This identifies the type of graphics file coming in. The options are `0=.draw, 1=.dra, 2=.gra, 3=.cgm, 4=.dxf, 5=.wmf, 6=.eps, 7=.gif, 8=.jpg, 9=.pcx, 10=.png, 11=.ppm, 12=.grg`.
  `Output file name (""=System.out)?`
    This is the name for the image file (for example, `test.gif`) or nothing (""). If you enter nothing, it will send the resulting information to System.out (the Java equivalent of C's stdout, which in practice is the command line window). For '`Output type=12=defaultPrinter`' set this to "".
  `Output type (0=.draw, 1=.ppm, ""=2=.gif, ...)?`
    This is the type of image file you want to create. The options are `0=.draw, 1=.ppm, 2=.gif, 3=.eps RGB, 4=.pdf, 5=.wpg, 6=.cgm, 7=.wmf, 8=hpgl2bw, 9=hpgl2color, 10=jpgHighQuality, 11=jpgSmallFile, 12=defaultPrinter, 13=pcxBW, 14=pcxColor, 15=.svg, 16=.png, 17=wmfText, 18=cgmText, 19=svgText, 20=gifWebPalette, 21=gifCoHortPalette, 22=.eps CMYK.` The default is `21`.

  The program then reads the information from the graphics file (or System.in), creates the image, then saves it to the output file (or System.out).

  'Drawing' Command Line Parameters - Instead of answering the questions that the program asks, you can use any or all of the following command line parameters in any order:

  `in-inputFileName`
    The default is for the input file to come from `System.in`.
  `it-inputType`
    The default is `0` (a .draw file).
  `on-outputFileName`
    The default is for the output file to go to `System.out`.
  `ot-outputType`
    The default is `21` (a .gif file with the CoHort palette).
  `d-`
    This suppresses the diagnostic messages that are usually sent to System.err.
  `yn-Your_Name`
    For registration purposes. Please convert spaces to underlines.
  `rn-RegistrationNumber`
    For registration purposes.
  `df-dateFormat`
    This is analogous to `Screen : Slash Date Format`. Specify "0" for m/d/y or "1" for d/m/y.
  For example, `drawing in-wheat.draw on-wheat.gif` will take the input file wheat.draw and create an output file called wheat.gif. Since the input type and output type were not specified, the defaults (`0`=.draw and `21`=.gif CoHort palette) will be used. If you don't provide `yn, rn,` or `df,` Drawing will look for that information in CoPlot.pref.

  Running Command Line Programs - To run CoHort's command line programs like Drawing, you need to go to the cohort directory (in Windows, for example: `cd \progra~1\cohort6`), and then run the batch file (for example: `drawing`).

  To run CoHort's command line graphical programs in UNIX, you also need to install xvfb (a virtual frame buffer) and run it in back-end mode. Otherwise, you will get an error message saying the X Window session wasn't found. (This may become unnecessary with Java 1.4, where you can use the Java command line switch "`-Djava.awt.headless=true`".)

  Coordinates - If the incoming file is a .draw file, the `setXBounds, setYBounds,` and `setScale` commands specify the size of the drawing (ultimately, in inches). (See `Drawing : Coordinates`.) .dra, .gra, and .grg files also specify the size of the drawing. If the output file is an image file, the Drawing program creates an image that is the exact size necessary (converting 1 inch to 100 pixels, and adding 1 so the border is visible). In the example below, a drawing that is 1.2 x 0.4 inches will generate an image that is 121 x 41 pixels.

  Errors - If a syntax error is found while reading the graphics file or creating the image, the error is printed to System.err (on the screen), but processing continues. If you use the "d-" command line flag, these errors are suppressed. If an error occurs while creating the output file, the error is printed to System.err and the program stops with a System.exit(1) command (error level=1). All error messages start with the word "`Error`" at the beginning of a line.

  Pipes - Note that you can pipe all of the information into Drawing and have the results come out a pipe. For example, let's say we have a program called `drawGenerator` which generates the following text (note that the lines marked [blank] should be truly blank lines):

      [blank]
      0
      [blank]
      21
      CoPlot.drawVersion(6.300);
      setXBounds(0, 1.2);
      setYBounds(0, 0.4);

      setTextColor(Color2.red4);
      setTextFont(0);
      setTextHeight(0.1);
      setShapeAngle(0);
      setCharacters("Hello, World!");
      create("text", "0.6, 0.2");

      endOfFile();

  (Note that the text answers the four questions posed by Drawing, then has information that would be in a .draw file.) And let's say we have another program called gifProcessor, which reads in .gif files and processes them. Then you can use the following command line to generate the .draw information, pass it to Drawing (which in turn converts the .draw information to a .gif file), and pass the .gif file to gifProcessor (although there isn't room here, this command must be on one long line):

      drawGenerator | java.exe -Xmx512m -Xincgc -cp "c:\Program Files\cohort6\cohort.jar"
        com.cohort.Drawing | gifProcessor

  Unfortunately, you can't put all of Drawing's command line settings (-Xmx, -X, -cp) in a batch file (if you do, the pipes don't work).

  The image coming out of this example is:

  Batch Files and Shell Scripts - Since Drawing is a text mode, command line program, it can process graphics files in an automated way in batch files (Windows) and shell scripts (UNIX). One common use would be to use Drawing to automatically process data from some other program, generate a graph or drawing, and save it in a .gif file for later viewing. Another use would be on a web server, as part of a script which generates and serves a custom graph or drawing (in .gif form), based on a request by a remote client.

  Programming with Java, Perl, Python, Rexx, or Tcl - A different approach to getting the services of the Drawing class is to use the Drawing class directly from a Java program or from a program in a different language that can access Java objects. Basically, you must create an instance of the Drawing class (the equivalent of `Drawing drawing=new Drawing("Your Name", "Registration Number");`) and then call any of the procedures used in a .draw program by putting "`drawing.`" at the beginning of the method call. For example, `"setXBounds(0, 1.2);"` in a .draw file becomes `"drawing.setXBounds(0, 1.2);"` in a Java program. See the Drawing (.draw) File Format for a full list of commands and their parameters.

  Advice - Become familiar with CoPlot (the GUI program) before trying to learn about programming the Drawing class (the non-GUI approach). Everything in the Drawing class parallels something in CoPlot. So if you learn about CoPlot first, it will be much easier to learn about and understand the Drawing class. Also, it is very handy to use CoPlot to create .draw files that are the starting point for the drawings you want to generate with the Drawing class. Thus, you can use CoPlot to write 95% of the code you need for the .draw file, then just modify it a little to customize it.

  Guidelines - Here are some guidelines for converting .draw files into Java programs that call methods of the Drawing class:

  - Change the extension of the file to ".java".
  - All of the classes in the cohort.jar file are defined to be part of a Java package called "com.cohort". Therefore, you need to put "import" statements at the top of the .java files to identify each of the cohort.com classes that you want to use (most commonly, "`import com.cohort.Drawing;`" and "`import com.cohort.Color2;`"). Or, you can always refer to the classes by their full names (for example, `com.cohort.Drawing drawing = new com.cohort.Drawing(yourName, yourRegistrationNumber);`).
  - You must create an instance of the Drawing class and then call its methods: `Drawing drawing=new Drawing(yourName, yourRegistrationNumber);` (where `yourName` and `yourRegistrationNumber` are the String representations of your registration information).
  - Unlike the first line of .draw files, you shouldn't include the command `"CoPlot.drawVersion(6.300);"`.
  - Unlike the last line of .draw files, you shouldn't include the command `"endOfFile();"`.
  - For missing numeric values that aren't in Strings, use `Drawing.NaN` instead of '.' (which is only allowed in .draw files).
  - Some useful Drawing procedures that aren't used in .draw files are:
    - `String drawing.convertDrawing(String inName, int inType, String outName, int outType, boolean printDiagnostics);`. With just one line, you can read in a graphics file and write out a different type of graphics file. The parameters are the same as the command line parameters for the standalone Drawing program described above. It returns an error string ("" if there is no error).
    - `String drawing.fileOpen(int inType, String inName);` which opens a some kind of graphics file and returns an error String ("" if no error). The parameters are the same as the command line parameters for the standalone Drawing program described above.
    - `String drawing.fileSaveAs(int outType, String outName);` which saves the drawing as some kind of file and returns an error String ("" if no error). The parameters are the same as the command line parameters for the standalone Drawing program described above.
    - `String drawing.fileSaveAsImage();` This creates an image of the drawing. It returns an error string ("" if there is no error). Minor (non-fatal) errors are also reported.
    - `java.awt.Image drawing.getCurrentImage();` This actually gets the image created by `fileSaveAsImage()`. If there was serious trouble while creating it, it will be null.
    - `void drawing.reset();`, which resets the drawing file (to 0 objects and all default attributes).
  - You should call `System.exit(0);` when you want the program to stop (because of a bug in Java related to using the System toolkit).

  Here is a minimal example which just opens a .draw file and saves it as a .jpg file. (Please substitute your name and registration number in place of `Your Name` and `RegistrationNumber`.) (See the `minimal.*` files in the cohort directory.)

      import com.cohort.Drawing;
      public class Minimal {
        public static void main(String args[]) {
          System.err.println("Creating wheat.jpg...");
          Drawing drawing=new Drawing("Your Name", "RegistrationNumber");
          String error=drawing.convertDrawing(
            "wheat.draw", 0,
            "wheat.jpg", 10, false);
          System.err.println(error);
          System.exit(0);
        }
      }

  ClassPath - The `javac` compiler and the `java` program, which runs Java .class files, need to know where to look for existing .class files. You need to specify this information with the -cp switch on the javac and java command lines; otherwise, you will get an error message saying something like `Class not found: 'x.class'`. If you put your .class file (for example, minimal.class) in the same directory as the cohort.jar file, your -cp switch can be quite simple (in Windows and OS/2: "`-cp .;cohort.jar`"; for UNIX and Macintosh, just change the separator from ";" to ":"). If the files are in different directories, you need to specify complete names, for example, "`-cp c:\myClasses;c:\progra~1\cohort.jar`". (Note the use of the Windows short form "`progra~1`" of the directory name "`Program Files`", which avoids problems with the space in the directory name). [Before version 6.100, CoHort command line programs required that you set the cohort environment variable (`set cohort=...`). This is no longer recommended.]

  Fonts Not Found (and "index out of range" error messages in the Font2 class) - Usually, when your program calls "`new Drawing`", the Drawing class is able to determine which directory has the CoHort font (.fnt) files because they are in the same directory as the cohort.jar file (the "cohort" directory), which is listed in the "`-cp`" command line switch (see above). If you get an "index out of range" error messages in the Font2 class, then the Drawing class hasn't found the font files (check your "`-cp`" command line switch) or the files aren't there (did you manually copy the cohort.jar file into a directory, but forget to copy the *.fnt files?). Or, you can use the `-Dcohort="c:\cohortDirectory\"` command line switch to specify a specific directory.

  HelloWorld - Here is an example which shows how to convert the sample `HelloWorld.draw` file from above into a Java program which makes a .jpg file. This example also shows how to create a java.awt.Image and how to reset the drawing if you want to work with another drawing. (See all of the `HelloWorld` files in the cohort directory.)

      import com.cohort.Drawing;
      import com.cohort.Color2;
      public class HelloWorld {

        public static void main(String args[]) {
          System.err.println("Creating HelloWorld.jpg...");
          Drawing drawing=new Drawing("Your Name", "Registration Number");

          //CoPlot.drawVersion(6.300);
          drawing.setXBounds(0, 1.2);
          drawing.setYBounds(0, 0.4);

          drawing.setTextColor(Color2.red4);
          drawing.setTextFont(0);
          drawing.setTextHeight(0.1);
          drawing.setShapeAngle(0);
          drawing.setCharacters("Hello, World!");
          drawing.create("text", "0.6, 0.2");

          //save the drawing as a .jpg file
          String error=drawing.fileSaveAs(10, "HelloWorld.jpg"); //10=.jpgHighQuality
          if (error.length()>0) System.err.println(error);

          //Save the drawing as a java.awt.image.
          error=drawing.fileSaveAsImage();
          if (error.length()>0) System.err.println(error);
          //Get the Image you just made.
          java.awt.Image image=drawing.getCurrentImage();
          //If this were a graphical program, you could display the image:
          //if (image!=null) panel.getGraphics().drawImage(image, 0, 0, null);

          //If you were going to create a new drawing, you would reset the drawing:
          drawing.reset();

          //You could then start over here, with a description of another drawing.
          //drawing.setXBounds(0, 8);
          //...

          System.err.println("Done.");
          System.exit(0);
        }
      }

  Of course, you will probably have a more complex program which does lots of other things and periodically creates a drawing and saves it as some type of graphics file (or uses type=12 to print it) or displays it as an image on the screen.

  Advice - The easiest way to get started using the methods in the Drawing class is look at .draw files. For example, you might make a drawing in CoPlot which is the basic type of drawing that you want your program to create. Then, you can use the .draw file as a starting point for creating your program.

  Another Example -
  Here is a small sample program which uses the CoData class (see the CoStat manual) to:

  1. Load data from a comma-separated ASCII file (linear.csv).
  2. Calculate a linear regression equation for the data.
  3. Plot the data and the equation on a graph.
  4. Create a .gif file of the resulting drawing (linear.gif).
  Linear.java, Linear.class, and linear.csv can be found in the cohort directory. To run the program, open a command line window (in Windows, the MS DOS Prompt), change to the cohort directory, and type "`java -cp .;cohort.jar Linear`" (in Unix, change ";" to ":").

      //This calculates a linear regression equation for data in linear.csv,
      //  plots the data and the equation on a graph, and creates linear.gif.
      //The command line "-cp" switch must specify where the cohort.jar file is.
      import com.cohort.Drawing;
      import com.cohort.Color2;
      import com.cohort.CoData;
      public class Linear {
        public static void main(String args[]) {
          //Set up the drawing (but substitute your name and registration number)
          Drawing drawing=new Drawing("Your Name", "Registration Number");
          drawing.setXBounds(0, 3.6);
          drawing.setYBounds(0, 4.4);
          drawing.setLeftMargin(2.5);
          drawing.setBottomMargin(3.3);
          String cohortDir=System.getProperty("cohort");
          System.err.println("cohortDir: "+cohortDir); //a useful diagnostic message

          //Open Datafile 1: 1=Datafile 1, 1=filetype=csv, 0=mode=replace,
          //  dir=cohortDir (you could use a specific directory like "c:/temp/"),
          //  filename, 1=simplify=aggressive, 0=headerlength, ""=header)
          drawing.openDatafile(1, 1, 0, cohortDir, "linear.csv", 1, 0, "");

          //Do the regression
          drawing.getDatafile(1); //set drawing.datafile to Datafile 1
          CoData codata=new CoData(drawing.datafile);
          //do the regression 0=polynomial, 1=xcol, 2=ycol, 1=degree,
          codata.runDataRegressionXY(0, 1, 2, 1, "", true, false, 0);
          if (codata.getRunError().length()>0) { //check for errors
            System.err.println("Error: "+codata.getRunError());
            System.exit(1);
          }
          String equation=codata.dataRegressionXY.getEquation();
          System.err.println("Equation: "+equation); //a useful diagnostic message

          //Create the graph
          drawing.setGroup(0);
          drawing.newGraph();
          //change drawingOrder, so function drawn after data
          drawing.graph.setDrawingOrder("1, 2, 3, 4, 7, 8, 5, 6, 9, 10, 11");
          drawing.graph.dataset.setNDatasets(1);
          drawing.graph.dataset.representation("13");
          drawing.graph.dataset.variable1("1");
          drawing.graph.dataset.variable2("2");
          drawing.graph.dataset.markerType("34");
          drawing.graph.dataset.lineWidth("0");
          drawing.graph.function.setNFunctions(1);
          //specify the equation, within quotation marks
          drawing.graph.function.equation("\""+equation+"\"");
          drawing.graph.function.color("Color2.red4");
          drawing.graph.legend.setTextColor(Color2.notDrawn);
          drawing.create("graph", "2, 2.5");

          //Save as 21=gif file (CoHort palette)
          //(you could use a specific directory like "c:/temp/")
          String error = drawing.fileSaveAs(21, cohortDir + "linear.gif");
          if (error.length()>0) {
            System.err.println(error); //check for errors
            System.exit(1);
          }

          System.err.println("Done.");
          System.exit(0);
        }
      }

  Perl - If you are a Perl programmer and wish to access Drawing, from a Perl script, you can do so with Java/Perl Lingo (JPL), which is freely available. JPL also makes it possible to run Perl scripts from within Java program. JPL, including its source code, is available for download as part of Perl version 5.005_54 (and later versions) from the Perl Web site (www.perl.com).

  Support - We will help you use your CoHort software programs, but we can't extend that support to issues related to connections with other languages.

  Continuous Processing - "Drawings" is a slightly different version of the Drawing program that is designed to process a series of .draw files. Because this setup doesn't have to restart the Java Virtual Machine and the Drawings program for each drawing, it saves lots of time. All diagnostic and error messages are printed to System.err.

  Normally, the program accepts input from System.in. However, if you use the command line options `host-hostName` and `port-portNumber`, you can use a socket to supply information to Drawings.

  After initializing itself, the program repeatedly:

  1. Reads the information from a .draw file which has been fed into the program via System.in or a socket. The `endOfFile()` command in the .draw file signifies the end of the .draw file.
  2. The program then processes `drawings.xxx` commands. The options are:
     - `drawings.saveAs(int outType, String fileName);` - This saves the current drawing in a file with the specified output type (`0=.draw, 1=.ppm,` ..., the same as for the Drawing program) and fileName (use "" for System.out). When completed, this command flushes and closes the output file, prints any error message ("`Error: ...`"), and prints "`Save as done ...`". There can be more than one `drawings.saveAs` command for each .draw file that is read in.
     - `drawings.exit();` - This terminates the program.
     - `drawings.readDrawing();` - This goes back to step one and reads another drawing file.

  Copyright - Remember that CoHort Software programs are licensed for one user at a time. If you need to license our software for distribution or for additional installations (for example, for use on a web server), please contact CoHort Software.

  Menu Tree / Index

  ## References

  Allen, S.G. 1981. Agronomic and Genetic Characterization of Winter Wheat Plant Height Isolines. Montana State University. Bozeman, Montana.

  Cleveland, William S. 1994. The Elements of Graphing Data, 2nd Ed. Chapman & Hall.

  Kosslyn, Stephen M. 1994. Elements of Graph Design. W.H. Freeman. New York, New York.

  Miller, A.R. 1981. BASIC Programs for Scientists and Engineers. Sybex. Berkeley, California.

  Snyder, J.P. 1983. Map Projections Used by the U.S. Geological Survey, 2nd Ed.. Geological Survey Bulletin 1532. Available from the U.S. Government Printing Office or the USGS.

  Sokal, R.R. and F.J. Rohlf. 1969. Biometry. 1st Edition. W.H. Freeman and Co. San Francisco, California.

  Sokal, R.R. and F.J. Rohlf. 1981. Biometry. 2nd Edition. W.H. Freeman and Co. San Francisco, California.

  Sokal, R.R. and F.J. Rohlf. 1995. Biometry. 3rd Edition. W.H. Freeman and Co. San Francisco, California.

  Tufte, E.R. 1983. The Visual Display of Quantitative Information. Graphics Press, Box 430, Cheshire, CT 06410.

  Tufte, E.R. 1990. Envisioning Information. Graphics Press, Box 430, Cheshire, CT 06410.

  Tufte, E.R. Visual Explanations. Graphics Press, Box 430, Cheshire, CT 06410.

  __. 1988. Webster's New Geographical Dictionary. Merriam-Webster, Inc. Publishers, Springfield, MA.

  Menu Tree | Index

  ## Index

  Remember, if you can't find something in the index, you can use Ctrl F in your browser to search through the text of the entire manual.

  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

  - &, Special Character
  - < > Button
  - <, Special Character
  - + Button
  - + Cursor
  - +, Near Cursor
  - - Button
  - . Button
  - .cgm Files, Creating
  - .cgm Files, Importing
  - .dra Files, Importing
  - .draw File Format
  - .dxf Files, Importing
  - .eps Files, Creating
  - .eps Files, Importing
  - .gif Files, Creating
  - .gif Files, Importing
  - .gra Files, Importing
  - .grg Files, Importing
  - .jpg Files, Creating
  - .jpg Files, Importing
  - .pcx Files, Creating
  - .pcx Files, Importing
  - .pdf Files, Creating
  - .png Files, Creating
  - .png Files, Importing
  - .ppm Files, Creating
  - .ppm Files, Importing
  - .svg Files, Creating
  - .wmf Files, Creating
  - .wmf Files, Importing
  - .wpg Files, Creating
  - 1-9, File
  - 2 Y Axes
  - 2 Y Axes, on DOS CoPlot Graphs
  - 3D Attitude Angle
  - 3D Graphs
  - 3D Graphs, Graph : Dataset : Representations
  - 3D Spin Angle
  - 3D Surface, Volume

  ## A

  - A Button
  - A4 Paper
  - About, Help
  - Academic Price
  - Accented Characters
  - Acknowledgments
  - Acrobat .pdf Files, Creating
  - Add File, Edit : Any Type
  - Adobe Illustrator .eps Files, Importing
  - Aliases, Path
  - Aligning Objects
  - AmiPro, Exporting To
  - Animated GIF (.gif)
  - Animation, 3D Spin Angle
  - Animation, Dataset Y
  - Animation, Dataset Z
  - Animation, Drawing : Groups
  - Animation, Graph : Axis : Center
  - Anti-aliasing
  - Any Type, Edit
  - Append Another Graphics File
  - Arc, How to Draw
  - Arcdimension, Embedded Text Tag
  - Area, Data, Graph : Get
  - Arrow Keys
  - ASCII Character Encoding
  - Attitude Angle
  - Attribute and Object Procedures, Drawing File
  - Author, Drawing : Other
  - AutoCad .dxf Files, Importing
  - Automatic Redraw, Screen
  - Axes, 2 Y
  - Axes, 2 Y, on DOS CoPlot Graphs
  - Axes, Broken
  - Axis : Labels, Edit
  - Axis : Lines, Edit : Graph
  - Axis : Overview, Edit : Graph
  - Axis : Titles, Edit : Graph
  - Axis Lines, Edit : Graph : Axis
  - Axis Types
  - Axis, Right Y

  ## B

  - Background Color, Drawing
  - Bad News, Error Messages
  - Bar Graph, Create
  - Bar Graphs
  - Bar Over a Character, Embedded Text Tag
  - Bar Width (%)
  - BarGraph/100%, Graph : Dataset : Representation
  - BarGraph/Grouped, Graph : Dataset : Representation
  - BarGraph/Stacked, Graph : Dataset : Representation
  - Bars/2D, Graph : Dataset : Representation
  - Bars/3D Pyramids, Graph : Dataset : Representation
  - Bars/3D Simple, Graph : Dataset : Representation
  - Bars/3D, Graph : Dataset : Representation
  - BASIC, Creating .draw Files
  - Bezier Paths
  - Big Text, Create
  - Big Text, Edit
  - Big, Embedded Text Tag
  - Block Diagrams
  - Block Diagrams, Help
  - Bold, Embedded Text Tag
  - Books About Graph Style
  - Bounds, Drawing : Coordinates
  - Box & Whisker, Graph : Dataset : Representation
  - Boxed Move, Edit : Points
  - BR, Line Break, Embedded Text Tag
  - Break Path, Edit : Any Type
  - Broken Axes
  - Built-in Functions, List of
  - Buttons Stopped Working
  - Buttons, Text-Only

  ## C

  - C/C++, Creating .draw Files
  - Calculator
  - Cartesian Coordinate Axis
  - Cause and Effect Diagrams
  - Center Animation, Graph : Axis
  - Center The Drawing, Drawing : Coordinates
  - Center X, Y, Make Map
  - Center, Embedded Text Tag
  - CGM .cgm Files, Importing
  - CGM Files, Creating
  - cgm Files, Importing
  - Change Color, Edit
  - Change Image Type
  - Character Entities
  - Character Height (Size), Embedded Text Tag
  - Chartjunk
  - Chemical Structures
  - Circle vs. Ellipse
  - Citations in Papers
  - CITY.MPx
  - Class not found
  - Cleveland, William S.
  - Clip Art
  - Clipart
  - Clipart, Vector
  - Clipping Bounds
  - CoCalc
  - CoDraw for DOS's .dra Files, Importing
  - CoDraw, CoPlot and CoStat for DOS, Switching From
  - cohort Directory
  - Color Matching
  - Color Perception
  - Color, Custom
  - Color, Embedded Text Tag
  - Colored Line Printing Problem
  - Colors
  - Colors For Grid Representations, Dataset
  - Colors For Grid Representations, Function
  - Colors, When Printed
  - com.cohort Package
  - Combine
  - Combine Two Drawings
  - Combine With Another Graphics File
  - Command Line Options
  - Commands Not On The Menus
  - Comment, Embedded Text Tag
  - Common Names, Drawing : Coordinates
  - Common Sizes, Drawing : Coordinates
  - Concatenate Another Graphics File
  - Conic Graphs
  - Conic Parallel 1, 2, Make Map
  - Contacting CoHort Software
  - Contour Graphs
  - Coordinate Systems and Units, Drawing File
  - Coordinates, Drawing
  - Coordinates, Drawing, Graph : Get
  - Coordinates, Graph, Graph : Get
  - CoPlot
  - CoPlot for DOS's .gra Files, Importing
  - CoPlot for DOS's Group .grg Files, Importing
  - CoPlot Pro
  - CoPlot, Installing and Running
  - Copy Text, In Textfields
  - Copy, Edit : Any Type
  - Copy, Edit : Objects
  - Copyrights
  - CoStat
  - CoText
  - CoText, Show
  - COUNTYxx.MP1
  - Create
  - Create : Bar Graph
  - Create : Big Text
  - Create : Dimension
  - Create : Ellipse
  - Create : Graph
  - Create : Graph Array
  - Create : Image
  - Create : Path
  - Create : Pie Chart
  - Create : Rectangle
  - Create : Table
  - Create : Text
  - cumNorm Function
  - Cursor '+'
  - Cursor, +
  - Custom Color
  - Custom Legend
  - Custom Legend, HTML Tags
  - Cut Text, In Textfields

  ## D

  - Data Area, Graph : Get
  - Data For Grid Representations
  - Data Interpolate, Graph : Get
  - Data Point, Graph : Get
  - Data Types, Drawing File
  - Data, Digitizing from a Scanned Graph
  - Data, Digitizing From An Image File With A Graph
  - Data, Quick: Plot Your Data
  - Data, Scattered vs. Gridded
  - Datafile
  - Datafile Procedures, Drawing File
  - datafile.xxx Commands, in .draw Files
  - Datapoint Labels
  - Dataset : Regression, Graph
  - Dataset : Representations, Graph
  - Dataset Labels Font
  - Dataset Labels Font Style
  - Dataset, Graph
  - Date Axis
  - Date Stamp, Embedded Text Tag
  - Default, Directory
  - Defaults, Change Drawing Object
  - Defaults, Change Graph
  - Degrees Minutes Seconds Axis
  - Delete Point, Edit : Any Type
  - Delete, Edit : Any Type
  - Delete, Edit : Objects
  - Deprecated
  - Design Goals, Drawing File
  - Detail, Line, Make Map
  - Detailed Map Data Files
  - Diacritics
  - Dialog Boxes, Keyboard Shortcuts
  - Dialogs Inside Main Window, Screen
  - Different Operating Systems, Differences
  - Digitizing Data from a Scanned Graph
  - Digitizing Data From An Image File With A Graph
  - Digitizing Drawings
  - Dimension, Create
  - Dimension, Edit
  - Dimension, Embedded Text Tag
  - Directory, Default
  - Disclaimer
  - Disk-Related Problems
  - Distance,Angle Data
  - DOS CoDraw
  - DOS CoDraw's .dra Files, Importing
  - DOS CoDraw, .dra Files
  - DOS CoDraw, Circle and Pie Objects
  - DOS CoDraw, Colors
  - DOS CoDraw, Edit
  - DOS CoDraw, Embedded Text Commands
  - DOS CoDraw, Global : File
  - DOS CoDraw, Individual Edit
  - DOS CoDraw, Just Edit
  - DOS CoDraw, Line, Arrow, Fill Objects
  - DOS CoDraw, Macros
  - DOS CoDraw, Menus
  - DOS CoDraw, Update Screen
  - DOS CoDraw, Update Screen : Coordinates
  - DOS CoDraw, Variety Edit
  - DOS CoHort Programs, Switching From
  - DOS CoPlot
  - DOS CoPlot Group, .grg Files
  - DOS CoPlot's .gra Files, Importing
  - DOS CoPlot's Group .grg Files, Importing
  - DOS CoPlot, .gra Files
  - DOS CoPlot, Bar Graphs
  - DOS CoPlot, Colors
  - DOS CoPlot, Data Indicates
  - DOS CoPlot, Embedded Text Commands
  - DOS CoPlot, Equations
  - DOS CoPlot, Graph : File
  - DOS CoPlot, Graph : File : Group
  - DOS CoPlot, Graph : File : Save As Draw
  - DOS CoPlot, Histogram
  - DOS CoPlot, Macros
  - DOS CoPlot, Menus
  - DOS CoPlot, N-Channel, Matrix, Multivariate Bar Braphs
  - DOS CoPlot, Origin Graph
  - DOS CoPlot, Quick Switch
  - DOS CoPlot, Right Y Axis
  - DOS CoPlot, Top X Axis
  - DOS CoPlot, Update Screen
  - DOS CoPlot, Update Screen : Coordinates
  - DOS CoStat
  - DOS CoStat, .dt Files
  - DOS CoStat, Equations
  - DOS CoStat, Macros
  - DOS CoText
  - Double Log Base 10 Axis
  - Doughnut Shape, How to Draw
  - Down, Embedded Text Tag
  - dra Files, Importing
  - Draw bold markers, Drawing : Other
  - Draw caps on error bars, Drawing : Other
  - Draw Colors As, Drawing : Other
  - Draw error bars through markers, Drawing : Other
  - Draw Grid, Drawing
  - Draw Grid, Drawing : Coordinates
  - Draw lines through markers, Drawing : Other
  - Draw Polar Graph As Compass Graph
  - Draw Triangle Graph Reversed
  - Draw XY Graph As Origin Graph
  - Drawing
  - Drawing (.draw) File Format
  - Drawing : Background Color
  - Drawing : Coordinates
  - Drawing : Draw Grid
  - Drawing : Groups
  - Drawing : List Of Files
  - Drawing : Load Fonts
  - Drawing : Other
  - Drawing : Other : Author
  - Drawing : Zoom 1
  - Drawing : Zoom Box
  - Drawing Coordinates, Graph : Get
  - Drawing File, Attribute and Object Procedures
  - Drawing File, Coordinate Systems and Units
  - Drawing File, Data Types
  - Drawing File, Datafile Procedures
  - Drawing File, Design Goals
  - Drawing File, Error Checking
  - Drawing File, Format of Commands
  - Drawing File, Overview
  - Drawing File, Sample Drawing File
  - Drawing Name (Full), Embedded Text Tag
  - Drawing Name Stamp, Embedded Text Tag
  - Drawing Objects, Order In Which They Are Drawn
  - Drawing Order, Edit : Graph
  - Drawing Program
  - Drawing Settings in .draw Files
  - Drawing, Zoom In
  - Drawing, Zoom Out
  - Drawings Program
  - dxf Files, Importing

  ## E

  - Edit
  - Edit : Any Type
  - Edit : Any Type : Add File
  - Edit : Big Text
  - Edit : Change Color
  - Edit : Dimension
  - Edit : Ellipse
  - Edit : Exchange Black And White
  - Edit : Graph
  - Edit : Graph : Axis : Labels
  - Edit : Graph : Axis : Lines
  - Edit : Graph : Axis : Overview
  - Edit : Graph : Axis : Titles
  - Edit : Graph : Comment
  - Edit : Graph : Dataset
  - Edit : Graph : Dataset : Regression
  - Edit : Graph : Function
  - Edit : Graph : Graph : Drawing Order
  - Edit : Graph : Graph : Get
  - Edit : Graph : Graph : Make Map
  - Edit : Graph : Graph : Overview
  - Edit : Graph : Graph : Save As Drawing Objects
  - Edit : Graph : Graph : Title
  - Edit : Graph : Legend
  - Edit : Graph : Map
  - Edit : Graph Array
  - Edit : Image
  - Edit : Objects
  - Edit : Objects : Copy
  - Edit : Objects : Delete
  - Edit : Objects : Hide
  - Edit : Objects : Move
  - Edit : Objects : Show
  - Edit : Path
  - Edit : Pick One
  - Edit : Points Boxed Move
  - Edit : Points Move
  - Edit : Text
  - Electrical Schematics
  - Electrical Symbols
  - Ellipse vs. Circle
  - Ellipse, Create
  - Ellipse, Edit
  - Ellipsoid, Earth
  - EMail
  - Embedded Text Tags
  - Emphisized Text, Embedded Text Tag
  - Enable Undo All, Drawing : Other
  - Entering, Numeric Values
  - Entities, Character
  - EPS Files, Creating
  - eps Files, Importing
  - Equations, Parametric
  - Equations, Using
  - Error Bars, How Drawn
  - Error Checking, Drawing File
  - Error Messages
  - error.log File
  - Error: Class not found
  - Error: File Not Found
  - Escape
  - Evaluate, Function, Graph : Get
  - Exchange Black And White, Edit
  - Exit, File

  ## F

  - f() Button
  - False 3D
  - Fat Bits
  - File
  - File : 1-9
  - File : Exit
  - File : Insert
  - File : New
  - File : New Window
  - File : Open
  - File : Page Setup
  - File : Print
  - File : Save
  - File : Save As
  - File Format, Drawing (.draw)
  - File Name Stamp, Embedded Text Tag
  - File Not Found
  - File, Add Another Graphics File
  - File, Find a Specific Drawing
  - File, Insert Into Current Drawing
  - File-Related Problems
  - Files, Importing Various Types
  - Files, List of
  - Fill above, Graph : Dataset : Representation
  - Fill above, Graph : Function : Representation
  - Fill below, Graph : Dataset : Representation
  - Fill below, Graph : Function : Representation
  - Fill between 2 Y, Graph : Dataset : Representation
  - Fill inward, Graph : Dataset : Representation
  - Fill outward, Graph : Dataset : Representation
  - Fill zero, Graph : Dataset : Representation
  - Fill zero, Graph : Function : Representation
  - Fill/staircase/HorVer, Graph : Dataset : Representation
  - Fill/staircase/VerHor, Graph : Dataset : Representation
  - Find Specific Drawing File
  - Fix MenuBar, Screen
  - Flip Character, Embedded Text Tag
  - Flow Charts
  - Font Size, in Drawing Coordinates (not Points)
  - Font Size, Screen
  - Font, Embedded Text Tag
  - Fonts Not Found
  - Fonts, Load
  - Format of Commands, Drawing File
  - Format, Drawing (.draw) File
  - Fraction, Embedded Text Tag
  - Frames Per Second, 3D Spin Angle
  - Frames Per Second, Dataset Z
  - Frames Per Second, Drawing : Groups
  - Frames Per Second, Graph : Axis : Center
  - Freehand Drawing
  - Freeze
  - Frequently Asked Questions
  - Frequently Asked Questions Related To Graphs
  - Function Equals Y, Graph : Get
  - Function Evaluate, Graph : Get
  - Function Integrate, Graph : Get
  - Function Maxima, Graph : Get
  - Function Minima, Graph : Get
  - Function Root, Graph : Get
  - Function, Edit : Graph
  - Function: Representations, Graph
  - Functions Close, Graph : Get
  - Functions, Built-in
  - Functions, Plot Over a Limited X Range

  ## G

  - Garbled Menu Bar Words
  - Genetic Maps
  - Get axis labels from a datafile
  - Get, Edit : Graph : Graph
  - Getting Started
  - Getting Started, Help
  - GhostScript, Exporting To
  - GhostView, Exporting To
  - GIF Files, Creating
  - GIF Files, Importing
  - GIF, Animated
  - Goal/QPC Research
  - Government price
  - gra Files, Importing
  - Graph : Axis : Axis Line Commands, in .draw Files
  - Graph : Axis : Axis Line, Edit
  - Graph : Axis : Grid 1 Commands, in .draw Files
  - Graph : Axis : Grid 2 Commands, in .draw Files
  - Graph : Axis : Grid, Edit
  - Graph : Axis : Labels Commands, in .draw Files
  - Graph : Axis : Labels, Edit
  - Graph : Axis : Lines, Edit
  - Graph : Axis : Overview Commands, in .draw Files
  - Graph : Axis : Overview, Edit
  - Graph : Axis : Ticks 1 Commands, in .draw Files
  - Graph : Axis : Ticks 2 Commands, in .draw Files
  - Graph : Axis : Ticks, Edit
  - Graph : Axis : Title 1 Commands, in .draw Files
  - Graph : Axis : Title 2 Commands, in .draw Files
  - Graph : Axis : Titles, Edit
  - Graph : Axis : Zero Line Commands, in .draw Files
  - Graph : Axis : Zero Line, Edit
  - Graph : Comment Commands, in .draw Files
  - Graph : Comment, Edit
  - Graph : Dataset : Regression
  - Graph : Dataset : Representations
  - Graph : Dataset Commands, in .draw Files
  - Graph : Dataset, Edit
  - Graph : Function : Representations
  - Graph : Function Commands, in .draw Files
  - Graph : Function, Edit
  - Graph : Get, Edit : Graph
  - Graph : Legend Commands, in .draw Files
  - Graph : Legend, Edit
  - Graph : Map Commands, in .draw Files
  - Graph : Map, Edit
  - Graph : Overview Commands, in .draw Files
  - Graph : Overview, Edit
  - Graph : Title Commands, in .draw Files
  - Graph : Title, Edit : Graph
  - Graph Array, Create
  - Graph Array, Edit
  - Graph Coordinates
  - Graph Coordinates, Graph : Get
  - Graph Size and Shape
  - Graph, Background Color
  - Graph, Change Drawing Order
  - Graph, Create
  - Graph, Draw Color Arrays Dark To Light
  - Graph, Drawing Order
  - Graph, Edit
  - Graph, Height vs. Width
  - Graph, Make Map
  - Graph, Quick, Plot Your Data
  - Graph, Save As Drawing Objects
  - Graph, Type
  - Graphs, Sideways or Upside-down
  - Greek Characters
  - Grep
  - grg Files, Importing
  - Grid Dataset Representations, Data For
  - Grid Representations, Colors
  - Grid Size, Drawing : Coordinates
  - Grid, Edit : Graph : Axis
  - Grid/2D/bold nth line, Graph : Dataset : Representation
  - Grid/2D/bold nth line, Graph : Function : Representation
  - Grid/2D/bold nth spline, Graph : Dataset : Representation
  - Grid/2D/bold nth spline, Graph : Function : Representation
  - Grid/2D/colored blocks/1 point, Graph : Dataset : Representation
  - Grid/2D/colored blocks/1 point, Graph : Function : Representation
  - Grid/2D/colored blocks/4 points, Graph : Dataset : Representation
  - Grid/2D/colored blocks/4 points, Graph : Function : Representation
  - Grid/2D/colored surface, Graph : Dataset : Representation
  - Grid/2D/colored surface, Graph : Function : Representation
  - Grid/2D/line color, Graph : Dataset : Representation
  - Grid/2D/line color, Graph : Function : Representation
  - Grid/2D/line dashsize, Graph : Dataset : Representation
  - Grid/2D/line dashsize, Graph : Function : Representation
  - Grid/2D/line width, Graph : Dataset : Representation
  - Grid/2D/line width, Graph : Function : Representation
  - Grid/3D/colored blocks/1 point, Graph : Dataset : Representation
  - Grid/3D/colored blocks/1 point, Graph : Function : Representation
  - Grid/3D/colored blocks/4 points, Graph : Dataset : Representation
  - Grid/3D/colored blocks/4 points, Graph : Function : Representation
  - Grid/3D/colored surface, Graph : Dataset : Representation
  - Grid/3D/colored surface, Graph : Function : Representation
  - Grid/3D/histogram, Graph : Dataset : Representation
  - Grid/3D/one color with sides, Graph : Dataset : Representation
  - Grid/3D/one color with sides, Graph : Function : Representation
  - Grid/3D/one color, Graph : Dataset : Representation
  - Grid/3D/one color, Graph : Function : Representation
  - Grid/3D/pyramids, Graph : Dataset : Representation
  - Grid/3D/transparent, Graph : Dataset : Representation
  - Grid/3D/transparent, Graph : Function : Representation
  - Gridded Data
  - Group For New Objects
  - Groups, Drawing

  ## H

  - Height (Size) of Characters, Embedded Text Tag
  - Height vs. Width of a graph
  - Help
  - Help : About
  - Help : Lesson 1,2,3,4,5,6
  - Help : Mac OS X
  - Help : Online
  - Help : Quick: Plot your data on a graph
  - Help : Quick: Plot your data on a map
  - Help : Register
  - Help : Switching from DOS CoPlot to Java CoPlot
  - Help : View Error Log
  - Hide, Edit : Any Type
  - Hide, Edit : Objects
  - High Low Open Close, Graph : Dataset : Representation
  - Hints for Drawing Charts
  - Histogram, Graph : Dataset : Representation
  - Horizontal Rule, Embedded Text Tag
  - Hoshin Planning
  - HPGL/2 Files, Creating
  - HR, Horizontal Rule, Embedded Text Tag
  - HTML Tags for Custom Legend
  - HTML-like Embedded Text Tags
  - Hydrologists

  ## I

  - Icons, Create : Image
  - Icons, Edit : Image
  - Image Files, Creating
  - Image, Change Type
  - Image, Create
  - Image, Edit
  - Importing Adobe Illustrator .eps Files
  - Importing AutoCad .dxf Files
  - Importing CGM .cgm Files
  - Importing DOS CoDraw's .dra Files
  - Importing DOS CoPlot's .gra Files
  - Importing DOS CoPlot's Group .grg Files
  - Importing Windows MetaFile .wmf Files
  - Index Out of Range (Font2)
  - Insert a Character Entity
  - Insert A Tag
  - Insert Point, Edit : Any Type
  - Insert, File
  - Installing CoPlot
  - Integral, Embedded Text Tag
  - Integrate, Function, Graph : Get
  - Interior Design Symbols
  - Internet
  - Interpolate, Data, Graph : Get
  - Invert (Flip) Character, Embedded Text Tag
  - ISO 8859-1 Character Encoding
  - Isotropic, Make Map
  - Italics, Embedded Text Tag

  ## J

  - Java Programs
  - Java, Creating .draw Files
  - Java, Programming With
  - Jitter
  - Join Paths, Edit : Any Type
  - JPG Files, Creating
  - JPG Files, Importing
  - Julian Date Axis

  ## K

  - Keep If
  - Kerning (RT), Embedded Text Tag
  - Key to CoPlot
  - Keyboard (font style), Embedded Text Tag
  - Keyboard Shortcuts
  - Known Bugs
  - Kosslyn, Stephen M.

  ## L

  - Labels for Dataset Representations
  - Labels, Overlapping
  - Labels, Point
  - LAKE.MPx
  - LAKE__xx.MP1
  - Landscape Design Symbols
  - Language, Screen
  - Latin 1 Character Set
  - Latitude
  - Left (Movement) (RT), Embedded Text Tag
  - Left Justify, Embedded Text Tag
  - Left Margin, Embedded Text Tag
  - Legend, Custom
  - Legend, Edit : Graph
  - Legend, Unusual
  - LegendXxx, Embedded Text Tag
  - Lesson 1,2,3,4,5,6
  - License
  - Line Break, Embedded Text Tag
  - Line Detail, Make Map
  - Line Length, Embedded Text Tag
  - Line Width, Minimum
  - Line, Graph : Dataset : Representation
  - Line, Graph : Function : Representation
  - Line/staircase/HorVer, Graph : Dataset : Representation
  - Line/staircase/VerHor, Graph : Dataset : Representation
  - Linear Scale Axis
  - List (Ordered), Embedded Text Tag
  - List (Unordered), Embedded Text Tag
  - List Item, LI, Embedded Text Tag
  - List Of Files, Drawing
  - Load Fonts, Drawing
  - Log Base 10 Axis
  - Longitude
  - Lotus AmiPro and WordPro, Exporting To

  ## M

  - Mac OS X, Help
  - Macro
  - Macro, Language
  - Macros, Using
  - Make Map, Edit : Graph
  - Make Visible, Edit : Any Type
  - Make XY Graph Isotropic, Make Map
  - Map Axis
  - Map Data Files
  - Map Data Files, Combining
  - Map Data Files, Edit/Make Your Own
  - Map Graphs
  - Map Symbols
  - Map, Edit : Graph
  - Map, Edit : Graph : Graph : Make
  - Map, Quick, Plot Your Data
  - MapDefault, Color
  - Margin (Left), Embedded Text Tag
  - Margins, Drawing : Coordinates
  - Markers+-error, Graph : Dataset : Representation
  - Markers, Graph : Dataset : Representation
  - Markers, In Text
  - Markers/labels, Graph : Dataset : Representation
  - Markers/nth point, Graph : Dataset : Representation
  - Markers/variable, Graph : Dataset : Representation
  - Markers/variable/color, Graph : Dataset : Representation
  - Mathematical Symbols
  - Maxima, Function, Graph : Get
  - MD, Color
  - Memory, Java Allocation
  - Menu Bar Words, Garbled
  - Menu Tree
  - Mercator Graphs
  - Microsoft Word, PowerPoint, Exporting To
  - Minima, Function, Graph : Get
  - Minimum Line Width, Drawing : Other
  - Mirror image
  - Missing values make gaps, Drawing : Other
  - Move All, Edit : Any Type
  - Move One Point, Edit : Any Type
  - Move One, Edit : Any Type
  - Move, Edit : Any Type
  - Move, Edit : Boxed Points
  - Move, Edit : Objects
  - Move, Edit : Points
  - Movies, Animated GIFs

  ## N

  - NATION.MPx
  - NATIONxx.MP1
  - Natural Log Axis
  - ND, Color
  - New Window, File
  - New, File
  - norm Function
  - Normal Probability Axis
  - Not Drawn Objects
  - NotDrawn, Color
  - Numeric Values, Entering

  ## O

  - Objects : Hide
  - Objects : Show
  - Objects, Copy
  - Objects, Delete
  - Objects, Edit
  - Objects, Move
  - Objects, Not Drawn
  - OCEAN.MPx
  - OCEAN_xx.MP1
  - Online Documentation
  - Online, Help
  - Open, File
  - openDatafile, in .draw Files
  - Opening DOS CoDraw's .dra Files
  - Opening DOS CoPlot's .gra Files
  - Opening DOS CoPlot's Group .grg Files
  - Operating Systems, Differences
  - Ordered List, Embedded Text Tag
  - Organization Charts
  - Orthographic Graphs
  - OS X, Help : Mac
  - Other, Drawing
  - Over, Embedded Text Tag
  - Overline, Embedded Text Tag
  - Overstrike, Embedded Text Tag
  - Overview, Drawing File
  - Overview, Edit : Graph

  ## P

  - Package, Java
  - Page Setup, File
  - Page Width, Height, Drawing : Coordinates
  - Paper, A4
  - Paragraph, Embedded Text Tag
  - Parallel 1 2, Conic
  - Parametric Equations
  - PARK__xx.MP1
  - Pascal, Creating .draw Files
  - Paste Text, In Textfields
  - Path Aliases, Screen
  - Path, Create
  - Path, Edit
  - PCX Files, Creating
  - PCX Files, Importing
  - PDF Files, Creating
  - Perl, Creating .draw Files
  - Perl, Programming With
  - Perspective
  - Pi Axis
  - Pick All, Edit : Any Type
  - Pick Box, Edit : Any Type
  - Pick Color, Edit : Any Type
  - Pick Groups, Edit : Any Type
  - Pick List, Edit : Any Type
  - Pick One, Edit
  - Pick One, Edit : Any Type
  - Pick, Make Map
  - Picking Objects
  - Pie Chart, Create
  - Pie Charts
  - Pie slice, How to Draw
  - Pie, How to Draw
  - Pipes, Use With
  - Plasmid Map
  - Plasmid Maps
  - PNG Files, Creating
  - PNG Files, Importing
  - Points Boxed Move, Edit
  - Points Move, Edit
  - Points, Font Sizes
  - Polar Graphs
  - Polygon, How to Draw
  - Posters
  - PostScript .eps Files, Creating
  - PowerPoint, Exporting To
  - PPM Files, Creating
  - PPM Files, Importing
  - PRE, Embedded Text Tag
  - Preference File
  - Preferences, Drawing
  - Preferences, Screen/CoPlot
  - Price
  - Print Preview, Drawing : Coordinates
  - Print, File
  - Printer, Light Gray Objects
  - Probability Axis
  - Probit Axis
  - Problem-Solving Suggestions
  - Projections, Map
  - Punctuation Symbols
  - Python, Creating .draw Files
  - Python, Programming With

  ## Q

  - Quality Control Charts
  - Quality of Save As Files
  - Quick: Plot your data on a graph
  - Quick: Plot your data on a map

  ## R

  - Range X, Y, Make Map
  - Rectangle, Create
  - Redraw, Screen
  - References
  - Register, Help
  - Regression, Graph : Dataset
  - Representations of Data
  - Rexx, Creating .draw Files
  - Rexx, Programming With
  - Right Justification, Embedded Text Tag
  - Right Y Axis
  - Right Y Axis, on DOS CoPlot Graphs
  - Right, RT, Embedded Text Tag
  - RIVER.MPx
  - RIVER_xx.MP1
  - ROAD__xx.MP1
  - Root, Function, Graph : Get
  - Running CoPlot

  ## S

  - Save As Drawing Objects, Graph
  - Save As, File
  - Save In File, Edit : Any Type
  - Save Text As Graphics
  - Save Text As Text
  - Save, File
  - Scale of Drawing, Embedded Text Tag
  - Scale, Drawing : Coordinates
  - Scattered Data
  - Screen
  - Screen : Automatic Redraw
  - Screen : Dialogs Inside Main Window
  - Screen : Fix MenuBar
  - Screen : Font Size
  - Screen : Language
  - Screen : Path Aliases
  - Screen : Redraw
  - Screen : Show CoText
  - Screen : Slash Date Format
  - Screen : Text-Only Buttons
  - Screen : Tool Tips
  - Screen : Use System File Dialog
  - Scroll Bars
  - Scrolling
  - Search For, Make Map
  - Seconds Axis
  - Select Text, In Textfields
  - Shape of graphs
  - Shell Scripts, Use With
  - Shortcuts
  - Show CoText, Screen
  - Show, Edit : Any Type
  - Show, Edit : Objects
  - Sideways Graphs
  - Size and Shape, Graph
  - Size of Drawing
  - Size of Font, Embedded Text Tag
  - Size, Graph
  - Slash Date Format, Screen
  - Slides
  - Slides, From a Laser Printer
  - Slides, From screen
  - Small, Embedded Text Tag
  - Smoothing, Drawing : Other
  - Sokal and Rohlf
  - Space (Extra) (RT), Embedded Text Tag
  - Special Characters
  - Speed
  - Speed, Graph : Dataset : Representations
  - Spin Angle
  - Spline, Graph : Dataset : Representation
  - Square Root Axis
  - Square Root, Embedded Text Tag
  - Stand-alone
  - Standard Deviation Axis
  - STATE.MP1
  - STATE_xx.MP1
  - Stocks: High Low Open Close, Graph : Dataset : Representation
  - Streaming Mode
  - Strike Through, Embedded Text Tag
  - Strong, Embedded Text Tag
  - Style
  - Sub and SuperScript, Embedded Text Tag
  - Subscript, Embedded Text Tag
  - Suggestions
  - Suggestions, Problem-Solving
  - Sum (notation), Embedded Text Tag
  - Superscript, Embedded Text Tag
  - Support
  - SVG Files, Creating
  - Switching From DOS CoStat, CoPlot, and CoDraw
  - System Requirements

  ## T

  - Table Tag
  - Table, Create
  - Tables, Instead of Graphs
  - Tags, Embedded Text
  - Tcl, Creating .draw Files
  - Tcl, Programming With
  - Technical Support
  - TeleType Font, Embedded Text Tag
  - TeX, Exporting To
  - Text Attributes
  - Text Height, in Drawing Coordinates (not Points)
  - Text, Create
  - Text, Edit
  - Text, Not Drawn
  - Text, Special Characters
  - Text-Only Buttons, Screen
  - Ticks, Edit : Graph : Axis
  - Time, Off By One Hour
  - Time Axis
  - Time Stamp, Embedded Text Tag
  - Tool Tips, Screen
  - Topics
  - Torus, How to Draw
  - Total Quality Management
  - Tracing
  - Triangle Graphs
  - Try to use system fonts, Drawing : Other
  - Tufte, Edward R.
  - Two Y Axes
  - Two Y Axes, on DOS CoPlot Graphs
  - Type of Graph
  - Types of Axes
  - Typing an Attribute, Press Enter

  ## U

  - UML Diagrams
  - Underline, Embedded Text Tag
  - UnderOver, Embedded Text Tag
  - Undo All, Enable
  - Units Name, Drawing : Coordinates
  - Unknown <tag>, Error Message
  - Unordered List, Embedded Text Tag
  - Unpick All, Edit : Any Type
  - Unpick One, Edit : Any Type
  - Up, Embedded Text Tag
  - Upside-down Graphs
  - Use System File Dialog, Screen

  ## V

  - Vector Files, Creating
  - Vector, Graph : Dataset : Representation
  - View Error Log, Help
  - Visible Groups, Edit : Any Type
  - Volume of a 3D Surface

  ## W

  - Weather Symbols
  - Web Site
  - Wind barb, Graph : Dataset : Representation
  - Windows MetaFile .wmf Files, Importing
  - Windows MetaFiles, Creating
  - WMF Files, Creating
  - wmf Files, Importing
  - Word, Exporting To
  - WordPerfect .wpg Files, Creating
  - WordPro, Exporting To
  - World Map Data Files
  - World Wide Web, Creating Files For
  - WPG Files, Creating
  - WWW, Creating Files For
  - www.cohort.com

  ## X

  - X Min,Max Bounds, Drawing : Coordinates
  - XY Graphs

  ## Y

  - Y Animation, Dataset
  - Y Axes, 2
  - Y Axes, 2, on DOS CoPlot Graphs
  - Y Min,Max Bounds, Drawing : Coordinates

  ## Z

  - Z Animation, Dataset
  - Z Division 1 2, Dataset
  - Z Division 1 2, Function
  - Zero Line, Edit : Graph : Axis
  - Zoom +
  - Zoom -
  - Zoom 1, Drawing
  - Zoom Box, Drawing
  - Zoom Factor
  - Zoom In, Drawing
  - Zoom Out, Drawing

  Menu Tree / Index

  Copyright © 1998-2005 CoHort Software.