/** * Generate * Generates the charts from the data passed into it * * @param chart Array of data and labels * * @return Void Doesn't return anything. */ function Generate($chart) { $this->graph->add( $PlotArea =& new Image_Graph_Plotarea() ); $this->graph->_outputImage = false; switch ($chart['chart_type']) { case 'column': // Add grid $PlotArea->addGridY(new Image_Graph_Grid_Lines()); $PlotArea->addGridX(new Image_Graph_Grid_Lines()); $labels = array_shift($chart['chart_data']); $legend_labels = array(); $DataSets = array(); foreach ($chart['chart_data'] as $data) { $Dataset =& new Image_Graph_Dataset_Trivial(); foreach ($data as $key => $value) { if (!is_numeric($value)) { if ($key == 0) { $legend_labels[] = $value; } continue; } $Dataset->addPoint($key, $value); } $DataSets[] =& $Dataset; } $PlotMultiple =& new Image_Graph_Plot_Bar_Multiple($DataSets); $PlotMultiple->spacing(3); $PlotMultiple->setXValueWidth(1); $Plot1 =& $PlotArea->addPlot($PlotMultiple); $noBorder =& new Image_Graph_Line_Solid(); $noBorder->setThickness(0); // create a Y data value marker $Marker =& $Plot1->add(new Image_Graph_Marker_Value(IMAGE_GRAPH_VALUE_Y)); //$Marker->setFillColor(0xFFFFFF); $Marker->setBorderColor(0xFFFFFF); $PointingMarker =& $Plot1->add(new Image_Graph_Marker_Pointing(0,-10, $Marker)); $PointingMarker->setLineStyle($noBorder); $Plot1->setMarker($PointingMarker); $FillArray =& new Image_Graph_Fill_Array(); foreach ($this->colors as $color) { $FillArray->add(new Image_Graph_Fill_Gradient(IMAGE_GRAPH_GRAD_RADIAL, eval("return 0x{$color};"), eval("return 0x{$color};"), 200)); } $Plot1->setFillStyle($FillArray); $AxisX =& $PlotArea->getAxis(IMAGE_GRAPH_AXIS_X); $AxisX->setDataPreprocessor( new Image_Graph_DataPreprocessor_Array( $labels ) ); $thickAxis =& new Image_Graph_Line_Solid(); $thickAxis->setThickness(2); $AxisX->setLineStyle($thickAxis); $AxisX->setLabelInterval(1); $AxisY =& $PlotArea->getAxis(IMAGE_GRAPH_AXIS_Y); $AxisY->setLineStyle($thickAxis); $AxisY->setDataPreprocessor(new Image_Graph_DataPreprocessor_Function("FormatNumber")); $this->graph->done(); $canvas =& $this->graph->_canvas(); $canvas =& $this->DrawTitle($canvas,$this->title,true); $this->DrawLegend($canvas,$legend_labels,'column'); break; // case column case 'pie': $DataSet =& new Image_Graph_Dataset_Trivial(); $Plot1 =& $PlotArea->addPlot(new Image_Graph_Plot_Pie($DataSet)); $points = $chart['chart_data'][1]; $labels = $chart['chart_data'][0]; foreach ($points as $key => $value) { if (!is_numeric($value)) { continue; } $DataSet->addPoint($labels[$key], $value); } $PlotArea->hideAxis(); // create a Y data value marker $Marker =& $Plot1->add(new Image_Graph_Marker_Value(IMAGE_GRAPH_VALUE_X)); $Marker->setFillColor(0xFFFFFF); $Marker->setBorderColor(0xFFFFFF); $PointingMarker =& $Plot1->add(new Image_Graph_Marker_Pointing_Angular(40, $Marker)); $Plot1->setMarker($PointingMarker); $FillArray =& new Image_Graph_Fill_Array(); foreach ($this->colors as $color) { $FillArray->add(new Image_Graph_Fill_Gradient(IMAGE_GRAPH_GRAD_RADIAL, eval("return 0x{$color};"), eval("return 0x{$color};"), 200)); } $Plot1->setFillStyle($FillArray); $Plot1->Radius = 80; $this->graph->done(); $canvas =& $this->graph->_canvas(); $this->DrawLegend($canvas,$labels,'pie'); $canvas =& $this->DrawTitle($canvas,$this->title); break; // case pie } $this->canvas =& $canvas; }