PHP Pear Image_Graph
#apt-get install php-pear
#pear install Numbers_Words-0.16.1
#pear install Numbers_Roman-1.0.2
#pear install Image_Canvas-0.3.1
#pear install Image_Graph-0.7.2
(Download TrueType core fonts from http://corefonts.sourceforge.net/)
cp *.ttf /usr/share/php/Image/Canvas/Fonts

<?php
require_once '../../includes/include.php';
require_once 'Image/Graph.php';
require_once 'Image/Canvas.php';
date_default_timezone_set('America/New_York');
$customer_id = $_REQUEST[customer_id];
if (!$customer_id) exit();
$customer_data = get_order_customer_report_xy($customer_id);
if (!$customer_data) exit();
$Canvas =& Image_Canvas::factory('png', array('width' => 575, 'height' => 280));
// create the graph
$Graph =& Image_Graph::factory('graph', $Canvas);
// add a TrueType font
$Font =& $Graph->addNew('font', 'DejaVuSans');
$Font->setSize(8);
$Graph->setFont($Font);
// create the plotarea layout
$Graph->add(
Image_Graph::vertical(
Image_Graph::factory('title', array('', 11)),
Image_Graph::vertical(
$Plotarea = Image_Graph::factory('plotarea'),
$Legend = Image_Graph::factory('legend'),
90
),
5
)
);
$Legend->setPlotarea($Plotarea);
// create a grid and assign it to the secondary Y axis
$GridY2 =& $Plotarea->addNew('bar_grid', IMAGE_GRAPH_AXIS_Y_SECONDARY);
$GridY2->setFillStyle(
Image_Graph::factory(
'gradient',
array(IMAGE_GRAPH_GRAD_VERTICAL, 'white', 'lightgrey')
)
);
list($year, $month) = split('[-.-]', $customer_data[0][1]);
$start=mktime(0,0,0,$month,1,$year);
$today=mktime(0,0,0,date('m'),1,date('Y'));
$interv=12-$month+(12*(date('Y')-$year-1))+date('m')+1;
// create a line plot
$Dataset1 =& Image_Graph::factory('dataset');
$Dataset2 =& Image_Graph::factory('dataset');
$max = 0;
for ($i=0; $i<count($customer_data); $i++) {
if ($max<$customer_data[$i][0]) $max=$customer_data[$i][0];
}
for ($i=0; $i<$interv; $i++) {
$Dataset2->addPoint(date('m/y', mktime(0,0,0,$month,1,$year)), 0);
$month++;
}
for ($i=0; $i<count($customer_data); $i++) {
list($year, $month) = split('[-.-]', $customer_data[$i][1]);
$Dataset1->addPoint(date('m/y', mktime(0,0,0,$month,1,$year)), $customer_data[$i][0]);
}
$Plot1 =& $Plotarea->addNew('bar', array(&$Dataset1));
$Plot1->setLineColor('red');
$Plot2 =& $Plotarea->addNew(
'Image_Graph_Plot_Area',
$Dataset2,
IMAGE_GRAPH_AXIS_Y_SECONDARY
);
$Plot2->setLineColor('gray');
$Plot2->setFillColor('white@0.2');
$AxisX =& $Plotarea->getAxis(IMAGE_GRAPH_AXIS_X);
$labInterv = floor($interv / 13);
$AxisX->setLabelInterval($labInterv);
$AxisY =& $Plotarea->getAxis(IMAGE_GRAPH_AXIS_Y);
$AxisY->setTitle('Orders', 'vertical');
$AxisYsecondary =& $Plotarea->getAxis(IMAGE_GRAPH_AXIS_Y_SECONDARY);
// output the Graph
$Graph->done();
db_close()
?>