DRAWGRAM

DRAWGRAM interactively plots a cladogram- or phenogram-like rooted tree diagram, with many options including orientation of tree and branches, style of tree, label sizes and angles, tree depth, margin sizes, stem lengths, and placement of nodes in the tree. Particularly if you can use your computer or terminal screen to preview the plot, you can very effectively adjust the details of the plotting to get just the kind of plot you want.

As with DRAWTREE, to run DRAWGRAM you need a compiled copy of the program, a font file, and a tree file. On running the program, you will be asked to choose the plotter type for the final output. Then you will be asked to choose the graphics screen type for the previewing. The various options have been discussed in the document file common to both these programs.

Once these choices have been made you will see the central menu of the program, which looks like this:

Here are the settings:

 (1)               Tree grows:  Vertically
 (2)            Style of tree:  Cladogram
 (3)       Use branch lengths:  Yes
 (4)          Angle of labels:  45.0
 (5)       Horizontal margins:  1.73 cm
 (5)         Vertical margins:  2.24 cm
 (6)   Scale of branch length:  Automatically rescaled
 (7)    Depth/Breadth of tree:  0.53
 (8)   Stem-length/tree-depth:  0.05
 (9) Character ht / tip space:  0.3333
(10)          Ancestral nodes:  Intermediate
(11)                     Font:  Hershey

 Do you want to accept these? (Yes or No)
 Type Y or N or the number (1-10) of the one to change:
These are the settings that control the appearance of the tree, which has already been read in. You can either accept these as is, in which case you would answer Y to the question and press the Return or Enter key, or you can answer N if you want to change one, or simply type the digit corresponding to the one you want to change (if you answer N it will just immediately ask you for that number anyway).

For a first run, particularly if previewing is available, you might accept these default values and see what the result looks like. The program will then tell you it is about to preview the tree and ask you to press Return or Enter when you are ready to see this (you will probably have to press it twice). When you are through looking at the previewed tree on your screen, you press Return or Enter again. The program will then ask you if the tree is now ready to be plotted. If you answer Y (for Yes) the program will usually write a plot file (with some plot options it will draw the tree on the screen). Then it will terminate.

But if you answer N (for No) it will go back to the above menu, allow you to change more options, and go through the whole process again. The easiest way to learn the meaning of the options is to try them, particularly if previewing is available. Below I will describe them one by one; you may prefer to skip reading this unless you are puzzled about one of them.

THE OPTIONS

The first option (1) is whether the tree grows horizontally or vertically. The horizontal growth will be from left to right. This option is self explanatory. The other options are designed so that when we switch this direction of growth the tree still looks the same, except for orientation and overall size. This option is toggled, that is, when it is chosen the orientation changes, going back and forth between Vertical and Horizontal.

The second (2) option shows the style of the tree. There are five styles possible: Cladogram, Phenogram, Curvogram, Eurogram and Swoopogram, and these are chosen by the letters C, P, V, E and S. These take a little explaining, and this is made more difficult by the fact that we cannot show examples in this documentation file!

In spite of the words "cladogram" and "phenogram", there is no implication of the extent to which you consider these diagrams as being genealogies or phenetic clustering diagrams. The names refer to pictorial style, not your own intended final use for the diagram. The five styles can be described as follows (assuming a vertically growing tree):

Cladogram -- nodes are connected to other nodes and to tips by straight lines going directly from one to the other. This gives a V-shaped appearance. The default settings if there are no branch lengths are designed to yield a V- shaped tree with a 90-degree angle at the base.

Phenogram -- nodes are connected to other nodes and to other tips by a horizontal and then a vertical line. This gives a particularly precise idea of horizontal levels.

Curvogram -- nodes are connected to other nodes and to tips by a curve which is one fourth of an ellipse, starting out horizontally and then curving upwards to become vertical. This pattern was suggested by Joan Rudd.

Eurogram -- so-called because it is a version of cladogram diagram popular in Europe. Nodes are connected to other nodes and to tips by a diagonal line that goes outwards and goes at most one-third of the way up to the next node, then turns sharply straight upwards and is vertical. Unfortunately it is nearly impossible to guarantee, when branch lengths are used, that the angles of divergence of lines are the same.

Swoopogram -- this option connects two nodes or a node and a tip using two curves that are actually each one-quarter of an ellipse. The first part starts out vertical and then bends over to become horizontal. The second part, which is at least two-thirds of the total, starts out horizontal and then bends up to become vertical. The effect is that two lineages split apart gradually, then more rapidly, then both turn upwards.

You should experiment with these and decide which you want -- it depends very much on the effect you want.

The third option (3) tells whether the tree has branch lengths that are being used in the diagram. If the tree that was read in had a full set of branch lengths, it will be assumed as a default that you want to use them in the diagram, but you can specify that they are not to be used. If the tree does not have a full set of branch lengths then this will be indicated, and if you try to use branch lengths the program will refuse to allow you to do so. Note that when you change (3) the node position option (10) may change as well.

The fourth option (4) is the angle of the labels. The angle is always calculated relative to a vertical tree; whether the tree is horizontal or vertical, if the labels are at an angle of 90 degrees they run parallel to direction of tree growth. The default value is 45 degrees. The option allows you to choose any angle from 0 to 90 degrees.

The fifth option (5) specifies the horizontal and vertical margins in centimeters. You can enter new margins (you must enter new values for both horizontal and vertical margins, though these need not be different from the old values. For the moment I do not allow you to specify left and right margins separately, or top and bottom margins separately. In a future release I hope to do so, so that you can plot several trees on one plot, or plot one tree across several pieces of paper.

The sixth option (6) specifies how the branch lengths will be translated into distances on the output device. Note that when branch lengths have not been provided, there are implicit branch lengths specified by the type of tree being drawn. This option will toggle back and forth between automatic adjustment of branch lengths so that the diagram will just fit into the margins, and you specifying how many centimeters there will be per unit branch length. This is included so that you can plot different trees to a common scale, showing which ones have longer or shorter branches than others. Note that if you choose too large a value for centimeters per unit branch length, the tree will be so big it will overrun the plotting area and may cause failure of the diagram to display properly. Too small a value will cause the tree to be a nearly invisible dot.

The seventh option (7) specifies the ratio between the depth and the breadth of the tree. It is initially set near 0.5, to approximate a V-shaped tree, but you may want to try a larger value to get a longer and narrower tree. Depth and breadth are described as if the tree grew vertically, so that depth is always measured from the root to the tips (not including the labels).

The eighth option (8) specifies the length of the stem of the tree as a fraction of the depth of the tree. You may want to either lengthen the stem or remove it entirely by giving a value of zero.

The ninth option (9) is the character height, measured as a fraction of horizontal tip spacing. If the labels are rotated to a shallow angle, the character height will be automatically adjusted in hopes of avoiding collision of labels at different tips. This option allows you to change the size of the labels yourself. On output devices where line thicknesses can be varied, the thickness of the tree lines will automatically be adjusted to be proportional to the character height, which is an additional reason you may want to change character height.

The tenth option (10) is one of the most interesting. It controls the horizontal positions of the nodes and can greatly affect the appearance of the tree. The vertical positions (these descriptions here are for a tree growing vertically) are not under your control except insofar as you specify the use or non-use of branch lengths. If you choose to change this option you will see the menu:

Should interior node positions:
 be Intermediate between their immediate descendants
    Weighted average of tip positions
    Centered among their ultimate descendants
    iNnermost of immediate descendants
 or so that tree is V-shaped
 (type I, W, C, N or V):

The five methods (Intermediate, Weighted, Centered, Innermost, and V- shaped) are different horizontal positionings of the interior nodes. It will be helpful to you to try these out and see which you like best. Intermediate places the node halfway between its immediate descendants (horizontally), Weighted places it closer to that descendant who is closer vertically as well, and Centered centers the node below the horizontal positions of the tips that are descended from that node. You may want to choose that option that prevents lines from crossing each other.

V-shaped is another option, one designed, if there are no branch lengths being used, to yield a v-shaped tree of regular appearance. With branch lengths it will not necessarily do so. "Innermost" is the most unusual option: it chooses a center for the tree, and always places interior nodes below the innermost of their immediate descendants. This leads to a tree that has vertical lines in the center, like a tree with a trunk.

If the tree you are plotting has a full set of lengths, then when it is read in the node position option is automatically set to "intermediate", which is the setting with the least likelihood of lines in the tree crossing. If it does not have lengths the option is set to "V-shaped". If you change option (3), which tells the program whether to try to use the branch lengths, then the node position option will automatically be reset to the appropriate one of these defaults. This may be confusing if you do not realise that it is happening.

The final option (11) is available only if you have selected the Laserwriter as your final output device. It allows you to select the name of the font that you will use for the species names. You can select the name of any font that is available in your printer, for example "Courier-Bold" or "Helvetica". The label will then be printed using that font rather than being drawn line-by-line as it is in the default Hershey font. In the preview of the tree, the Hershey font is always used (which means that it may look different from the final font). The size of the characters in the species names is scaled according to the label heights you have selected in the menu, whether Postscript fonts or the Hershey font is used.

I recommend that you try all of these options (particularly if you can preview the trees). It is of particular use to try combinations of the style of tree (option number 2) with the different methods of placing interior nodes (option number 10). You will find that wide variety of effects can be achieved.

I would appreciate suggestions for improvements in DRAWGRAM, but please be aware that the source code is already very large and I may not be able to implement all suggestions.