The Graph Object is designed
to show a series of y values. Every point from 0 to (Points
 1) can have a label defined by PointLabels.
If there is more than one subset, all subsets share the same point label.
Here is some simple example code.
CreateSimpleGraph(); // from our demo
Pego1.PeData.Subsets = 1;
Pego1.PeData.Points = 4;
Pego1.PeData.PointLabels[0] = "Label1";
Pego1.PeData.PointLabels[1] = "Label2";
Pego1.PeData.PointLabels[2] = "Label3";
Pego1.PeData.PointLabels[3] = "Label4"; 
Given a default Graph and the above code, the result is the following
image. Note the labels below the x axis.
Now lets expand on this example by increasing the Points property to
50 and see what happens.
Pego1.PeData.Points = 50;
for (int p=0; p<50; p++)
Pego1.PeData.PointLabels[p] = "Label" + (p + 1).ToString();
Pego1.PeGrid.ForceVerticalPoints = ForceVerticalPoints.Vertical;

From the looks of the graph, it is now actually displaying point labels
every 5th label, it started with the 5th label, and produced 10 point
labels along the x axis. This x axis structure is the result of several
properties which invokes an automatic, partially automatic, or manually
controlled x axis structure.
AltFrequencies is the
property that controls when the graph should abandon the idea of showing
all point labels. The default value is 25, so anytime the graph's Points,
or PointsToGraph property is larger than 25, it will invoke logic that
only places a frequency of point labels rather than all point labels.
In the case of the above graph, since Points equals 50, not all point
labels will be shown.
AltFrequencies is a property
array which stores point label frequency restrictions. In other words,
if this property is used, then the graph must choose from among these
provided frequencies. If this property is not used, any frequency of point
labels can be shown. If more than one frequency is provided, it chooses
the frequency which will produce the number of x axis labels closest to
the value defined by the TargetPointsToTable
property.
In the case of the above graph, since AltFrequencies is not defined,
any frequency can be chosen. The default value of TargetPointsToTable
equals 10 so the graph will choose a frequency that produces the quantity
of x axis labels closest to 10. 50 points divided by the target of 10
x axis labels produces a frequency of 5. Thus, the graph shows every fifth
label.
FirstPtLabelOffset is
a property that controls the location of the first label. The default
value is 0, in which case the first label's position will match the frequency
used to place labels.
In the case of the above graph, since FirstPtLabelOffset is not
used, the first label shown is the 5th label which matches the frequency
used to place labels.
To help understand the above properties, lets demonstrate some variations.
Pego1.PeGrid.Configure.AltFreqThreshold = 51; 
If AltFreqThreshold is increased to more than Points, all labels are shown.
To show how to define the frequency of labels and starting label position. Starting at first label, every 10.
Pego1.PeData.Points = 50;
for (int p=0; p<50; p++)
Pego1.PeData.PointLabels[p] = "Label" + (p + 1).ToString();
Pego1.PeGrid.Configure.FirstPtLabelOffset = 1;
Pego1.PeGrid.Configure.AltFrequencies[0] = 10;

ScrollBar and the X Axis
If PointsToGraph is set to
a value less than Points, then only that quantity of points will
be included in the image and a horizontal scroll bar will be shown to
allow the user to pan left and right through data. If using PointsToGraph,
you can control which data point plots first by setting the property HorzScrollPos. The available horizontal
scrollbar positions will start with 1 and end with Points  PointsToGraph
+ 1. It is important that when setting HorzScrollPos, that the object
first be initialized with PEreinitialize, or via PEactions = 0. This is
because without initializing the object, the object will not have a scrollbar.
For example, if a Graph Object has 150 data points (Points = 150),
then the following code can be used to set various starting data points.
In this case, and with setting PointsToGraph = 35, possible HorzScrollPos
values will be between 1 and 116. First we set to 1, and then show setting of 116.
Pego1.PeData.Points = 150;
for (int p=0; p<150; p++)
Pego1.PeData.PointLabels[p] = "Label" + (p + 1).ToString();
Pego1.PeGrid.Configure.AltFreqThreshold = 40;
Pego1.PeGrid.PointsToGraph = 35;
Pego1.PeFunction.ReinitializeResetImage(); // always init before setting HorzScrollPos
Pego1.PeUserInterface.Scrollbar.HorzScrollPos = 1;

Pego1.PeData.Points = 150;
for (int p=0; p<150; p++)
Pego1.PeData.PointLabels[p] = "Label" + (p + 1).ToString();
Pego1.PeGrid.Configure.AltFreqThreshold = 40;
Pego1.PeGrid.PointsToGraph = 35;
Pego1.PeFunction.ReinitializeResetImage(); // always init before setting HorzScrollPos
Pego1.PeUserInterface.Scrollbar.HorzScrollPos = 116;

