PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Images » Image_Graph » Bug #4333

Legend division by zero error on PieChart

Details

Submitted2005-05-12 08:24 UTC
Fromattb2 at fw dot hu
Assignednosey
StatusClosed
PackageImage_Graph
PHP Version4.3.10
OSDebian Sarge
Roadmaps(Not assigned)

Comments

[2005-05-12 08:24 UTC] attb2 at fw dot hu

Description:
------------
If I want to display a Legend from a PieChart Image_Graph throws a
"division by zero" error.

I traced down this error:
/Graph/Plot.php
function _legendSample($x, $y, &$font) { Line: 719
[...]
$point = $this->_getMarkerData($point, $nextPoint, $prevPoint, $i);
[...]
}

In this method calling '$i' variable has no value! (Not initialized.)

Example is below. (Example is assembled from tutorial and
GraphPite site informations.)

Thanks

Attila Szuts

Reproduce code:
---------------
<?php

require_once("Image/Graph.php");

// -----------------------------------------------------------------------------

$startdate = date('Y-m-01');
$enddate = date('Y-m-d');
$month = date('Y-m');

$total_income = 541; // Income
$total_outcome = 19; // Outcome

// -----------------------------------------------------------------------------
// Graph.

$Graph =& new Image_Graph(400, 300);

// Font.
$Arial =& $Graph->addFont(new Image_Graph_Font_TTF("arial.ttf"));
$Arial->setSize(11);

// Cimke font
$ArialSolid =& $Graph->addFont(new Image_Graph_Font_TTF("arial.ttf"));
$ArialSolid->setSize(10);

$Graph->add(
new Image_Graph_Layout_Vertical(
new Image_Graph_Layout_Vertical(
new Image_Graph_Title(sprintf("Income / Outcome %s (Ft)", $month), $Arial),
$PlotArea = new Image_Graph_Plotarea(),
5
),
$Legend = new Image_Graph_Legend(), // Legend
70
)
);
$Graph->hideLogo();
$PlotArea->hideAxis();

// Legend
$Legend->setPlotArea($PlotArea);
//$Legend->setFillColor(IMAGE_GRAPH_WHITE);
//$Legend->setFont($ArialSolid);

// Adatok.
//$DataSet =& new Image_Graph_Dataset_Random(10, 2, 15, true);
$DataSet =& new Image_Graph_Dataset_Trivial();
$DataSet->addPoint('Income', $total_income);
$DataSet->addPoint('Outcome', $total_outcome);
$Plot =& $PlotArea->addPlot(new Image_Graph_Plot_Pie($DataSet));

// create a X data value marker
$Marker =& $Plot->add(new Image_Graph_Marker_Value(IMAGE_GRAPH_VALUE_X));
$Marker->setFont($ArialSolid);

// fill it with white
$Marker->setFillColor(IMAGE_GRAPH_WHITE);
// and use black border
$Marker->setBorderColor(IMAGE_GRAPH_BLACK);
// create a pin-point marker type
$PointingMarker =& $Plot->add(new Image_Graph_Marker_Pointing_Angular(30, $Marker));
// and use the marker on the plot
$Plot->setMarker($PointingMarker);

$Plot->Radius = 2;
$Plot->setLineColor(IMAGE_GRAPH_GRAY);

$GREEN =& $Graph->newColor(IMAGE_GRAPH_GREEN, 100);
$RED =& $Graph->newColor(IMAGE_GRAPH_RED, 100);

$FillArray =& new Image_Graph_Fill_Array();
$Plot->setFillStyle($FillArray);
$FillArray->add($GREEN);
$FillArray->add($RED);

$Graph->done();

// -----------------------------------------------------------------------------

?>

Expected result:
----------------
A nice Piechart with Legends.
If you comment out the
$Legend->setPlotArea($PlotArea);
line a piechart will be displayed. (without Legend)

Actual result:
--------------
Warning: Division by zero in /mnt/work/lotimex/web/Graphs/Image/Graph/Plot/Pie.php on line 63

[2005-05-17 21:15 UTC] pear dot nosey at veggerby dot dk

This bug has been fixed in CVS.

In case this was a documentation problem, the fix will show up at the
end of next Sunday (CET) on pear.php.net.

In case this was a pear.php.net website problem, the change will show
up on the website in short time.

Thank you for the report, and for helping us make PEAR better.