mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
144 lines
4.3 KiB
Plaintext
144 lines
4.3 KiB
Plaintext
eZ component: Graph, Design
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
:Author: Kore Nordmann
|
|
:Revision: $Revision: 3273 $
|
|
:Date: $Date: 2006-08-15 11:42:17 +0200 (Tue, 15 Aug 2006) $
|
|
|
|
Design Description
|
|
==================
|
|
|
|
Purpose of Graph package
|
|
------------------------
|
|
|
|
The Graph package will be used to generate different chart types from a user
|
|
defined set of data. There will be 2D and 3D presentations for each chart
|
|
type.
|
|
|
|
Classes
|
|
-------
|
|
|
|
ezcGraph
|
|
Controller for the generated graphs. Offers factory methods for the other
|
|
classes, handles and dispatches the configuration and actions to the other
|
|
classes.
|
|
|
|
ezcGraphDataset
|
|
Receives the user data, and stores the configuration for the dataset, like
|
|
color, label, etc. How the data is stored depends on the kind of the
|
|
dataset. The dataset will be extended for algorithms like averaging and
|
|
polynomial interpolation in the dataset.
|
|
|
|
ezcGraphChart
|
|
Abstract class, which handles the global charts options like background
|
|
colors or images. Aggregates ezcGraphChartElement for configurable sub
|
|
elements.
|
|
|
|
ezcGraphChartPie
|
|
Extends ezcGraphChart for pie charts. Offers additional options for pie
|
|
charts like tresh hold under which data is combined.
|
|
|
|
ezcGraphChartLine
|
|
Extends ezcGraphChart for line charts. Additionally contains two objects
|
|
to represent and configure the axes.
|
|
|
|
ezcGraphChartElement
|
|
Abstract class to define the interface how to access the configuration
|
|
directives of different chart elements like axes and legend.
|
|
|
|
ezcGraphChartElementLegend
|
|
Offers configuration options for the charts legend like background color,
|
|
position and size.
|
|
|
|
ezcGraphChartElementAxe
|
|
Offers the axes configuration options like scaling, lines within the
|
|
graph and labeling. Can do automagic scaling of the axes.
|
|
|
|
ezcGraphRenderer
|
|
Abstract class which transforms the chart elements like pie segments,
|
|
bars, texts and lines to image primitives depending on the renderer.
|
|
|
|
ezcGraphRenderer2D
|
|
Creates image primitives for the chart elements considered as two
|
|
dimensional.
|
|
|
|
ezcGraphRenderer3D
|
|
Creates image primitives for the chart elements considered as three
|
|
dimensional.
|
|
|
|
ezcGraphDriver
|
|
Offers methods to draw image primitives like textboxes, arcs, rectangles,
|
|
polygons and lines. Needs to be extended for each output format.
|
|
|
|
ezcGraphDriverGD
|
|
Creates PNG images utilizing the GDlib bundled with PHP.
|
|
|
|
Implementation
|
|
==============
|
|
|
|
ezcGraphManagager
|
|
-----------------
|
|
|
|
Offers factory methods to build up the wanted graph, containing a chart of a
|
|
selected type, a renderer and a driver. Once aggregated the manager offers an
|
|
unified interface to configure all parts of the graph.
|
|
|
|
The manager can aggregate a finite count of datasets and forwards the to the
|
|
chart. The chart builds the visual chart elements like pie segments, lines or
|
|
bars, which are forwarded to the renderer. They are transformed to image
|
|
primitives accoringly to the selected renderer.
|
|
|
|
The datasets can be configured individually by the user of the package.
|
|
|
|
API example
|
|
-----------
|
|
|
|
The following example shows how to use the class: ::
|
|
|
|
<?php
|
|
|
|
$pie = new ezcGraphPieChart();
|
|
$pie->options->backgroundImage = 'background.png';
|
|
$pie->options->border->color = '#ff0000';
|
|
$pie->title = 'Apple Pie';
|
|
|
|
$pie->data['humanoids'] = new ezcGraphArrayDataSet(
|
|
array( 'monkey' => 54, 'ape' => 37, 'human' => 9 ) // adds a new data set
|
|
);
|
|
$pie->data['humanoids']->color['monkey'] = 'blueish'; // setting datapoint color
|
|
$pie->data['humanoids']->highlight( 'monkey' ); // chart type dependent
|
|
|
|
|
|
$line = new ezcGraphLineChart();
|
|
$line->options->backgroundColor = 'pink';
|
|
|
|
$line->data['income'] = new ezcGraphArrayDataSet(
|
|
array( 1990 => 5, 5.1, 5.4, 5.3, 6.9 )
|
|
);
|
|
$line->data['income']->color = 'blue';
|
|
$line->data['income']->symbol = ezcGraph::diamond;
|
|
|
|
$line->data['incomeWithTax'] = new ezcGraphArrayDataSet(
|
|
array( 1990 => 4.9, 5.0, 5.2, 5.1, 6.4 )
|
|
);
|
|
$line->data['incomeWithTax']->color = 'red';
|
|
$line->data['incomeWithTax']->symbol = ezcGraph::squareWithChupi;
|
|
|
|
// Create a new averaging line
|
|
$line->data['averageIncome'] = new ezcGraphAverageDatasSet( $line->data['income'] [, options] );
|
|
|
|
$line->renderer = new ezcGraphRenderer2D();
|
|
$line->driver = new ezcGraphGDDriver();
|
|
|
|
$line->render( 500, 200, 'file.png' );
|
|
|
|
?>
|
|
|
|
|
|
|
|
..
|
|
Local Variables:
|
|
mode: rst
|
|
fill-column: 79
|
|
End:
|
|
vim: et syn=rst tw=79
|