Sas Graphics For Java Examples Using Sas Appdev Studio and The Output Delivery System Wendy Bohnenkamp Instant Download
Sas Graphics For Java Examples Using Sas Appdev Studio and The Output Delivery System Wendy Bohnenkamp Instant Download
https://ebookbell.com/product/sas-graphics-for-java-examples-
using-sas-appdev-studio-and-the-output-delivery-system-wendy-
bohnenkamp-973520
Using Sas For Data Management Statistical Analysis And Graphics 1st
Edition Ken Kleinman
https://ebookbell.com/product/using-sas-for-data-management-
statistical-analysis-and-graphics-1st-edition-ken-kleinman-2270880
https://ebookbell.com/product/sas-ods-graphics-designer-by-example-a-
visual-guide-to-creating-graphs-interactively-sanjay-matange-5851396
https://ebookbell.com/product/visual-data-insights-using-sas-ods-
graphics-a-guide-to-communicationeffective-data-visualization-1st-
edition-leroy-bessler-47552196
https://ebookbell.com/product/a-handbook-of-statistical-graphics-
using-sas-ods-geoff-der-brian-everitt-5058932
Statistical Graphics Procedures By Example Effective Graphs Using Sas
Sanjay Matange
https://ebookbell.com/product/statistical-graphics-procedures-by-
example-effective-graphs-using-sas-sanjay-matange-4936922
https://ebookbell.com/product/jmp-8-statistics-and-graphics-guide-2nd-
edition-sas-publishing-2362756
https://ebookbell.com/product/sasstat-92-users-guide-statistical-
graphics-using-ods-sas-publishing-1644762
https://ebookbell.com/product/sas-and-r-data-management-statistical-
analysis-and-graphics-second-edition-2nd-edition-ken-kleinman-4739676
https://ebookbell.com/product/sas-and-r-data-management-statistical-
analysis-and-graphics-1st-edition-ken-kleinman-1378068
SAS Graphics
®
for Java
Examples Using SAS AppDev Studio
® ™
Wendy Bohnenkamp
Jackie Iverson
The correct bibliographic citation for this manual is as follows: Bohnenkamp, Wendy, and Jackie Iverson.
2007. SAS® Graphics for Java: Examples Using SAS® AppDev Studio™ and the Output Delivery System. Cary,
NC: SAS Institute Inc.
SAS® Graphics for Java: Examples Using SAS® AppDev Studio™ and the Output Delivery System
ISBN 978-1-59047-693-2
For a hard-copy book: No part of this publication may be reproduced, stored in a retrieval system, or
transmitted, in any form or by any means, electronic, mechanical, photocopying, or otherwise, without the
prior written permission of the publisher, SAS Institute Inc.
For a Web download or e-book: Your use of this publication shall be governed by the terms established by
the vendor at the time you acquire this publication.
U.S. Government Restricted Rights Notice: Use, duplication, or disclosure of this software and related
documentation by the U.S. government is subject to the Agreement with SAS Institute and the restrictions set
forth in FAR 52.227-19, Commercial Computer Software-Restricted Rights (June 1987).
SAS Institute Inc., SAS Campus Drive, Cary, North Carolina 27513.
SAS® Publishing provides a complete selection of books and electronic products to help customers use SAS
software to its fullest potential. For more information about our e-books, e-learning products, CDs, and hard-
copy books, visit the SAS Publishing Web site at support.sas.com/pubs or call 1-800-727-3228.
®
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS
Institute Inc. in the USA and other countries. ® indicates USA registration.
Other brand and product names are registered trademarks or trademarks of their respective companies.
Contents
Acknowledgments ix
Introduction xi
Part 1 SAS AppDevStudio 1
Chapter 1 Getting Started with SAS AppDev Studio 3
1.1 Tag Libraries for SAS AppDev Studio 3
1.2 Getting Ready to Add Graphs to Your SAS AppDev Studio
Project 8
1.3 Your Data 10
1.3.1 Tips and Information 11
Thanks to Aimee for inspiration, Andrew for support, Jackie for courage, Mom for
believing, and the readers for their interest.
Wendy Bohnenkamp
Until I started this, I never knew just how much time and effort go into writing a book.
This is hard work, and I first have to say thank you to Wendy for putting up with me as a
writing partner. Without her knowledge, skill, and drive, this book would never have
been finished. Next, I need to thank my family for their encouragement and support. And
finally, I have to say thanks to the people who buy this book. If the examples in this book
make their job easier, then it will have been worth the effort.
Jackie Iverson
x
Introduction
The idea for this book started glimmering every time we would lament to each other
about the lack of good examples. The conversation always ended with “someone should
write a book.”
This book is intended to be that source for examples. We walk you though the basics and
®
help to get you familiar with things that may be new to you or new to SAS 9. The book
can be used by programmers at all experience levels.
This book covers only the graph objects in SAS AppDev Studio, and it is assumed that
you already know how to use SAS AppDev Studio to create and deploy a JavaServer
Page (JSP) or servlet application. A basic level of SAS ODS programming knowledge is
also needed to understand the example code in Part 2.
®
SAS 9 and SAS AppDev Studio 3 were released while we were writing this book. All
®
examples have been tested on SAS 9. SAS AppDev Studio contains both the older
version of graph custom tags as well as the new versions. Therefore we briefly cover
version 2 tags, but concentrate more on the version 3 tags.
There are many parameters and attributes to cover, so the intent is to provide a reference
tool to help you build your own graphs. We’ve focused on what we feel are the two main
®
ways programmers are using SAS 9 to create graphs using Java.
There are four main sections to this book. The first is what you are reading now. Just a
“Hi how are you?” and a “Here’s the intent of this book.” The second section covers
webAF and SAS AppDev Studio. It includes a brief how-to section on using webAF as
an Interactive Development Environment (IDE) and briefly discusses SAS AppDev
Studio 2 tags and their options. Then it covers the tags and the nesting properties of SAS
AppDev Studio 3 tags. The third section is intended for SAS programmers who want to
do some reporting but who are not that familiar with custom tags. This section covers
using Output Delivery System (ODS) statements and the Java Device Driver to create
graphs. Then we wrap everything up in the fourth section to include reference and
appendix materials.
This book is not intended to give you all the answers to all the questions about SAS
graphs. It is also not a “best practice” type of cookbook. We are merely trying to put
together a reference volume that enables you to see what you can and cannot do to make
your graphs more visually appealing. For instance, when you are combining ODS and
JSP files, you get a very diverse environment. We have decided to simplify our examples
by putting everything in a single JSP instead of using servlets, macros, stored processes,
etc. We wanted to focus on the attributes, parameters, and options that make graphs
convey what you really want them to convey.
xii Introduction
Because we are focusing on the look of the graph, we chose data that helped to illustrate
the specific graph attribute. This produced graphs that may not represent a real world
situation. So don’t get hung up on trying to analyze the graph; just look at what it is
trying to show. Appendix A contains data layouts of the SAS samples and WORK data
sets that were used to produce the graphs. Most of the time we used data sets from the
SAS/GRAPH samples library to make it easy for you to reproduce the graph. Part 3,
“Putting It Together,” explains where to find the sample data sets. If we had to create or
modify the data to get a particular attribute to show more clearly, we included the SAS
code in Appendix A.
Each sample that produces output has been tested in our local development environment.
We have tried to provide you with information on what works and what may not. We
included things that did not work for us, because in your environment or in future updates
they could. If you see an option or parameter that you like, give it a try. SAS offers many
opportunities for creativity. We hope to give you a jump start on the path to great graphs.
Chapter 2 SAS AppDev Studio Custom Tags and Attributes for Basic
Graphics 13
SAS AppDev Studio 2.x and SAS AppDev Studio 3 use separate tag libraries. SAS
AppDev Studio 3 introduced some major enhancements to the graphics components.
We’ll look at the most commonly used graphs in each version.
The easiest way to add graphs to your JSP or servlet project in SAS AppDev Studio is to
use the Component Palette. The graph components are on the Graphics tab. You can
change the palette by clicking the down arrow on the toolbar title bar.
We will be working with graphs on the SAS JSP/Servlet (Version 3) and SAS
JSP/Servlet (Version 2) palettes.
The version 2 tag library is part of SAS AppDev Studio 3. When you create a new SAS
AppDev Studio 3 project, you can choose to include the version 2 tag library so that these
tags are available in the component palette.
When you upgrade an existing webAF 2 project to use webAF 3 components, your old
SAS AppDev Studio 2 tags (which have a sasads prefix) will still be in your project and
will not be automatically updated to SAS AppDev Studio 3 tags (with a sas prefix). In
other words, if you have a sasads:Bar chart in your project, it will not automatically be
converted to a sas:BarChart if you move to webAF 3.
Here is an overview and comparison of the graphs available in both versions. Remember
that sasads tags are from SAS AppDev Studio 2, whereas sas tags are from the more
recent SAS AppDev Studio 3.
sasads:Bar sas:BarChart
Chapter 1: Getting Started with SAS AppDev Studio 5
Here is a direct comparison of the default bar charts. Notice that the default for
sasads:Bar is a three-dimensional chart, whereas the sas:BarChart is two-dimensional.
Both have several options that can enhance the appearance.
sasads:Pie sas:PieChart
As with the bar charts, sasads:Pie defaults to a three-dimensional chart, and sas:PieChart
is two-dimensional. Both charts have loads of options to create a number of different
looks. Additionally, the sas:PieChart tag can create a donut and subgroup data into
concentric rings.
Chapter 1: Getting Started with SAS AppDev Studio 7
sasads:Scatter sas:ScatterPlot
SAS AppDev Studio 2 includes the sasads:Scatter tag. The equivalent tag in SAS
AppDev Studio 3 is sas:ScatterPlot.
For this book, we’ve taken a simple approach and used a basic Java Database
Connectivity (JDBC) connection for SAS AppDev Studio 3 tags and SAS/CONNECT for
all others. If you need something more elaborate for your environment, review the SAS
documentation for SAS Integration Technologies. This resource will help you make
decisions on setting up security, pooling, connection types, etc.
Now that you have the connection, the next step is to create data models. Data models
allow you to shape the data for graphing. For instance, you might need to sort the data
alphabetically or by increasing values. Data models can also specify the columns, subset
the data, and perform other functions.
Chapter 1: Getting Started with SAS AppDev Studio 9
In SAS AppDev Studio 2, one common method is to use a sasads:DataSet tag. This
allows us to use the connection, specify the data, and shape it. Here’s an example:
<sasads:DataSet connection="bbuConnection" dataSet="samples.grains"
id="dsBar" scope="session" displayedColumns="country amount" />
In this example, we use the bbuConnection object to connect to our SAS server. Then the
dataSet attribute is used to define the data set we want to use. Here we are using the
Grains data set from the Samples library. Then, to help shape the data, we use the
displayedColumns attribute. This allows us to specify only the columns we will be
needing for the graph.
When using the SAS AppDev Studio 3 tags, we need to use different types of models.
These may seem more complicated than simply using the sasads:DataSet tag, but they are
more flexible. For sas:BarChart you use a
com.sas.graphics.components.barchart.BarChartTableDataModel. Here’s an example:
<%
barChartTableDataModel1.setCategoryVariable(
new com.sas.graphics.components.ClassificationVariable("COUNTRY"));
barChartTableDataModel1.setResponseVariable(
new com.sas.graphics.components.AnalysisVariable("AMOUNT"));
%>
Category variable
A variable that determines the number and arrangement of bars, slices, lines, etc.
Response variable
The variable you are trying to understand, explain, or model.
Midpoint
The value associated with a bar on a bar or block chart or the slice on a pie chart.
This is the category variable.
Chart variable
The data column to be charted. This variable can be character or numeric.
Chart statistic
Most commonly, the sum of a numeric variable or the frequency (count) of a
character variable. Other common statistics are percentages and means. The
statistics available vary by type of graph.
Midpoint axis
The axis that shows the categories of data.
Response axis
The axis that shows the range of values for the chart statistic.
Contiguous variables
Variables that contain a range of numeric values that are represented on the
chart. For example, dollars or quantities are contiguous variables.
Chapter 1: Getting Started with SAS AppDev Studio 11
Discrete variables
Variables that contain a finite number of specific values that are represented on
the chart. For example, years, geographical areas, and company divisions are
discrete variables.
X
Used in plots (vertical) to identify the variable on the horizontal axis.
Y
Used in plots (vertical) to identify the variable on the vertical axis.
Z
Used in plots (vertical) to identify the depth variable.
For more information on terminology and graphing basics, see the SAS OnlineDoc
documentation.
In short, the saying “Garbage in, garbage out” is so true. You need to be careful of how
your data is constructed and formatted before you base critical decisions on your output.
12 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System
C h a p t e r 2
SAS AppDev Studio Custom Tags and
Attributes for Basic Graphs
SAS AppDev Studio gives the user a number of graphing custom tags to use with JSP
pages. The tags available in SAS AppDev Studio 2 have been updated in SAS AppDev
Studio 3. Although SAS AppDev Studio 2 tags are easier to use because they are not
nested, they are limited in what they can and cannot display. You might be tempted at
first to run with the SAS AppDev Studio 2 tags, but once you get the hang of SAS
AppDev Studio 3 tags, we think you’ll jump right in with both feet.
In general, the standard convention for SAS AppDev Studio 3 tags looks like this:
<sas:BarChart id="bbuSASBarChart" model="barChartTableDataModel1"
scope="session" >
</sas:BarChart>
However, if there are no nested tags, you could use the following convention. The
difference is that the tag is closed using a single backslash at the end of the invocation of
the tag.
<sas:BarChart id="bbuSASBarChart" model="barChartTableDataModel1"
scope="session" />
Be very careful not to use both conventions at the same time. If you accidently use /> and
then have nested tags, the compiler won’t recognize the nested tags as being part of that
tag group.
If you need to nest tags, use the following convention and insert the nested tags where
shown.
<sas:BarChart id="bbuSASBarChart" model="barChartTableDataModel1"
scope="session" >
<nestedTag - enter any valid nested tags here>
</nestedTag>
</sas:BarChart>
Each graph tag has three required attributes. The id attribute gives the object a name.
Each object in your scope must have a unique identifier or name. The model attribute
specifies the data model. The scope attribute defines the limit of the object’s availability,
such as session, request, page, or application.
<sas:BarChart id="bbuSASBarChart" model="barChartTableDataModel1"
scope="session" >
</sas:BarChart>
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 15
2.1.1 sasads:Bar
2.1.2 sasads:Combination
2.1.3 sasads:Pie
2.1.4 sasads:Scatter
2.1.5 sasads:SegmentedBar
2.2.1 sas:BarChart
<%
barChartTableDataModel1.setCategoryVariable(
new com.sas.graphics.components.ClassificationVariable("COUNTRY"));
barChartTableDataModel1.setResponseVariable(
new com.sas.graphics.components.AnalysisVariable("AMOUNT"));
%>
2.2.2 sas:BarLineChart
<%
barLineChartTableDataModel1.setCategoryVariable(
new com.sas.graphics.components.ClassificationVariable("TEACHER"));
barLineChartTableDataModel1.setLineResponseVariable(
new com.sas.graphics.components.AnalysisVariable("AGE",
com.sas.graphics.components.GraphConstants.STATISTIC_MEAN));
barLineChartTableDataModel1.setBarResponseVariable(
new com.sas.graphics.components.AnalysisVariable("HEART",
com.sas.graphics.components.GraphConstants.STATISTIC_MEAN));
%>
<sas:BarLineChart id="bbuSASBarLineChart"
model="barLineChartTableDataModel1" scope="session" >
</sas:BarLineChart>
20 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System
2.2.3 sas:LineChart
<%
lineChartTableDataModel1.setCategoryVariable(
new com.sas.graphics.components.ClassificationVariable("COUNTRY"));
lineChartTableDataModel1.setResponseVariable(
new com.sas.graphics.components.AnalysisVariable("AMOUNT"));
%>
2.2.4 sas:LinePlot
You can create a line plot using the sas:LinePlot tag. A line plot is typically used to plot x
and y variables, one of which may have contiguous values. In this example, the
population (POPDEN) is a contiguous value, and the territories (IDNAME) are discrete
values.
<%
linePlotTableDataModel1.setXVariable(
new com.sas.graphics.components.PlotVariable("IDNAME"));
linePlotTableDataModel1.setYVariable(
new com.sas.graphics.components.PlotVariable("POPDEN"));
%>
2.2.5 sas:PieChart
<%
pieChartTableDataModel1.setCategoryVariable(
new com.sas.graphics.components.ClassificationVariable("COUNTRY"));
pieChartTableDataModel1.setResponseVariable(
new com.sas.graphics.components.AnalysisVariable("AMOUNT"));
%>
2.2.6 sas:RadarChart
<%
radarChartTableDataModel1.setCategoryVariable(
new com.sas.graphics.components.ClassificationVariable("COUNTRY"));
radarChartTableDataModel1.setResponseVariable(
new com.sas.graphics.components.AnalysisVariable("AMOUNT"));
%>
2.2.7 sas:ScatterPlot
You can create a scatter plot using the sas:ScatterPlot tag. Scatter plots show a
relationship between one variable and another. They can be very helpful in revealing
trends in the data.
<%
scatterPlotTableDataModel1.setXVariable(
new com.sas.graphics.components.PlotVariable("IDNAME"));
scatterPlotTableDataModel1.setYVariable(
new com.sas.graphics.components.PlotVariable("POPDEN"));
%>
<sas:ScatterPlot id="bbuSASScatterPlot"
model="scatterPlotTableDataModel1" scope="session">
</sas:ScatterPlot>
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 25
alignment
Valid values:
Top
Bottom
Middle
Left
Right
This attribute is applied to the HTML image tag, so it does little to adjust the alignment
on a page by itself. You can insert this tag into a HTML table to position the graph on the
page.
<img name="bbuSASBarChart1" id="bbuSASBarChart1"
src="http://localhost:8080/BBU/StreamContentServlet;
jsessionid=9522F7D4B41DADC4190C3857ACC3DE56?
CONTENT_KEY=bbuSASBarChart1&SRCID=93965" galleryimg="no"
align="RIGHT" usemap="#bbuSASBarChart1" width="400" height="300"
border="0"/>
26 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System
alternateText
Valid values:
<String>
Once this code is rendered, the compiled HTML code looks similar to this:
<img name="bbuSASBarChart" id="bbuSASBarChart"
src="http://localhost:8080/BBU/StreamContentServlet;
jsessionid=0D27E1E4DC8ED61495903F9C4BE9E9DC?
CONTENT_KEY=bbuSASBarChart&SRCID=50196" galleryimg="no"
alt="Alternate Text when Hovering" usemap="#bbuSASBarChart"
width="400" height="300" border="0"/>
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 27
appliedColorSchemeName
Valid values:
Autumn Bright
Carnival Commerce
Grayscale Industry
Magellan Neon
Ocean Pastel
Picnic Pine
Terra Wheat
Woodland
appliedGraphStyleName
Valid values:
Analysis Astronomy
Banker Blockprint
Convention Curve
Education Electronics
Gears Magnify
Money Monochrome
RSVP Science
Sketch Statistical
Torn Watercolor
Have fun with these. You can find examples of the predefined graph styles at
http://support.sas.com/rnd/gendoc/bi/api/Components/com/sas/graphics/components/doc-
files/style-Grid.html.
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 29
borderWidth
Valid values:
<Integer>
When this tag is rendered, the border is actually applied to the HTML <img> tag that
produces the graph. Here is an example:
<img name="bbuSASBarChart" id="bbuSASBarChart"
src="http://localhost:8080/BBU/StreamContentServlet?
CONTENT_KEY=bbuSASBarChart&SRCID=60154" galleryimg="no"
usemap="#bbuSASBarChart" width="400" height="300" border="5"/>
30 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System
epilog
Valid values:
<String>
The epilog is actually created after the image has been created. This is added as straight
HTML text on your page.
<table cellPadding="0" cellSpacing="0" borderWidth="0" >
<tr>
<div id="divbbuSASBarChart" style="position:absolute">
<td>
<img name="bbuSASBarChart" id="bbuSASBarChart"
src="http://localhost:8080/BBU/StreamContentServlet?
CONTENT_KEY=bbuSASBarChart&SRCID=55190" galleryimg="no"
usemap="#bbuSASBarChart" width="400" height="300" border="0"/>
</td>
</div>
</tr>
</table>
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 31
Epilog Text
<map name="bbuSASBarChart">
<area shape="polygon" alt="COUNTRY: Australia AMOUNT: 31167"
coords="86,241,86,241,169,241,169,253,86,253,86,253">
</map>
Notice where the “Epilog Text” string is posted on the page after the image but before the
map. The map was automatically generated by the graph tag. In this example, it provides
hover text that shows the country name and amount.
galleryImageVisible
The galleryImageVisible attribute enables you to control whether your graphs are
resizable on the page. In Microsoft Internet Explorer there is a setting under Tools Î
Internet Options Î Advanced Î Multimedia called “Enable Automatic Image
Resizing.” This option, when checked, resizes images that may be too large to fit in the
browser window area. The galleryImageVisible attribute sets this option on or off using a
True or False value. Set to False, the graph image cannot be resized regardless of the
user’s Internet Explorer browser settings.
Valid values:
Boolean (True/False)
32 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System
height
Valid values:
<Integer>
Be aware that the radar chart does not resize the image, but rather allots the space to use
for the graph area. Therefore the radar chart is the same size, but the height attribute may
create more white space around the perimeter.
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 33
horizontalSpace
You can use the horizontalSpace attribute to provide padding or white space on the sides
of the image.
Valid values:
<Integer>
<sas:BarChart id="bbuSASBarChart" model="barChartTDM1"
scope="request"
horizontalSpace="200" >
</sas:BarChart>
When the tag renders the image, it applies an hspace attribute to the HTML <img> tag,
similar to this:
<img name="bbuSASBarChart" id="bbuSASBarChart"
src="http://localhost:8080/BBU/StreamContentServlet?
CONTENT_KEY=bbuSASBarChart&SRCID=95403" galleryimg="no"
usemap="#bbuSASBarChart" width="400" height="300" hspace="200"
border="0"/>
image
The image attribute allows you to set the source of the chart you are trying to display.
Although this attribute sounds fairly straightforward, we have not found any practical
uses for it.
34 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System
prolog
Valid values:
<String>
</map>
Notice that the string “Prolog Text” is applied to the HTML stream before the image and
map areas.
render
To disable or delay the display of a specific graph, you can use the render attribute. This
takes a Boolean value (True or False). The default value is True. If it is set to False, the
graph does not display with that particular invocation of the graph tag. However, if you
reference the graph tag later in the HTML file, you can display the graph at that time by
changing the render value to True.
Valid values:
Boolean (True/False)
<sas:BarChart id="bbuSASBarChart" model="barChartTDM1"
scope="request"
render="FALSE" >
</sas:BarChart>
This tag can be valuable in lots of applications. For example, you might want to display
or not display the graph based on some passed parameter. Therefore you could do
something like the following:
<sas:BarChart id="bbuSASBarChart" model="barChartTDM1"
scope="request"
render="<%=isRendered%>" >
</sas:BarChart>
This code takes a parameter pulled from the session or request (isRendered) and applies
that passed string directly to the tag. You should be careful when doing this to make sure
the value is indeed a string representing a Boolean value (True or False).
36 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System
verticalSpace
The verticalSpace attribute is similar to the horizontalSpace attribute. The difference is
that white space is applied to the top and bottom (vertical spaces) of the graph area.
Valid values:
<Integer>
<sas:BarChart id="bbuSASBarChart" model="barChartTDM1"
scope="request"
verticalSpace="200" >
</sas:BarChart>
This padding is accomplished when the tag renders the image. It applies a vspace
attribute to the HTML <img> tag, similar to this:
<img name="bbuSASBarChart" id="bbuSASBarChart"
src="http://localhost:8080/BBU/StreamContentServlet?
CONTENT_KEY=bbuSASBarChart&SRCID=37838" galleryimg="no"
usemap="#bbuSASBarChart" width="400" height="300" vspace="200"
border="0"/>
width
Valid values:
<Integer>
Note that the width is applied directly to the HTML <img> tag. This can cause you some
problems. For instance, take one of the plots with longer labels. The labels will
unfortunately be shortened automatically. This might not be the desired affect, as shown
below.
Exploring the Variety of Random
Documents with Different Content
"Well met, Miss Enistor," said the elder man in a genial manner and
staring at her very directly. "I was just coming to take Montrose
away."
"Yes," called out Mrs. Barrast, "he is going, and at eleven o'clock too.
So very early. What can we do with the rest of the evening?"
"I advise bed," said Eberstein pointedly.
"Bed for me," endorsed Alice gaily. "I feel rather tired."
"I don't think you do," said the doctor calmly: and to Miss Enistor's
surprise on consideration she did not. But as he spoke she again felt
a wave of that strange uplifting influence and drew back, startled to
find that it emanated from the doctor. Eberstein smiled quietly,
"Good-night!"
"Good-night, Mr. Montrose," said Mrs. Barrast pointedly. "Next time
you come, talk to me as well as to Miss Enistor!"
"I apologise for my bad manners," said Montrose quickly.
"What a compliment to me!" laughed Alice, shrugging her shoulders.
"Oh, you understand me, I think, Miss Enistor," he looked at her
straightly.
She returned his look flushing. "I think I do," was her low reply.
"Such nonsense," said Mrs. Barrast irritably: for her the evening had
not been a success.
CHAPTER VII
BEHIND THE SCENES
After the storm comes the calm, and when trouble has endured for a
season peace descends to refresh the exhausted soul. Montrose had
suffered a great deal during the five-and-twenty years of his present
life, and it was time that he should enjoy a rest. Ever since he could
remember, dark clouds had enshrouded him, and with a fainting
heart he had groped his way through the gloom. The meeting with
Eberstein had been the end of sorrow and the beginning of joy, for
the doctor had bidden him raise his eyes to the hills made glorious
by the rising sun. With the legacy of Lady Staunton the dawn had
come, but only when he met Alice did Montrose feel that the sun
was above the horizon. As by magic the darkness was swept away,
and now he walked in golden sunshine, no longer alone. She was
beside him, and he wondered how he could have endured life
without her dear presence. For the next three weeks he was in
heaven rather than on earth.
Of course the first desire of Montrose was to share with Alice the
wonderful knowledge that he had acquired so strangely. But a note
from Eberstein prevented this. The doctor wrote that he was going
abroad for a few weeks, and that in the meanwhile Montrose was to
tell the girl nothing of his late experiences. "Woo her as an ordinary
youth woos an ordinary maid," said the letter. "She is yours and you
are hers, so nothing can come between you for the time being. I say
for the time being, since there is an ordeal which you must face
before you stand before the altar. Whether you ever do stand there
to take her as your wife depends upon your courage and
forbearance and love. Meantime keep what you have seen and what
you have heard to yourself. When I return I shall explain what is
necessary for you to know!" This note was delivered the first thing in
the morning after Montrose's weird experience, and when he called
round to see Eberstein he found that the doctor had already
departed for Paris. There was nothing left for him to do but to obey
instructions.
Montrose did this very willingly. After all he was a man living in the
world of men, and wished to make love like an ordinary person.
Certainly Alice was an angel, and might not be satisfied with
ordinary love-making, but she also was human, and appreciated the
domesticity of life. Montrose remembered reading in some book
Eberstein had lent him: "For every step you take in other planes,
take two on the plane you know, since you are here to learn the
lessons of this plane!" Thus the young man abandoned for the
moment his search after super-physical knowledge and gave himself
up to the joy of being an ordinary mortal. And in one way or another
he hoped to elevate a commonplace wooing to a romantic passion,
but all strictly within the limitations of the physical brain. When the
gods descended from Olympus to follow after nymphs, they came as
mere men. In a like way did Montrose set about his courting of Alice
as the one woman in the world for him.
Mrs. Barrast quite approved of the romance. For a time she had
been rather annoyed that so handsome and rich a young man had
not laid himself at her feet. But being really good-natured, if
extraordinarily vain, the little woman had ceased to play the part of
dog in the manger, and forwarded the aim of Montrose by every
means in her power. At heart she was a great match-maker like most
women, and the fact that Montrose possessed Lady Staunton's
wealth made her zealous to bring about the marriage. She looked
upon herself as quite a dea ex machinâ, and, certain that all would
turn out as she wished, had already arranged how the bridesmaids
should be dressed, what people ought to be asked to the wedding,
what present she would give, and where the young couple should
spend their honeymoon. There was no doubt that Mrs. Barrast, like
many another frivolous person, was a great hand at counting her
chickens before they were hatched.
"But the dinky little things will come out of the eggs all right," she
said to Alice, a week after that young lady had made the
acquaintance of Montrose. "He's a nice boy and any one can see
he's head over heels in love with you, my dear. But I wish you would
dress in colours, Alice. It looks so silly for an engaged girl to go
about in black."
"I am not engaged yet," replied Miss Enistor doubtfully, "and I never
may be, Amy. My father has to be consulted."
"My dear," said Mrs. Barrast impressively, "he'll jump at the chance
of getting the money back into the family."
"There is Don Pablo, who wants to marry me," ventured Alice
anxiously.
"And there's Julian also," retorted the little woman. "What of that?
Why, I had dozens of offers before I met Frederick, though why I
took him I really don't know. Of course, as you told me this Don
What's-his-name is rich and if Douglas—you don't mind my calling
him Douglas, do you, dear?—was poor, I shouldn't advise you to
throw the old thing over. But youth and good looks and money and
all those nice things are better than an old man. And I am glad after
all that you did not accept Julian," ended Mrs. Barrast candidly. "He
isn't rich either, and life's horrid without money. Besides, I wish
Julian to marry a rich girl."
"If he loves her."
"Pooh, what has love to do with marriage? What old-fashioned ideas
you have, Alice. I suppose you wouldn't marry Douglas if you didn't
love him."
"Certainly not," said the girl firmly.
Mrs. Barrast made a grimace. "It's lucky you like him then, my dear.
Of course it's not right to marry for money only," added the butterfly,
contradicting herself boldly, "but when you meet a man with a
banking account try and love him as hard as ever you can."
"I love Douglas for himself alone. If he was a pauper I should love
him."
"I daresay you would. I'm sure there is madness in your family. It's a
mercy Douglas is well off. Five thousand a year is very nice. Be sure
you make him take a house near ours, dear, and get a smart motor-
car with one of those nice chauffeurs who look like engineers but
aren't. They're lots cleaner than engineers, aren't they? And do wear
a blue dress, dear: blue suits you."
"No! no! I am still in mourning for my aunt."
"I'm sure you needn't be. I wouldn't mourn for a horrid, lean, old
thing—she was lean, you know—who didn't leave me a penny."
"She left my father one thousand pounds, Amy."
"Just enough to make him hate her. I'm sure I would if I'd been
treated in that nasty way. And do make Douglas take you out more.
I'll come too as your chaperon, though perhaps I'm too young for
the part."
"I go out quite enough, Amy. With my aunt in her grave——"
"Oh, don't talk about graves," cried Mrs. Barrast, rising in a hurry,
"you set my nerves on edge, if nerves ever do have an edge, which
I'm sure I don't know if they have. Not that it matters of course. Has
Douglas proposed?"
"No. But we understand one another."
"Oh, my dear," said Mrs. Barrast in despair, "what is the use of that?
I like everything to be signed, sealed, and delivered—I come of a
legal family, you know, dear—to make certain. Don't lose your
salmon after you've hooked him. Men do wriggle, you know, and if
he sees another girl, he will——"
"He won't," interrupted Alice, with very red cheeks. "How can you
talk so? I am the only girl Douglas has ever loved."
"Oh, he told you the usual lie then," sniggered the little woman
provokingly. "How can men be so silly as to think we believe them! I
wish you'd ask him to make love here, Alice, as I'd like to hear how
he goes about it. It's absurd meeting in Kensington Gardens as you
do. It isn't respectable."
"Then I am not going to be respectable this afternoon," said Alice,
escaping from this wasp, "for we meet there in two hours."
"Make him give you an engagement ring," cried Mrs. Barrast, who
always insisted upon having the last word, "diamonds, you know,
dear. If the engagement is broken you won't want to keep the ring
and can always get market value for the stones. I feel it is only right
that you should have some of that money. Remember what I say,
darling: remember what I say."
Alice, on her way to her own room, did not hear the end of this
speech, although it was screamed out after her. She was rather
offended that Mrs. Barrast should advise Montrose's capture like an
unwilling fish, as if any marriage could possibly be happy with a
reluctant bridegroom. But when putting on her hat, the girl laughed
at her reflection in the mirror, and excused the little woman's well-
meant speech. Amy really did mean well, although she had a rather
brutal way of putting things. Miss Enistor wondered if Frederick had
been bargained for in this mercantile way, and thought it was very
probable. Mrs. Barrast was exceedingly modern, and modern women
are very businesslike in dealing with what was formerly called
romance. The Barrast marriage was a kind of mutual aid society.
Frederick had secured a pretty woman to do the honours of his
house, and Amy had captured a rich husband who supplied her with
plenty of money and let her go her own frivolous way. Alice decided
that the shrewd butterfly had made the best bargain, and was taking
full advantage of her cleverness. Then she put Mrs. Barrast out of
her head and started for the place of meeting in Kensington
Gardens.
It was a warm afternoon, but not too dazzling, as a thin veil of
clouds was drawn across the sky. Alice alighted from her taxi at the
park gates and leisurely walked up the broad path towards the
Round Pond. She preferred to meet Douglas here rather than in the
Hans Crescent house, because Mrs. Barrast would always have been
interrupting. And the girl was sufficiently in love to think that two
was company and three a nuisance. As a matter of fact, she
acknowledged to herself she was as deeply in love with Montrose as
he obviously was with her, though neither of them had put the
feeling into words. On this occasion, however, Alice decided that it
would be just as well to come to some sort of understanding, since it
was probable that she would not remain much longer in town. At
least she fancied so, for her father had been grumbling about the
money she was spending. Of course she had only known Douglas for
seven days, and it was rather early to fall in love with him. But she
felt convinced that in previous lives she had loved the young man,
and that the present wooing was only the continuation of one
interrupted in the distant past. What had interrupted it she could not
say, but this time she was determined to bring it to a head, and
learn for certain if Douglas felt towards her as she felt towards him.
If glances and attentions went for anything, he assuredly did, but
modesty or nervousness apparently prevented his plain speaking.
Expecting at any minute to be summoned back to the gloom of
Tremore, Alice felt that she could not go away without knowing what
Montrose's feelings were. And if he really did love her to the extent
of making her his wife, she gratefully recognised that she would
have some one beside her to resist the pressure put upon her by
Don Pablo and her father.
On arriving at the tree under which she usually met her lover, she
was surprised not to find him waiting for her. His absence piqued
her, especially as she was late, for he certainly should have been
watching for her arrival with his heart in his eyes. With a pout she
sat down on one of the two green chairs and stared unseeingly at
the many children playing about the grass and sailing toy ships on
the Round Pond. What would her father say if he knew that she was
meeting Montrose, and now loved him to the extent of thwarting
Enistor's darling project of uniting her to Narvaez. Poor ignorant girl!
She little knew that Don Pablo by his black arts was keeping Enistor
advised of all that was taking place, and that the two men were
calmly watching her innocent luring of the fly into the web. Eberstein
could have warned her of this infernal espionage, but he was absent,
and neither Alice nor her lover had any knowledge how to guard
themselves. They were even ignorant that protection was necessary,
and it was only when the worst was at an end that they learned how
the guardianship of the master had been withdrawn for the time
being. The children had to learn to walk alone in their own strength
and by their own will. Therefore, in the Garden of Eden represented
by Kensington Gardens, did they lie open to the assault of the
Serpent in the person of Don Pablo. But their ignorance and
innocence and natural leanings towards the good baffled the black
magic of the evil creature for the moment.
"A penny for your thoughts," said Montrose suddenly, and Alice
raised her eyes to find that he had slipped silently into the chair
placed a trifle behind that on which she was seated.
"They are only worth a halfpenny," she retorted rebukingly. "I was
thinking how little you must care for my company when you are so
late!"
"I have been hiding behind yonder tree ever since you arrived,"
explained Montrose, laughing, "and for quite an hour I have been
waiting."
Alice laughed also. The boyishness of his action appealed to her.
"But we are too old to play at Peep Boo like babies," she said,
shaking her head with a would-be attempt at primness which was
quite a failure.
"We are not old," denied Montrose, placing his chair in line with
hers. "We are young: we shall always be young, for the gods love
us. As to babies, look into my eyes and you will see yourself as a
baby."
But Alice would not look, and the colour came to her cheeks. "There
was a girl at school who talked of babies in the eyes. It was amusing
to hear her talk, but rather silly."
"The silly things are the serious things of life at this moment."
"How do you explain that epigram, Mr. Montrose?"
"Do epigrams require explanations?"
"This one does, I fancy."
"Oh, no, it doesn't. You must guess that the explanation lies in the
words I used. 'At this moment,' I said."
"Why this moment rather than others, Mr. Montrose?"
The young man drew back rather disappointed. "No. I see you don't
understand, Miss Enistor, or you would not call me Mr. Montrose."
"You call me Miss Enistor!" replied Alice, wilfully dense.
For the sake of beating her with her own weapons, he answered in
kind. "Naturally I do. I am a very polite person. But I daresay, in
other lives, in other climes, and when we were clothed in other
bodies, I called you Chloe, or Octavia, or Isabeau, or Edith."
"Greek, Roman, French, and Anglo-Saxon," commented Alice,
amused; "you seem to have settled the countries we lived in. I
suppose I called you Damon, or Marcus, or Jehan, or Harold—that is,
supposing we were together in those days in those places."
"We have always been together," said Douglas decisively. "I am quite
sure."
"Have you any proof?"
"Only the proof of my own feelings. I am not clairvoyant to the
extent of remembering my former incarnations, nor can I—as some
can—consciously leave my physical body at will and return to it with
a recollection of what I have seen. Now you are more advanced."
"Indeed, I am not. I have learned much from my father, who knows
a great deal about such psychic matters. But I have never been
properly instructed and my knowledge is very limited."
"But you believe in the doctrine of reincarnation?" urged Montrose
eagerly.
"Of course. It is a most sensible doctrine to believe, and explains
nearly everything in a common-sense way. But I cannot prove my
belief."
"There is no need to prove it to me," said Montrose, thinking of his
vision, "for I know beyond all question that we have lived and loved
before."
"Yes," assented the girl dreamily, "I knew you the moment you
entered Mrs. Barrast's drawing-room."
The young man glanced round, and, seeing that they were more or
less sheltered from observation, gently took her hand. She did not
remove it, although her whole body thrilled to the touch. "You knew
me as what?" asked Montrose.
"I can't say more than that I knew you as a familiar friend."
"So cold a word," pleaded the other softly.
"What other word can I use to you when we have only known each
other for a single week?"
"That is in this life. In other existences we knew each other for
years."
Alice looked down timidly. "It—is—probable," she breathed.
"Then why not take up the new life at the point where the old one
left off?"
"We don't know how it left off, Mr. Montrose."
"No. But assuredly it did at a point where you called me by my then
Christian name—Alice."
Her heart fluttered as he spoke thus intimately. "Perhaps we were
not Christians," she said, rather embarrassed.
"Ah!" he dropped her hand, "you are fencing. I merely spoke in the
style of to-day to illustrate my point."
"Now you are angry!"
"I never could be angry with you; only you will not understand."
"Perhaps I do," said Alice, with a whimsical smile.
"If so, why aren't you plain with me?" said Montrose, ruffled.
The mothering instinct, which makes every woman see in every man
a child to be soothed and petted, rose within her. "Let us slap the
bad, naughty table that has hurt baby," she said demurely, and
Montrose looked up to see the laughter in her eyes.
"You little witch!" He caught her hand again and this time so roughly
that she winced at the delicious pain. "You know quite well what I
mean."
"I do—Douglas!"
"Oh!" He leaned towards her so violently that she swung aside in
alarm.
"The eyes of Europe are on us," she said hastily, indicating the
throng of children and nursemaids and grown-up people round the
pond and on the paths and lying on the grass.
"Bother the eyes of Europe." But he saw that she was right and he
did not dare proclaim his love by taking her in his arms. It was
rather a poor thing to content himself with squeezing her hand. But
he did, and so hard that she uttered an exclamation.
"Mr. Montrose, you are hurting me."
"Am I? Poor hand! I wish I could kiss it!" with a swift look round, he
managed to do so. "There—Alice. Don't you dare to call me anything
but Douglas."
"I believe you wish to take me by storm," she pouted, not ill-
pleased.
"What! capture my own city?"
"Your own city? What do you mean?"
"I mean that I dwell in your heart. That city is mine."
"How conceited you are."
"Indeed, I am not. You know quite well that I am only speaking the
truth. I loved you in the past and I love you now. All preliminaries of
love were gone through ages ago. Why fence, as if we now meet for
the first time? When I saw you in Mrs. Barrast's drawing-room I said,
'She is mine!' When you saw me you said, 'I am his'——"
"I'm sure I didn't," interrupted Alice hastily.
"You thought it, though."
"I shan't tell you."
"There is no need for you to do so. Oh, my dear," he went on
entreatingly, "is there so much love in the world that you and I can
afford to throw what we possess away? All my life I have been
lonely: all my life I have wanted to meet you, to adore you, to——"
"How could you when you didn't know that I existed?"
"Fencing again. As if you didn't know that spirit is everything and
form is nothing. We have been apart on earth until last week; but
we have always been together in higher worlds, although neither
you nor I can remember our companionship."
Alice laughed in a rather anxious manner. "Any one listening to us
would be certain both of us were insane."
"I daresay. But as no one is listening, it doesn't matter. For the
convenience of a world that doesn't understand such things, let us
behave in a conventional manner. I shall visit at Mrs. Barrast's and
court you in the approved style. In due time I shall write and ask
your father if I may make you my wife. Meanwhile I want your
assurance that you love me and have always loved me in the past."
"But a single week——"
"Time doesn't matter. You know it doesn't. You love me, Alice?"
"Yes!" She saw that the time for fencing was ended. "I love you,
Douglas!"
He kissed her hand again, then, aware that the place was too public
for him to take her in his arms, suppressed his feelings. Side by side
they sat in a stiff kind of way, while each longed for demonstrations
which the situation forbade. It was decidedly uncomfortable to be
thus conventional. But it was just as well that they thus came to an
understanding in the eye of the sun, as the self-control was quite an
education.
"One would think we were a couple of old married people, sitting
side by side in this stiff manner," said Montrose with a vexed laugh.
"I should like to be a Sabine and carry you away by force."
"Perhaps you will have to do so," said Alice, thinking of Don Pablo.
"My father will never consent to my becoming your wife."
Montrose looked amazed and anxious. "Why not? There is nothing
against my character and position," he said rapidly, "and as I have
inherited Lady Staunton's money, your father will be glad that I
should bring it into the Enistor family again by making you my wife."
"I don't think my father cares anything about the money," said Alice,
ignorant of her parent's true feelings. "He wants me to marry Don
Pablo."
"A Spaniard. Who is he?"
"A Spaniard, as you have said. He is my father's greatest friend."
"Young and handsome and wealthy?"
"Wealthy, certainly. But very ugly, just like a mummy, and as old as
the hills—older, I believe. He must be eighty."
"Then why does your father wish you to marry him?"
"Because Don Pablo is rich."
"Well, I am rich also. Five thousand a year is riches."
"Don Pablo has more, I fancy."
"I don't care what he has. He hasn't got you for a wife and he never
will have. You will marry me and no one else."
"Yes, I promise you that, Douglas. But there will be trouble."
"Pooh!" Montrose laughed joyously. "I'd face a universe of trouble if
you were the prize to be obtained by enduring it. Besides, Eberstein
says that we belong to one another."
"How does he know?"
"He knows many things that are strange and true. When he comes
back he will explain. He promised to do so. Meantime, all we have to
do is to be true to one another. We are engaged. Say we are
engaged, Alice."
"Yes. We are engaged. I shall marry no one but you."
"Hurrah! Then we shall be happy for ever and ever——"
"Amen," said the girl thankfully. "All the same, I fear Don Pablo."
Montrose tucked her arm within his own. "We are together," he said.
"Unity is strength. You understand, dear!" And Alice did understand,
smiling happily.
"It is the birthday of the soul," she said; "of your soul and mine,
which are one."
CHAPTER IX
THE WARNING
ebookbell.com