org.faceless.graph2
Class Graph

java.lang.Object
  extended by org.faceless.graph2.Graph
Direct Known Subclasses:
AxesGraph, DialGraph, PieGraph

public abstract class Graph
extends Object

The abstract base class for all Graphs in the Big Faceless Graph Library version 2.x. All the types of Graph in the package have certain things in common.

Currently the two types of Graph available are PieGraph and AxesGraph, and you should see those classes for more information


Field Summary
static String VERSION
          The current version of the Graph library.
 
Method Summary
 void addKey(Key key, double x, double y)
          Set a Key on the graph, and position it at the specified location on the Graph.
 void addKey(Key key, int position)
          Set a Key on the graph and position it at the edges of the Output.
 void addText(String text, TextStyle style)
          Add some text to the Graph.
 void draw(Output out)
          Draw the Graph to the specified Output object.
 void interrupt()
          Interrupt the draw() method.
 boolean isInterrupted()
          Return whether the graph has been interrupted before it could be finalized.
 void setAutoColors(Color c1, Color c2)
          Set the Graph to auto-generate colors for its data by adjusting the hue, saturation and brightness between the two specified colors.
 void setColorOrdering(String order)
          Set the order the auto-generated colors are used.
 void setDefaultColors(Paint[] colors)
          Set the default colors for the graph.
 void setFixedAspectRatio(boolean val)
          Whether this graph should have a fixed aspect ratio.
 void setFixedSize(double zoom, double x, double y)
           When plotting a number of graphs that are supposed to be exactly the same size, this method can be used to set the zoom, x and y position to fixed values, rather than allowing the graph to be autosized to fit.
static void setLicenseKey(String key)
           Set the license key for the library.
 void setLightLevel(int level)
          Set the level of light (technically, the level of shade) that should be applied to a graph.
 void setLightVector(int x, int y, int z)
          Set the vector of where the light is coming from.
 void setMetaData(String key, String value)
          Set some descriptive text on the graph.
 void setXRotation(double val)
          How far to rotate the graph around the X-axis (the line running from the left of the graph to the right), in degrees clockwise.
 void setYRotation(double val)
          How far to rotate the graph around the Y-axis (the line running from the top of the graph to the bottom), in degrees clockwise.
 void setZRotation(double val)
          How far to rotate the graph around the Z-axis (the line running from the front of the graph to the back), in degrees clockwise.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

VERSION

public static final String VERSION
The current version of the Graph library. Typically this will be a string value like "2.0". Please be sure to include this information with any bug reports

Method Detail

setAutoColors

public final void setAutoColors(Color c1,
                                Color c2)
Set the Graph to auto-generate colors for its data by adjusting the hue, saturation and brightness between the two specified colors.

Parameters:
c1 - the first Color in the range
c2 - the first Color in the range
Since:
2.4

setDefaultColors

public void setDefaultColors(Paint[] colors)
Set the default colors for the graph. Each new element that is added will use the next color in this list - if there are no unused colors left, the list is reset to the beginning.

Parameters:
colors - the colors to use

setColorOrdering

public void setColorOrdering(String order)
Set the order the auto-generated colors are used. By default the first color is applied to the first data item, the second to the second and so on. Setting this to "value" will apply the first color to the largest data item and so on. This works with PieCharts and graphs showing a single BarSeries, but is unlikely to give useful results for more complex graphs

Parameters:
order - the ordering to use - "value" or anything else to use the default
Since:
2.4

addKey

public void addKey(Key key,
                   int position)
Set a Key on the graph and position it at the edges of the Output. Currently a Graph can only have one key, so repeated calls to this will overwrite any earlier values.

Parameters:
key - the Key to use on the graph
position - where to position the Key - a combination of values from the Align class

addKey

public void addKey(Key key,
                   double x,
                   double y)
Set a Key on the graph, and position it at the specified location on the Graph. The location is specified as two doubles, which range from 0 to 1 (0 being left or bottom, 1 being right or top). Any value between these two ranges may be used to position the Key over the Graph itself. Currently a Graph can only have one key, so repeated calls to this will overwrite any earlier values.

Parameters:
key - the Key to use on the graph
x - the X co-ordinate to position the key, from 0 to 1
y - the Y co-ordinate to position the key, from 0 to 1

addText

public void addText(String text,
                    TextStyle style)
Add some text to the Graph. Typically this is used to add a title, a footnote or similar - if you want to add text to the actual contents of the graph, see the Text class. The alignment of the style parameter determines where on the graph the text is displayed.

Parameters:
text - the text to display
style - the style to display the text in

setXRotation

public void setXRotation(double val)
How far to rotate the graph around the X-axis (the line running from the left of the graph to the right), in degrees clockwise. A positive value will rotate the top of the graph towards the viewer.

Parameters:
val - the rotation to use

setYRotation

public void setYRotation(double val)
How far to rotate the graph around the Y-axis (the line running from the top of the graph to the bottom), in degrees clockwise. A positive value will turn the right side of the graph towards the viewer.

Parameters:
val - the rotation to use

setZRotation

public void setZRotation(double val)
How far to rotate the graph around the Z-axis (the line running from the front of the graph to the back), in degrees clockwise. Setting this value and leaving X and Y rotation set to zero is the equivalent of rotating a graph in 2D. To draw horizontal bar graphs, try setting this to 90.

Parameters:
val - the rotation to use

setFixedAspectRatio

public void setFixedAspectRatio(boolean val)
Whether this graph should have a fixed aspect ratio. If false, the graph may be stretched horizontally or vertically to fill the space available. If true, the width and height will stay fixed, which is more appropriate for graphs like PieGraphs.

Parameters:
val - whether to have a fixed aspect ratio or not. Default is true for PieGraphs, false otherwise.

setFixedSize

public void setFixedSize(double zoom,
                         double x,
                         double y)

When plotting a number of graphs that are supposed to be exactly the same size, this method can be used to set the zoom, x and y position to fixed values, rather than allowing the graph to be autosized to fit. Be warned that for some types of graph (eg. those plotted against a DateAxis), the values that should be set here could seem quite 'odd', so a fair amount of experimentation will be required to find appropriate values for each graph.

As a hint, for date axes you probably want to set zoom to about 0.0002 and x to something near to -DateAxis.toDouble(date), where "date" is the first date being plotted. For PieGraphs, X and Y should be about equal to center the graph, which has a default radius of 100.

Parameters:
zoom - the zoom value
x - the amount to add to the X co-ordinates of the graph
y - the amount to add to the Y co-ordinates of the graph - remember in graphs, y=0 is at the bottom of the graph, so positive values move items on the graph up the page.

draw

public final void draw(Output out)
Draw the Graph to the specified Output object. Once this method has been called once, it cannot be called again on the same graph.

Parameters:
out - the Output to draw the graph to
Throws:
IllegalStateException - if the graph has already been drawn.

setLightLevel

public void setLightLevel(int level)
Set the level of light (technically, the level of shade) that should be applied to a graph. A value of 0 is no shading at all, a value of 100 gives deep shadows. The default is 70.

Parameters:
level - the level of lighting used to shade the graph

setLightVector

public void setLightVector(int x,
                           int y,
                           int z)
Set the vector of where the light is coming from. The light is assumed to be coming from an infinite distance away in the specified direction, so don't worry about the length of the vector. The default is (1,0,0), which makes the light appear to come from the right side of the graph. Calling graph.setLightVector(-1,0,-1) would put the light to the left and in front of the graph, while a vector (0,-1,0) would put the light directly underneath the graph, for a strange result indeed.

Parameters:
x - the X component of the vector
y - the Y component of the vector
z - the Z component of the vector

setMetaData

public void setMetaData(String key,
                        String value)
Set some descriptive text on the graph. The effect of this method depends very much on the type of Output being used, but typically will result in metadata of some sort being embedded in the final graph. For instance, to set the author of the graph you could call setMetaData("Author", "Joe Bloggs").

Parameters:
key - The type of MetaData to use. Values recognised include Author, Title, Description and Copyright, although other keys may be used and will be inserted if possible.
value - the value to insert

interrupt

public final void interrupt()
Interrupt the draw() method. This may be called from another thread to interrupt the drawing routine if the resulting graph is no longer of interest. The Output the draw() method is writing to should be discarded, as it will be left in an undefined state, as will this object. If this method is called before the draw() method has been called, then when it is called it will exit immediately. If called afterwards, it will have no effect.

Since:
2.1.2

isInterrupted

public final boolean isInterrupted()
Return whether the graph has been interrupted before it could be finalized. If this method returns true then the Output written to by the draw() method will be in an undefined state and should be discarded.

Since:
2.1.2

setLicenseKey

public static void setLicenseKey(String key)

Set the license key for the library. When the library is purchased, the Big Faceless Organization supplies a key which removes the "DEMO" stamp on each of the graphs.

Please note this method is static - it should be called BEFORE the first Graph is created, like so:

  Graph.setLicenseKey(.....);
  Graph graph = new AxesGraph();
 

Parameters:
key - the license key


Copyright © 2001-2011 Big Faceless Organization