Perhaps
the most common use for an inset is to display a table of statistics
within the graph. This section shows how to construct that type of
basic table. Later examples will show how to make the contents of
the table more dynamic and how to integrate the table into the graph.
The basic technique for constructing
the table is to place several ENTRY statements in a LAYOUT GRIDDED
block. Each ENTRY statement becomes a cell of the grid. ENTRY statement
options and layout options are used to further organize the table.
Suppose
you want to create the following table of text:
The simplest technique for creating the table is to construct
a one-column, three-row table. The following example uses three ENTRY
statements: one for each row in the table. The statistic name is left-justified
in each row, and the statistic value is right-justified:
layout gridded / columns=1 border=true;
entry halign=left "N" halign=right "5203" ;
entry halign=left "Mean" halign=right "119.96" ;
entry halign=left "Std Dev" halign=right "19.98" ;
endlayout;
Another
technique is to create the table with two columns and three rows.
This approach places each statistic name and statistic value in its
own cell. Although this technique requires six ENTRY statements, it
is a more flexible arrangement because each column alignment can be
set independently. The following example left-justifies the text for
each ENTRY statement:
layout gridded / columns=2 order=rowmajor border=true;
/* row 1 */
entry halign=left "N";
entry halign=left "5203";
/* row 2 */
entry halign=left "Mean";
entry halign=left "119.96";
/* row 3 */
entry halign=left "Std Dev";
entry halign=left "19.98";
endlayout;
ORDER=ROWMAJOR
means that cells are populated horizontally, starting from column
1, followed by column 2, and then advancing to the next row. You should
order the ENTRY statements as shown. To add additional rows in the
table, just add additional pairs of ENTRY statements.
Of course,
the LAYOUT GRIDDED statement enables you to organize cells by column,
so you can achieve this same effect with ORDER=COLUMNMAJOR. The following
code fragment populates the cells vertically down the columns by populating
the first cell in row 1, followed by the first cell in row 2, followed
by the first cell in row 3, and then advancing to the next column.
layout gridded / rows=3 order=columnmajor border=true;
/* column 1 */
entry halign=left "N";
entry halign=left "Mean";
entry halign=left "Std Dev";
/* column 2 */
entry halign=left "5203";
entry halign=left "119.96";
entry halign=left "19.98";
endlayout;
In both
cases, an HALIGN=LEFT prefix option was added to each ENTRY statement
to left-justify its text (the default is HALIGN=CENTER). Note that
the column widths in the table are determined by the longest text
string in each column on a per column basis.
The following example illustrates how to change the column
justification and add extra space between the columns with the COLUMNGUTTER=
option. Borders have been added to the ENTRY statements to show the
text boundaries and alignment. Although it is not used in this example,
the LAYOUT GRIDDED statement also provides a ROWGUTTER= option to
add space between all rows.
layout gridded / rows=3 order=columnmajor
columngutter=5px border=true;
/* column 1 */
entry halign=left "N" / border=true;
entry halign=left "Mean" / border=true;
entry halign=left "Std Dev" / border=true;
/* column 2 */
entry halign=right "5203" / border=true;
entry halign=right "119.96" / border=true;
entry halign=right "19.98" / border=true;
endlayout;
With the borders turned on in the layout, you should notice that
there is spacing that appears on the left and right of the ENTRY text.
The space is called padding, and it can be explicitly set with the
PAD= option in the ENTRY statement. The default padding (in pixels)
for ENTRY statements is
PAD=(TOP=0 BOTTOM=0 LEFT=3 RIGHT=3)
You can adjust that padding as desired.
To embellish the basic inset table
with a spanning title, nest one GRIDDED layout within another GRIDDED
layout. In the following example, notice that the outer GRIDDED layout
has one column and two rows (the nested GRIDDED layout is treated
as one cell).
layout gridded / columns=1;
entry textattrs=(weight=bold) "Stat Table";
layout gridded / rows=3 order=columnmajor border=true;
/* column 1 */
entry halign=left "N";
entry halign=left "Mean";
entry halign=left "Std Dev";
/* column 2 */
entry halign=left "5203";
entry halign=left "119.96";
entry halign=left "19.98";
endlayout;
endlayout;