The NETDRAW Procedure

Time-Scaled Network Diagrams

By default, PROC NETDRAW uses the topological ordering of the activity network to determine the x coordinates of the nodes. As a project progresses, you may want to display the activities arranged according to their time of occurrence. Using the TIMESCALE option, you can draw the network with a time axis at the top and the nodes aligned according to their early start times, by default. You can use the ALIGN= option to specify any of the other start or finish times in the Network data set. In fact, PROC NETDRAW enables you to align the nodes according to any numeric variable in the data set.

If the TIMESCALE option is specified without any ALIGN= specification, the procedure chooses one of the following variables as the ALIGN= variable: E_START, L_START, S_START, or A_START, in that order. The first of these variables that is found is used to align the nodes. The minimum and maximum values of the ALIGN= variable are used to determine the time axis. The format of this variable is used to determine the default value for the MININTERVAL= option. The value of the MININTERVAL= option (or the default value) is used to determine the format of the time axis. You can override the format based on mininterval by specifying the desired format for the ALIGN= variable (using the FORMAT statement to indicate a standard SAS format or a special user-defined format) and the USEFORMAT option in the ACTNET statement. Table 9.5 lists the valid values of mininterval corresponding to the type of the ALIGN= variable and the default format corresponding to each value of mininterval. For each value in the first column, the first value of mininterval listed is the default value of the MININTERVAL= option corresponding to that type of the ALIGN= variable.

Several options are available in PROC NETDRAW to control the spacing of the nodes and the scaling of a time-scaled network diagram:

  • The MININTERVAL= option enables you to scale the network diagram: one tick mark is associated with one unit of mininterval. Thus, if mininterval is DAY, each column is used to represent one day and all activities that start on the same day are placed in the same column. By default, the procedure omits any column (tick mark) that does not contain any node.

  • The LINEAR option enables you to print a tick mark corresponding to every day (or the unit of mininterval). Note that, for a project that has few activities spread over a large period of time, the LINEAR option can lead to a network diagram that is very wide.

  • The MAXNULLCOLUMN= option specifies the maximum number of empty columns that is allowed between two consecutive nonempty columns. The LINEAR option is equivalent to specifying maxncol = infinity, while the default time-scaled network diagram is drawn with maxncol = 0.

  • The NLEVELSPERCOLUMN= option enables you to contract the network diagram by combining a few columns. For example, if mininterval is DAY and nlevelspercol is 7, each column contains activities that start within seven days of each other; note that the same effect can be achieved by setting mininterval to be WEEK.

Table 9.5: MININTERVAL Values and Axis Format

ALIGN Variable Type

MININTERVAL

Axis Label Format

number

 

numeric format

SAS time

HOUR

HHMM5.

 

MINUTE

HHMM5.

 

SECOND

TIME8.

SAS date

DAY

DATE7.

 

WEEKDAY

DATE7.

 

WEEK

DATE7.

 

MONTH

MONYY5.

 

QTR

MONYY5.

 

YEAR

MONYY5.

SAS datetime

DTDAY

DATE7.

 

WORKDAY

DATE7.

 

DTWRKDAY

DATE7.

 

DTSECOND

DATETIME16.

 

DTMINUTE

DATETIME16.

 

DTHOUR

DATETIME13.

 

DTWEEK

DATE7.

 

DTMONTH

MONYY5.

 

DTQTR

MONYY5.

 

DTYEAR

MONYY5.


The node-placement algorithm described in the section Layout of the Network is modified slightly for time-scaled network diagrams. The x coordinate of each node is determined by the value of the ALIGN= variable. The scaling options just described are used to determine the tick mark corresponding to the node. The y coordinate is determined as before. Once the node placement is completed, the arc routing algorithm is the same as described earlier.

Note: Since the node placement for time-scaled networks is determined by the ALIGN= variable, it is possible that some of the arcs between the nodes may have to be routed from right to left instead of from left to right; in other words, there may be some backward arcs. Note also that, if the ALIGN= variable is used to determine the x coordinates of the nodes, the procedure can also draw networks that contain cycles (see the second part of Example 9.12).

Several other options are available to control the appearance of time-scaled network diagrams: AUTOREF, BRKCHAR=, CAXIS=, CREF=, CREFBRK=, FRAME, LREF=, LREFBRK=, NOREPEATAXIS, NOTIMEAXIS, REFBREAK, REFCHAR=, and SHOWBREAK. These options are described in the section Syntax: NETDRAW Procedure.