The best way to describe a direct manipulation interface is by example. Suppose
we have a set of data to be analyzed with the numbers stored in matrix
form. Their source and meaning are not important for this example. The numbers
could be the output of a spreadsheet, a matrix of numerical values from
the computations of a conventional programming language, or the results of
an experiment. Our goal is to analyze the numbers, to see what relations exist
among the rows and columns of the matrix. The matrix of numbers is represented
on a computer display screen by an icon. To plot one column against
another, simply get a copy of a graph icon, then draw a line from the output of
one column to the x-axis input of the graph icon and another line from the output
of the second column to the y-axis input (see Figure 1). Not what was
wanted? Erase the lines and reconnect them. Want to see other graphs? Make
more copies of the graph icons and connect them. Need a logarithmic transformation
of one of the axes? Move up a function icon, type in the algebraic function
that is desired 0, = log x, in this case) and connect it in the desired data
stream. Want the analysis of variance of the logarithm of the data? Connect the
matrix to the appropriate statistical icons. These examples are illustrated in
Figure 1B.