/** * Gera um gráfico de linha * @param array $dados Array no formato array('Label' => array(pontos)) * @param string $tipo linha ou barra */ function grafico($dados, $tipo = 'linha') { require_once 'exemplos/graficos/pChart/class/pDraw.class.php'; require_once 'exemplos/graficos/pChart/class/pImage.class.php'; require_once 'exemplos/graficos/pChart/class/pData.class.php'; // precisamos ter dados para montar os gráficos $DataSet = new pData(); // Adicionando os pontos de um gráfico de linha // horas de trabalho na semana foreach ($dados as $label => $pontos) { $DataSet->addPoints($pontos, $label); } $DataSet->setAxisName(0, 'Horas'); // unidade $DataSet->setAxisUnit(0, 'h'); $settings = array("R" => 229, "G" => 11, "B" => 11, "Alpha" => 80); $DataSet->setPalette("Joao", $settings); // Labels $DataSet->addPoints(array('Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'), 'Dias'); $DataSet->setSerieDescription('Dias', 'Dias da Semana'); $DataSet->setAbscissa('Dias'); $Graph = new pImage(700, 230, $DataSet); $Graph->setFontProperties(array('FontName' => 'exemplos/graficos/pChart/fonts/verdana.ttf', 'FontSize' => 8)); $Graph->setGraphArea(50, 40, 670, 190); $scale = array('GridR' => 150, 'GridG' => 150, 'GridB' => 150, 'DrawSubTicks' => true, 'CycleBackground' => true); $Graph->drawScale($scale); if ($tipo == 'linha') { $Graph->drawLineChart(); } else { $Graph->drawBarChart(); } $Graph->drawLegend(540, 25, array('Style' => LEGEND_ROUND, 'Mode' => LEGEND_VERTICAL)); $Graph->drawText(60, 20, "Horas Trabalhadas"); $Graph->autoOutput(); }
function index() { $width = 600; $height = 230; /* Create and populate the pData object */ $MyData = new pData(); $MyData->addPoints(array(-4, VOID, VOID, 12, 8, 3), "Female"); $MyData->addPoints(array(3, 12, 15, 8, 5, -5), "Male"); //$MyData->addPoints(array(2,0,5,18,19,22),"Probe 3"); $MyData->setSerieTicks("Male", 4); $MyData->setAxisName(0, "Number of males, females"); $MyData->addPoints(array("Jan", "Feb", "Mar", "Apr", "May", "Jun"), "Labels"); $MyData->setSerieDescription("Labels", "Months"); $MyData->setAbscissa("Labels"); /* Create the pChart object */ $myPicture = new pImage($width, $height, $MyData); /* Draw the background */ $Settings = array("R" => 170, "G" => 183, "B" => 87, "Dash" => 1, "DashR" => 190, "DashG" => 203, "DashB" => 107); $myPicture->drawFilledRectangle(0, 0, $width, $height, $Settings); /* Overlay with a gradient */ $Settings = array("StartR" => 219, "StartG" => 231, "StartB" => 139, "EndR" => 1, "EndG" => 138, "EndB" => 68, "Alpha" => 50); $myPicture->drawGradientArea(0, 0, $width, $height, DIRECTION_VERTICAL, $Settings); //$myPicture->drawGradientArea(0,0,700,20,DIRECTION_VERTICAL,array("StartR"=>0,"StartG"=>0,"StartB"=>0,"EndR"=>50,"EndG"=>50,"EndB"=>50,"Alpha"=>80)); /* Add a border to the picture */ $myPicture->drawRectangle(0, 0, $width - 1, $height - 1, array("R" => 0, "G" => 0, "B" => 0)); /* Write the picture title */ //$myPicture->setFontProperties(array("FontName"=>pClass."fonts/Silkscreen.ttf","FontSize"=>6)); //$myPicture->drawText(10,13,"drawBarChart() - draw a bar chart",array("R"=>255,"G"=>255,"B"=>255)); /* Write the chart title */ $myPicture->setFontProperties(array("FontName" => pClass . "fonts/Forgotte.ttf", "FontSize" => 11)); $myPicture->drawText(250, 55, "Average time to find a set", array("FontSize" => 20, "Align" => TEXT_ALIGN_BOTTOMMIDDLE)); /* Draw the scale and the 1st chart */ $myPicture->setGraphArea(60, 60, 450, 190); $myPicture->drawFilledRectangle(60, 60, 450, 190, array("R" => 255, "G" => 255, "B" => 255, "Surrounding" => -200, "Alpha" => 10)); $myPicture->drawScale(array("DrawSubTicks" => TRUE)); $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); $myPicture->setFontProperties(array("FontName" => pClass . "fonts/pf_arma_five.ttf", "FontSize" => 10)); $myPicture->drawBarChart(array("DisplayValues" => TRUE, "DisplayColor" => DISPLAY_AUTO, "Rounded" => TRUE, "Surrounding" => 30)); //$myPicture->drawBarChart(array("DisplayValues"=>TRUE,"DisplayColor"=>DISPLAY_AUTO,"Surrounding"=>30)); $myPicture->setShadow(FALSE); /* Draw the scale and the 2nd chart */ /* $myPicture->setGraphArea(500,60,670,190); $myPicture->drawFilledRectangle(500,60,670,190,array("R"=>255,"G"=>255,"B"=>255,"Surrounding"=>-200,"Alpha"=>10)); $myPicture->drawScale(array("Pos"=>SCALE_POS_TOPBOTTOM,"DrawSubTicks"=>TRUE)); $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); $myPicture->drawBarChart(); $myPicture->setShadow(FALSE); */ /* Write the chart legend */ //$myPicture->drawLegend(510,205,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL)); $myPicture->drawLegend(500, 105, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_VERTICAL)); /* Render the picture (choose the best way) */ $myPicture->stroke(); }
function renderChart($chartType, $title, $prepData, $legend) { $width = 800; $height = 500; $titleHeight = 20; /* * Create a dataset we can use */ $dataSet = array_values($prepData); $imgData = new pData(); if ($chartType == "bar") { $imgData->addPoints($dataSet, "data"); $imgData->addPoints($legend, "legend"); $imgData->setAbscissa("legend"); $imgData->setPalette("data", array("R" => 0, "G" => 108, "B" => 171, "Alpha" => 100)); $img = new pImage($width, $height, $imgData); $img->drawGradientArea(0, $titleHeight, $width, $height, DIRECTION_VERTICAL, array("StartR" => 200, "StartG" => 200, "StartB" => 200, "EndR" => 18, "EndG" => 52, "EndB" => 86, "Alpha" => 100)); $img->drawGradientArea(0, 0, $width, $titleHeight, DIRECTION_VERTICAL, array("StartR" => 18, "StartG" => 52, "StartB" => 86, "EndR" => 50, "EndG" => 50, "EndB" => 50, "Alpha" => 100)); $img->setFontProperties(array("FontName" => "images/ttf/liberation-sans/LiberationSans-Bold.ttf", "FontSize" => 10)); $img->drawText($width / 2, 13, $title, array("Align" => TEXT_ALIGN_MIDDLEMIDDLE, "R" => 255, "G" => 255, "B" => 255)); $img->setFontProperties(array("R" => 255, "G" => 255, "B" => 255, "FontName" => "images/ttf/liberation-sans/LiberationSans-Regular.ttf", "FontSize" => 9)); $img->setGraphArea(60, $titleHeight + 20, $width - 50, $height - 30); $img->drawScale(array("GridR" => 200, "GridG" => 200, "GridB" => 200, "Mode" => SCALE_MODE_START0)); $img->drawBarChart(array("Gradient" => TRUE, "GradientMode" => GRADIENT_EFFECT_CAN, "DisplayPos" => LABEL_POS_INSIDE, "DisplayValues" => TRUE, "Surrounding" => 10)); } elseif ($chartType == "3Dpie") { $imgData->addPoints($dataSet, "data"); $imgData->addPoints($legend, "legend"); $imgData->setAbscissa("legend"); $img = new pImage($width, $height, $imgData, TRUE); $PieChart = new pPie($img, $imgData); $img->drawGradientArea(0, $titleHeight, $width, $height, DIRECTION_VERTICAL, array("StartR" => 200, "StartG" => 200, "StartB" => 200, "EndR" => 18, "EndG" => 52, "EndB" => 86, "Alpha" => 100)); $img->drawGradientArea(0, 0, $width, $titleHeight, DIRECTION_VERTICAL, array("StartR" => 18, "StartG" => 52, "StartB" => 86, "EndR" => 50, "EndG" => 50, "EndB" => 50, "Alpha" => 100)); $img->setFontProperties(array("FontName" => "images/ttf/liberation-sans/LiberationSans-Bold.ttf", "FontSize" => 10)); $img->drawText($width / 2, 13, $title, array("Align" => TEXT_ALIGN_MIDDLEMIDDLE, "R" => 255, "G" => 255, "B" => 255)); $PieChart->setSliceColor(0, array("R" => 0, "G" => 108, "B" => 171)); $PieChart->setSliceColor(1, array("R" => 205, "G" => 159, "B" => 0)); $PieChart->setSliceColor(2, array("R" => 0, "G" => 171, "B" => 0)); $PieChart->setSliceColor(3, array("R" => 171, "G" => 28, "B" => 0)); $img->setFontProperties(array("FontName" => "images/ttf/liberation-sans/LiberationSans-Regular.ttf", "FontSize" => 9)); $PieChart->draw3DPie($width / 2, $height / 2 + $titleHeight, array("Radius" => $width / 2 - 100, "SecondPass" => TRUE, "DrawLabels" => TRUE, "WriteValues" => TRUE, "Precision" => 2, "ValueR" => 0, "ValueG" => 0, "ValueB" => 0, "ValueAlpha" => 100, "SkewFactor" => 0.6, "LabelR" => 255, "LabelG" => 255, "LabelB" => 255, "LabelAlpha" => 100)); } # if if (isset($img)) { ob_start(); $img->render(NULL); $imageString = ob_get_clean(); $dimensions = $this->_svcImageUtil->getImageDimensions($imageString); return array('metadata' => $dimensions, 'content' => $imageString); } else { return false; } # else }
/** * * @param array $data * @param string $title * @return resource */ public static function columnChart(array $data, $title, $scaleConfig = array(), $legendConfig = array()) { $fontsChart = APPLICATION_PATH . '/../library/pChart/fonts/verdana.ttf'; App_Util_Chart::loadClass(array('pData', 'pDraw', 'pImage')); $myData = new pData(); foreach ($data['series'] as $c => $serie) { $serieId = 'Serie' . $c; $myData->addPoints($serie, $serieId); $myData->setSerieDescription($serieId, $data['names'][$c]); $myData->setSerieOnAxis($serieId, 0); } $myData->addPoints($data['labels'], 'Absissa'); $myData->setAbscissa('Absissa'); $myData->setAxisPosition(0, AXIS_POSITION_LEFT); $myPicture = new pImage(700, 500, $myData); $Settings = array("R" => 250, "G" => 250, "B" => 250); $myPicture->drawFilledRectangle(0, 0, self::$_width, self::$_height, $Settings); $myPicture->drawRectangle(0, 0, self::$_width - 1, self::$_height - 1, array("R" => 0, "G" => 0, "B" => 0)); $myPicture->setFontProperties(array("FontName" => $fontsChart . "verdana.ttf", "FontSize" => 14)); $myPicture->setGraphArea(50, 50, self::$_width - 1, self::$_height - 100); $myPicture->setFontProperties(array("R" => 0, "G" => 0, "B" => 0, "FontName" => $fontsChart, "FontSize" => 10)); $Settings = array("Pos" => SCALE_POS_LEFTRIGHT, "Mode" => SCALE_MODE_START0, "LabelingMethod" => LABELING_ALL, "GridR" => 255, "GridG" => 255, "GridB" => 255, "GridAlpha" => 50, "TickR" => 0, "TickG" => 0, "TickB" => 0, "TickAlpha" => 50, "CycleBackground" => 1, "LabelRotation" => 45, "DrawXLines" => 1, "DrawSubTicks" => 1, "SubTickR" => 255, "SubTickG" => 0, "SubTickB" => 0, "SubTickAlpha" => 50, "DrawYLines" => ALL); foreach ($scaleConfig as $c => $v) { $Settings[$c] = $v; } $myPicture->drawScale($Settings); $Config = array("DisplayValues" => 1, "AroundZero" => 1, "Gradient" => TRUE, "GradientMode" => GRADIENT_EFFECT_CAN); $myPicture->drawBarChart($Config); $pos = floor(strlen($title) / 2); $start = 350 - $pos * 9; $myPicture->setFontProperties(array('FontName' => $fontsChart, 'FontSize' => 14)); $myPicture->drawText($start, 25, $title, array('R' => 0, 'G' => 0, 'B' => 0)); $Config = array("FontR" => 0, "FontG" => 0, "FontB" => 0, "FontName" => $fontsChart, "FontSize" => 8, "Margin" => 6, "Alpha" => 30, "BoxSize" => 5, "Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL); foreach ($legendConfig as $c => $v) { $Config[$c] = $v; } $myPicture->drawLegend(480, 40, $Config); ob_start(); imagepng($myPicture->Picture); $image = ob_get_clean(); return $image; }
function func_bargraphGenerate($student_id, $time, $type, $basepath, $success, $r = "", $g = "", $b = "", $name) { $bookIdResult = $this->func_getBookId('1,2'); $bookID = array(); foreach ($bookIdResult as $book) { $bookID[] = $book['book_id']; } $getActivityTypeIdResult = $this->func_getActivityTypeId('WORD HUNT'); foreach ($getActivityTypeIdResult as $activityTypeId) { $activityTypeId = $activityTypeId['activity_type_id']; } $getActivityIdResult = $this->func_getActivityId($bookID, $activityTypeId); $actId = array(); foreach ($getActivityIdResult as $activityId) { $actId[] = $activityId['activity_id']; } $actNewId = implode(',', $actId); $k = 0; $j = 0; for ($i = 0; $i < 5; $i = $i + 1) { $date[$k] = date("Y-m-d", strtotime("-{$i} day")); $dateRec[] = date('M d', strtotime("-{$i} day")); $k = $k + 1; } $successaccessmentResult = $this->fun_getAssmentResult($student_id, $actNewId, '', $date, "word_hunt", $success); $totalaccessmentResult = $this->fun_getAssmentResult($student_id, $actNewId, '', $date, "word_hunt", '0,1'); for ($i = 0; $i < 5; $i = $i + 1) { $j = $i; if ($totalaccessmentResult['0']['count_' . $j] == "0") { $totalaccessmentResult['0']['count_' . $j] = 1; } $per[$i] = $successaccessmentResult['0']['count_' . $j] / $totalaccessmentResult['0']['count_' . $j] * 100; } $MyData = new pData(); $MyData->addPoints($per, "Server A"); $MyData->setAxisName(0, "Percentage"); $MyData->addPoints(array_reverse($dateRec), "Months"); $MyData->setSerieDescription("Months", "Month"); $MyData->setAbscissa("Months"); $myPicture = new pImage(350, 230, $MyData); /* Turn of Antialiasing */ $myPicture->Antialias = FALSE; /* Add a border to the picture */ $myPicture->drawGradientArea(0, 0, 400, 230, DIRECTION_VERTICAL, array("StartR" => 255, "StartG" => 255, "StartB" => 255, "EndR" => 255, "EndG" => 255, "EndB" => 255, "Alpha" => 100)); // $myPicture->drawRectangle(0,0,400,229,array("R"=>0,"G"=>0,"B"=>0)); /* Set the default font */ $myPicture->setFontProperties(array("FontName" => $basepath . "Silkscreen.ttf", "FontSize" => 6)); /* Define the chart area */ $myPicture->setGraphArea(60, 40, 350, 200); /* Draw the scale */ $scaleSettings = array("GridR" => 300, "GridG" => 300, "GridB" => 200, "DrawSubTicks" => FALSE, "CycleBackground" => FALSE, "Pos" => SCALE_POS_LEFTRIGHT, "Mode" => SCALE_MODE_MANUAL, "LabelingMethod" => LABELING_ALL); $myPicture->drawScale($scaleSettings); /* Turn on shadow computing */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); /* Draw the chart */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); $settings = array("Surrounding" => -30, "InnerSurrounding" => 30, "Mode" => 0); $myPicture->drawBarChart($settings, $r, $g, $b); /* Render the picture (choose the best way) */ $picname = $student_id . '_' . $name . '_' . $time . '.png'; $this->fun_getImageLog($student_id, $picname, $type, $time, $name); $myPicture->render("uploads/graph/" . $picname); }
protected function plotBarChart(pImage $picture, $options = array()) { $picture->setShadow(FALSE); $Settings = array("Pos" => SCALE_POS_LEFTRIGHT, "Mode" => SCALE_MODE_FLOATING, "DrawXLines" => FALSE, "DrawYLines" => ALL, "GridTicks" => 1, "GridR" => 168, "GridG" => 186, "GridB" => 203, "GridAlpha" => 30, "AxisR" => 40, "AxisG" => 40, "AxisB" => 43, "AxisAlpha" => 100, "TickR" => 40, "TickG" => 40, "TickB" => 43, "TickAlpha" => 50, "DrawSubTicks" => 1, "SubTickR" => 168, "SubTickG" => 186, "SubTickB" => 203, "SubTickAlpha" => 100, "DrawArrows" => false, "CycleBackground" => false, "LabelRotation" => 90); $Settings = array_merge($Settings, $options); $picture->drawScale($Settings); $options = array('AroundZero' => true, 'Draw0Line' => true); $picture->drawBarChart($options); $Config = array("FontName" => sfConfig::get('sf_web_dir') . "/fonts/Ubuntu-R.ttf", "FontSize" => 6, "FontR" => 40, "FontG" => 40, "FontB" => 43, "Margin" => 6, "Alpha" => 100, "BoxSize" => 5, "Style" => LEGEND_NOBORDER, "Mode" => LEGEND_VERTICAL, "Family" => LEGEND_FAMILY_LINE); $picture->drawLegend(655, 50, $Config); return $picture; }
include "../class/pData.class.php"; include "../class/pDraw.class.php"; include "../class/pImage.class.php"; /* Create and populate the pData object */ $MyData = new pData(); $MyData->loadPalette("../palettes/blind.color", TRUE); $MyData->addPoints(array(150, 220, 300, 250, 420, 200, 300, 200, 110), "Server A"); $MyData->addPoints(array("January", "February", "March", "April", "May", "Juin", "July", "August", "September"), "Months"); $MyData->setSerieDescription("Months", "Month"); $MyData->setAbscissa("Months"); /* Create the floating 0 data serie */ $MyData->addPoints(array(60, 80, 20, 40, 40, 50, 90, 30, 100), "Floating 0"); $MyData->setSerieDrawable("Floating 0", FALSE); /* Create the pChart object */ $myPicture = new pImage(700, 230, $MyData); /* Set the default font */ $myPicture->setFontProperties(array("FontName" => "../fonts/Forgotte.ttf", "FontSize" => 10, "R" => 110, "G" => 110, "B" => 110)); /* Write the title */ $myPicture->drawText(10, 13, "Net Income 2k8"); /* Set the graphical area */ $myPicture->setGraphArea(50, 30, 680, 180); /* Draw the scale */ $AxisBoundaries = array(0 => array("Min" => 0, "Max" => 500)); $myPicture->drawScale(array("InnerTickWidth" => 0, "OuterTickWidth" => 0, "Mode" => SCALE_MODE_MANUAL, "ManualScale" => $AxisBoundaries, "LabelRotation" => 45, "DrawXLines" => FALSE, "GridR" => 0, "GridG" => 0, "GridB" => 0, "GridTicks" => 0, "GridAlpha" => 30, "AxisAlpha" => 0)); /* Turn on shadow computing */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); /* Draw the chart */ $settings = array("Floating0Serie" => "Floating 0", "Surrounding" => 10); $myPicture->drawBarChart($settings); /* Render the picture (choose the best way) */ $myPicture->autoOutput("pictures/example.drawBarChart.span.png");
/* CAT:Bar Chart */ /* pChart library inclusions */ include "../class/pData.class.php"; include "../class/pDraw.class.php"; include "../class/pImage.class.php"; /* Create and populate the pData object */ $MyData = new pData(); $MyData->addPoints(array(13251, 4118, 3087, 1460, 1248, 156, 26, 9, 8), "Hits"); $MyData->setAxisName(0, "Hits"); $MyData->addPoints(array("Firefox", "Chrome", "Internet Explorer", "Opera", "Safari", "Mozilla", "SeaMonkey", "Camino", "Lunascape"), "Browsers"); $MyData->setSerieDescription("Browsers", "Browsers"); $MyData->setAbscissa("Browsers"); $MyData->setAbscissaName("Browsers"); $MyData->setAxisDisplay(0, AXIS_FORMAT_METRIC, 1); /* Create the pChart object */ $myPicture = new pImage(500, 500, $MyData); $myPicture->drawGradientArea(0, 0, 500, 500, DIRECTION_VERTICAL, array("StartR" => 240, "StartG" => 240, "StartB" => 240, "EndR" => 180, "EndG" => 180, "EndB" => 180, "Alpha" => 100)); $myPicture->drawGradientArea(0, 0, 500, 500, DIRECTION_HORIZONTAL, array("StartR" => 240, "StartG" => 240, "StartB" => 240, "EndR" => 180, "EndG" => 180, "EndB" => 180, "Alpha" => 20)); $myPicture->setFontProperties(array("FontName" => "../fonts/pf_arma_five.ttf", "FontSize" => 6)); /* Draw the chart scale */ $myPicture->setGraphArea(100, 30, 480, 480); $myPicture->drawScale(array("CycleBackground" => TRUE, "DrawSubTicks" => TRUE, "GridR" => 0, "GridG" => 0, "GridB" => 0, "GridAlpha" => 10, "Pos" => SCALE_POS_TOPBOTTOM)); // /* Turn on shadow computing */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); /* Draw the chart */ $myPicture->drawBarChart(array("DisplayPos" => LABEL_POS_INSIDE, "DisplayValues" => TRUE, "Rounded" => TRUE, "Surrounding" => 30)); /* Write the legend */ $myPicture->drawLegend(570, 215, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL)); /* Render the picture (choose the best way) */ $myPicture->autoOutput("pictures/example.drawBarChart.vertical.png");
foreach ($arrSeriesY2 as $serie) { $myData->setSerieDrawable($serie, FALSE); } } $arrDisplayValues = array("DisplayValues" => FALSE); if ($plot == 2) { $arrDisplayValues["DisplayValues"] = TRUE; } /* Enable shadow computing */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); /* Draw the stacked area chart */ if ($chartType == 'area2') { $myPicture->drawStackedAreaChart(); } else { if ($chartType == 'bar') { $myPicture->drawBarChart(array("Surrounding" => -15, "InnerSurrounding" => 15) + $arrDisplayValues); } else { if ($chartType == 'bar2') { $myPicture->drawStackedBarChart(); } else { $myPicture->drawLineChart(); if ($plot > 0) { $myPicture->drawPlotChart($arrDisplayValues + array("PlotSize" => $weight * 1.5 + 3, "PlotBorder" => TRUE, "BorderSize" => 0.8, "BorderAlpha" => 75, "Surrounding" => -30)); } } } } // 隐藏主坐标轴数据,画副坐标轴数据 if (isset($arrSeriesY2)) { foreach ($arrSeries as $serie) { if (in_array($serie, $arrSeriesY2)) {
/* pChart library inclusions */ include "../class/pData.class.php"; include "../class/pDraw.class.php"; include "../class/pImage.class.php"; /* Create and populate the pData object */ $MyData = new pData(); $MyData->addPoints(array(13251, 4118, 3087, 1460, 1248, 156, 26, 9, 8), "Hits"); $MyData->setAxisName(0, "Hits"); $MyData->addPoints(array("Firefox", "Chrome", "Internet Explorer", "Opera", "Safari", "Mozilla", "SeaMonkey", "Camino", "Lunascape"), "Browsers"); $MyData->setSerieDescription("Browsers", "Browsers"); $MyData->setAbscissa("Browsers"); /* Create the pChart object */ $myPicture = new pImage(500, 500, $MyData); $myPicture->drawGradientArea(0, 0, 500, 500, DIRECTION_VERTICAL, array("StartR" => 240, "StartG" => 240, "StartB" => 240, "EndR" => 180, "EndG" => 180, "EndB" => 180, "Alpha" => 100)); $myPicture->drawGradientArea(0, 0, 500, 500, DIRECTION_HORIZONTAL, array("StartR" => 240, "StartG" => 240, "StartB" => 240, "EndR" => 180, "EndG" => 180, "EndB" => 180, "Alpha" => 20)); $myPicture->setFontProperties(array("FontName" => "../fonts/pf_arma_five.ttf", "FontSize" => 6)); /* Draw the chart scale */ $myPicture->setGraphArea(100, 30, 480, 480); $myPicture->drawScale(array("CycleBackground" => TRUE, "DrawSubTicks" => TRUE, "GridR" => 0, "GridG" => 0, "GridB" => 0, "GridAlpha" => 10, "Pos" => SCALE_POS_TOPBOTTOM)); /* Turn on shadow computing */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); /* Create the per bar palette */ $Palette = array("0" => array("R" => 188, "G" => 224, "B" => 46, "Alpha" => 100), "1" => array("R" => 224, "G" => 100, "B" => 46, "Alpha" => 100), "2" => array("R" => 224, "G" => 214, "B" => 46, "Alpha" => 100), "3" => array("R" => 46, "G" => 151, "B" => 224, "Alpha" => 100), "4" => array("R" => 176, "G" => 46, "B" => 224, "Alpha" => 100), "5" => array("R" => 224, "G" => 46, "B" => 117, "Alpha" => 100), "6" => array("R" => 92, "G" => 224, "B" => 46, "Alpha" => 100), "7" => array("R" => 224, "G" => 176, "B" => 46, "Alpha" => 100)); /* Draw the chart */ $myPicture->drawBarChart(array("DisplayPos" => LABEL_POS_INSIDE, "DisplayValues" => TRUE, "Rounded" => TRUE, "Surrounding" => 30, "OverrideColors" => $Palette)); /* Write the legend */ $myPicture->drawLegend(570, 215, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL)); /* Write a label over the chart */ $myPicture->writeLabel("Hits", array(1, 4)); /* Render the picture (choose the best way) */ $myPicture->autoOutput("pictures/example.drawBarChart.vertical.png");
function PlotLine($rowX, $rowY, $name, $ch) { include $_SERVER['DOCUMENT_ROOT'] . "/TBSIM/Lib/class/pData.class.php"; include $_SERVER['DOCUMENT_ROOT'] . "/TBSIM/Lib/class/pDraw.class.php"; include $_SERVER['DOCUMENT_ROOT'] . "/TBSIM/Lib/class/pImage.class.php"; include $_SERVER['DOCUMENT_ROOT'] . "/TBSIM/Lib/class/pPie.class.php"; //************************************** $myData = new pData(); $myData->addPoints($rowX, "Serie1"); $myData->setSerieDescription("Serie1", $name); //$myData->setSerieOnAxis("Serie1",0); $myData->addPoints($rowY, "Absissa"); $myData->setAbscissa("Absissa"); //$myData->addPoints(array("January","February","March","April","May","June","July","August"),"Absissa"); //$myData->setAbscissa("Absissa"); $myData->setAxisPosition(0, AXIS_POSITION_LEFT); //$myData->setAxisName(0,"1st axis"); $myData->setAxisUnit(0, ""); $myPicture = new pImage(700, 230, $myData); $Settings = array("R" => 240, "G" => 242, "B" => 241, "Dash" => 1, "DashR" => 260, "DashG" => 262, "DashB" => 261); $myPicture->drawFilledRectangle(0, 0, 700, 230, $Settings); $Settings = array("StartR" => 252, "StartG" => 255, "StartB" => 254, "EndR" => 252, "EndG" => 255, "EndB" => 254, "Alpha" => 50); $myPicture->drawGradientArea(0, 0, 700, 230, DIRECTION_VERTICAL, $Settings); $myPicture->drawRectangle(0, 0, 699, 229, array("R" => 0, "G" => 0, "B" => 0)); $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 50, "G" => 50, "B" => 50, "Alpha" => 20)); $myPicture->setFontProperties(array("FontName" => "fonts/Forgotte.ttf", "FontSize" => 14)); $TextSettings = array("Align" => TEXT_ALIGN_MIDDLEMIDDLE, "R" => 252, "G" => 252, "B" => 252, "DrawBox" => 1, "BoxAlpha" => 30); //$myPicture->drawText(350,25,$name,$TextSettings); $myPicture->setShadow(FALSE); $myPicture->setGraphArea(50, 50, 675, 190); //$myPicture->setFontProperties(array("R"=>0,"G"=>0,"B"=>0,"FontName"=>"fonts/pf_arma_five.ttf","FontSize"=>6)); $Settings = array("Pos" => SCALE_POS_LEFTRIGHT, "Mode" => SCALE_MODE_FLOATING, "LabelingMethod" => LABELING_ALL, "GridR" => 255, "GridG" => 255, "GridB" => 255, "GridAlpha" => 50, "TickR" => 0, "TickG" => 0, "TickB" => 0, "TickAlpha" => 50, "LabelRotation" => 0, "CycleBackground" => 1, "DrawXLines" => 1, "DrawSubTicks" => 1, "SubTickR" => 255, "SubTickG" => 0, "SubTickB" => 0, "SubTickAlpha" => 50, "DrawYLines" => ALL); $myPicture->drawScale($Settings); $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 50, "G" => 50, "B" => 50, "Alpha" => 10)); $Config = ""; if ($ch == 1) { $myPicture->drawSplineChart($Config); } if ($ch == 2) { $myPicture->drawBarChart($Config); } if ($ch == 3) { $myPicture->drawLineChart($Config); } if ($ch == 4) { $myPicture->drawPlotChart($Config); } if ($ch == 5) { $myPicture->drawStepChart($Config); } if ($ch == 6) { $myPicture->drawAreaChart($Config); } if ($ch == 7) { $myPicture->drawFilledSplineChart($Config); } if ($ch == 8) { $myPicture->drawFilledStepChart($Config); } if ($ch == 9) { $myPicture->drawStackedAreaChart($Config); } $Config = array("FontR" => 0, "FontG" => 0, "FontB" => 0, "FontName" => "fonts/pf_arma_five.ttf", "FontSize" => 6, "Margin" => 6, "Alpha" => 30, "BoxSize" => 5, "Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL); $myPicture->drawLegend(563, 16, $Config); $myPicture->stroke(); }
function block_mystats_quiz_chart($avg, $high, $strAvg, $strHigh, $strTitle, $strScale, $userid) { $myQuizData = new pData(); $myQuizData->addPoints(array($avg), "Serie1"); $myQuizData->setSerieDescription("Serie1", $strAvg); $myQuizData->setSerieOnAxis("Serie1", 0); $myQuizData->addPoints(array($high), "Serie2"); $myQuizData->setSerieDescription("Serie2", $strHigh); $myQuizData->setSerieOnAxis("Serie2", 0); $myQuizData->addPoints(array(" "), "Absissa"); $myQuizData->setAbscissa("Absissa"); $myQuizData->setAxisPosition(0, AXIS_POSITION_LEFT); $myQuizData->setAxisName(0, $strScale); $myQuizData->setAxisUnit(0, ""); $myQuizPicture = new pImage(350, 230, $myQuizData); $quizSettings = array("R" => 255, "G" => 255, "B" => 255); $myQuizPicture->drawFilledRectangle(0, 0, 350, 230, $quizSettings); $myQuizPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 50, "G" => 50, "B" => 50, "Alpha" => 20)); $myQuizPicture->setFontProperties(array("FontName" => "../blocks/mystats/pChart2.1.3/fonts/GeosansLight.ttf", "FontSize" => 14)); $TextSettings = array("Align" => TEXT_ALIGN_TOPLEFT, "R" => 0, "G" => 0, "B" => 0); $myQuizPicture->drawText(25, 25, $strTitle, $TextSettings); $myQuizPicture->setShadow(FALSE); $myQuizPicture->setGraphArea(25, 70, 325, 210); $myQuizPicture->setFontProperties(array("R" => 0, "G" => 0, "B" => 0, "FontName" => "../blocks/mystats/pChart2.1.3/fonts/pf_arma_five.ttf", "FontSize" => 8)); $AxisBoundaries = array(0 => array("Min" => 0, "Max" => 110), 1 => array("Min" => 00, "Max" => 1)); $quizSettings = array("Pos" => SCALE_POS_TOPBOTTOM, "Mode" => SCALE_MODE_MANUAL, "ManualScale" => $AxisBoundaries, "LabelingMethod" => LABELING_ALL, "GridR" => 255, "GridG" => 255, "GridB" => 255, "GridAlpha" => 50, "TickR" => 0, "TickG" => 0, "TickB" => 0, "TickAlpha" => 50, "LabelRotation" => 0, "CycleBackground" => 1, "DrawXLines" => 1, "DrawSubTicks" => 1, "SubTickR" => 255, "SubTickG" => 0, "SubTickB" => 0, "SubTickAlpha" => 50, "DrawYLines" => ALL); $myQuizPicture->drawScale($quizSettings); $myQuizPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 50, "G" => 50, "B" => 50, "Alpha" => 10)); $quizConfig = array("DisplayValues" => 1, "Rounded" => 1, "AroundZero" => 1); $myQuizPicture->drawBarChart($quizConfig); $quizConfig = array("R" => 0, "G" => 0, "B" => 0, "Alpha" => 50, "AxisID" => 0, "Ticks" => 4, "Caption" => "Threshold"); $myQuizPicture->drawThreshold(0, $quizConfig); $quizConfig = array("FontR" => 0, "FontG" => 0, "FontB" => 0, "FontName" => "../blocks/mystats/pChart2.1.3/fonts/pf_arma_five.ttf", "FontSize" => 8, "Margin" => 6, "Alpha" => 30, "BoxSize" => 5, "Style" => LEGEND_ROUND, "Mode" => LEGEND_VERTICAL, "Family" => LEGEND_FAMILY_CIRCLE); $myQuizPicture->drawLegend(240, 16, $quizConfig); $imgName = sha1($userid . $strTitle) . '.png'; $myQuizPicture->Render('../blocks/mystats/img/' . $imgName); return '<img src="../blocks/mystats/img/' . $imgName . '" alt="' . $strAvg . ': ' . $avg . ', ' . $strHigh . ': ' . $high . '">'; }
private function drawBarChart($filename, $yAxisLabel, $dataSeries, $labelSeries) { /* Create and populate the pData object */ $MyData = new pData(); $MyData->addPoints($dataSeries, "Members"); $MyData->setAxisName(0, "Members"); $MyData->addPoints($labelSeries, "Languages"); $MyData->setSerieDescription("Languages", "Languages"); $MyData->setAbscissa("Languages"); /* Create the pChart object */ $myPicture = new pImage(400, 250, $MyData, true); //$myPicture->drawGradientArea(0,0,500,500,DIRECTION_VERTICAL,array("StartR"=>240,"StartG"=>240,"StartB"=>240,"EndR"=>180,"EndG"=>180,"EndB"=>180,"Alpha"=>100)); //$myPicture->drawGradientArea(0,0,500,500,DIRECTION_HORIZONTAL,array("StartR"=>240,"StartG"=>240,"StartB"=>240,"EndR"=>180,"EndG"=>180,"EndB"=>180,"Alpha"=>20)); $myPicture->setFontProperties(array("FontName" => "../lib/pchart-2.1.3/fonts/verdana.ttf", "FontSize" => 6)); /* Draw the chart scale */ $myPicture->setGraphArea(70, 20, 380, 200); $myPicture->drawScale(array("CycleBackground" => TRUE, "LabelRotation" => 30, "DrawSubTicks" => TRUE, "GridR" => 0, "GridG" => 0, "GridB" => 0, "GridAlpha" => 10)); /* Turn on shadow computing */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); /* Create the per bar palette */ $Palette = array("0" => array("R" => 188, "G" => 224, "B" => 46, "Alpha" => 100), "1" => array("R" => 224, "G" => 100, "B" => 46, "Alpha" => 100), "2" => array("R" => 224, "G" => 214, "B" => 46, "Alpha" => 100), "3" => array("R" => 46, "G" => 151, "B" => 224, "Alpha" => 100), "4" => array("R" => 176, "G" => 46, "B" => 224, "Alpha" => 100), "5" => array("R" => 224, "G" => 46, "B" => 117, "Alpha" => 100), "6" => array("R" => 92, "G" => 224, "B" => 46, "Alpha" => 100), "7" => array("R" => 224, "G" => 176, "B" => 46, "Alpha" => 100), "8" => array("R" => 120, "G" => 59, "B" => 19, "Alpha" => 100), "9" => array("R" => 10, "G" => 79, "B" => 39, "Alpha" => 100), "10" => array("R" => 100, "G" => 200, "B" => 59, "Alpha" => 100)); /* Draw the chart */ $myPicture->drawBarChart(array("DisplayPos" => LABEL_POS_OUTSIDE, "DisplayValues" => TRUE, "Surrounding" => 30, "OverrideColors" => $Palette)); /* Write the legend */ $myPicture->drawLegend(570, 215, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL)); $myPicture->render($filename . ".png"); }
/* CAT:Bar Chart */ /* pChart library inclusions */ include "../class/pData.class.php"; include "../class/pDraw.class.php"; include "../class/pImage.class.php"; /* Create and populate the pData object */ $MyData = new pData(); $MyData->addPoints(array(60, 30, 10), "Answers"); $MyData->setAxisName(0, "Answers (%)"); $MyData->addPoints(array("I do agree ", "I disagree ", "No opinion "), "Options"); $MyData->setAbscissa("Options"); /* Create the pChart object */ $myPicture = new pImage(500, 220, $MyData); /* Write the chart title */ $myPicture->setFontProperties(array("FontName" => "../fonts/Forgotte.ttf", "FontSize" => 15)); $myPicture->drawText(20, 34, "Q: Flexibility is a key point of this library", array("FontSize" => 20)); /* Define the default font */ $myPicture->setFontProperties(array("FontName" => "../fonts/pf_arma_five.ttf", "FontSize" => 6)); /* Set the graph area */ $myPicture->setGraphArea(70, 60, 480, 200); $myPicture->drawGradientArea(70, 60, 480, 200, DIRECTION_HORIZONTAL, array("StartR" => 200, "StartG" => 200, "StartB" => 200, "EndR" => 240, "EndG" => 240, "EndB" => 240, "Alpha" => 30)); /* Draw the chart scale */ $scaleSettings = array("DrawXLines" => FALSE, "Mode" => SCALE_MODE_START0, "GridR" => 0, "GridG" => 0, "GridB" => 0, "GridAlpha" => 10, "Pos" => SCALE_POS_TOPBOTTOM); $myPicture->drawScale($scaleSettings); /* Turn on shadow computing */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); /* Draw the chart */ $myPicture->drawBarChart(array("Rounded" => TRUE, "Surrounding" => 30)); /* Render the picture (choose the best way) */ $myPicture->autoOutput("pictures/example.drawBarChart.poll.png");
public function actionGraph2() { /* Create and populate the pData object */ $MyData = new pData(); $MyData->addPoints(array(13251, 4118, 3087, 1460, 1248, 156, 26, 9, 8), "Hits"); $MyData->setAxisName(0, "Hits"); $MyData->addPoints(array("Firefox", "Chrome", "Internet Explorer", "Opera", "Safari", "Mozilla", "SeaMonkey", "Camino", "Lunascape"), "Browsers"); $MyData->setSerieDescription("Browsers", "Browsers"); $MyData->setAbscissa("Browsers"); /* Create the pChart object */ $myPicture = new pImage(500, 500, $MyData); $myPicture->drawGradientArea(0, 0, 500, 500, DIRECTION_VERTICAL, array("StartR" => 240, "StartG" => 240, "StartB" => 240, "EndR" => 180, "EndG" => 180, "EndB" => 180, "Alpha" => 100)); $myPicture->drawGradientArea(0, 0, 500, 500, DIRECTION_HORIZONTAL, array("StartR" => 240, "StartG" => 240, "StartB" => 240, "EndR" => 180, "EndG" => 180, "EndB" => 180, "Alpha" => 20)); $myPicture->setFontProperties(array("FontName" => "../fonts/pf_arma_five.ttf", "FontSize" => 6)); /* Draw the chart scale */ $myPicture->setGraphArea(100, 30, 480, 480); $myPicture->drawScale(array("CycleBackground" => TRUE, "DrawSubTicks" => TRUE, "GridR" => 0, "GridG" => 0, "GridB" => 0, "GridAlpha" => 10, "Pos" => SCALE_POS_TOPBOTTOM)); // /* Turn on shadow computing */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); /* Draw the chart */ $myPicture->drawBarChart(array("DisplayPos" => LABEL_POS_INSIDE, "DisplayValues" => TRUE, "Rounded" => TRUE, "Surrounding" => 30)); /* Write the legend */ $myPicture->drawLegend(570, 215, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL)); /* Render the picture (choose the best way) */ $myPicture->autoOutput("pictures/example.drawBarChart.vertical.png"); }
$description .= GetYearsDescription($years); $description .= " - (" . GetSeriesTotalSum($pChart, "Half") . "kpl)"; if (strlen($description) > 120) { $description = substr($description, strpos($description, "joissa")); } $pChartPicture->setFontProperties(array("FontSize" => 11)); $pChartPicture->drawText($width / 2, 45, $description, $TextSettings); $pChartPicture->setGraphArea(50, 55, $width - 25, $height - 75); $pChartPicture->setFontProperties(array("R" => 0, "G" => 0, "B" => 0, "FontName" => "pChart/fonts/arial.ttf", "FontSize" => 10)); $Settings = array("Pos" => SCALE_POS_LEFTRIGHT, "Mode" => SCALE_MODE_ADDALL_START0, "LabelingMethod" => LABELING_DIFFERENT, "GridR" => 240, "GridG" => 240, "GridB" => 240, "GridAlpha" => 50, "TickR" => 0, "TickG" => 0, "TickB" => 0, "TickAlpha" => 50, "LabelRotation" => 0, "CycleBackground" => 1, "DrawXLines" => 1, "DrawSubTicks" => 1, "SubTickR" => 255, "SubTickG" => 0, "SubTickB" => 0, "SubTickAlpha" => 50, "DrawYLines" => ALL); $pChartPicture->drawScale($Settings); $Config = array("DisplayValues" => 1, "AroundZero" => 1, "Gradient" => 1, "Surrounding" => -15, "InnerSurrounding" => 15); $pChartPicture->drawStackedBarChart($Config); $Config = array("FontR" => 0, "FontG" => 0, "FontB" => 0, "FontName" => "pChart/fonts/arial.ttf", "FontSize" => 10, "Margin" => 40, "Alpha" => 30, "BoxWidth" => 10, "BoxHeight" => 10, "Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL); $pChartPicture->drawLegend(50, $height - 40, $Config); $pChart->setSerieDrawable('Serie10', TRUE); for ($i = 0; $i < count($colours); $i++) { $pChart->setSerieDrawable("Serie{$i}", FALSE); } $pChartPicture->setGraphArea(50, 50, $width - 25, $height - 80); $pChartPicture->setFontProperties(array("R" => 0, "G" => 0, "B" => 0, "FontName" => "pChart/fonts/arialbd.ttf", "FontSize" => 10)); $pChartPicture->drawBarChart(array("DisplayValues" => TRUE, "DisplayColor" => array('R' => 0, 'G' => 0, 'B' => 0))); $pChartPicture->autoOutput($table . ".png"); function get_tile_total_count($tile_colour_results, $tile) { $tile_total = 0; for ($i = 0; $i < count($tile_colour_results[$tile]); $i++) { $tile_total += $tile_colour_results[$tile][$i]; } return $tile_total; }
function GetGraphImageTag($_data, $_texts, $_metric = true) { if (!StatisticProvider::$DrawChartImages || !function_exists("gd_info")) { return ""; } require_once LIVEZILLA_PATH . "_lib/trdp/pchart/class/pData.class.php"; require_once LIVEZILLA_PATH . "_lib/trdp/pchart/class/pDraw.class.php"; require_once LIVEZILLA_PATH . "_lib/trdp/pchart/class/pImage.class.php"; $MyData = new pData(); $dobject = array(); foreach ($_data as $obid => $values) { foreach ($values as $key => $val) { $values[$key] = round($val, 1); } $dv1[] = $values[0]; if (count($values) > 1) { $dv2[] = $values[1]; } if (count($values) > 2) { $dv3[] = $values[2]; } if (count($values) > 3) { $dv4[] = $values[3]; } $dobject[] = $obid; if (count($dobject) == 5) { break; } } $MyData->addPoints($dv1, $_texts[1] . " "); if (isset($dv2)) { $MyData->addPoints($dv2, $_texts[2] . " "); } if (isset($dv3)) { $MyData->addPoints($dv3, $_texts[3] . " "); } if (isset($dv4)) { $MyData->addPoints($dv4, $_texts[4] . " "); } $MyData->setAxisName(0, $_texts[0]); $MyData->setAxisDisplay(0, $_metric ? AXIS_FORMAT_METRIC : AXIS_FORMAT_RAW); $MyData->addPoints($dobject, "Groups"); $MyData->setSerieDescription("Groups", "Group"); $MyData->setAbscissa("Groups"); $myPicture = new pImage(630, 210, $MyData); $myPicture->Antialias = FALSE; $myPicture->setFontProperties(array("FontName" => LIVEZILLA_PATH . "_lib/trdp/pchart/fonts/arimo.ttf", "FontSize" => 8, "R" => 120, "G" => 120, "B" => 120)); $myPicture->setGraphArea(46, 0, 620, 160); $scaleSettings = array("GridR" => 200, "GridG" => 200, "GridB" => 200, "DrawSubTicks" => TRUE, "YMargin" => 12, "CycleBackground" => TRUE); $myPicture->drawScale($scaleSettings); $myPicture->drawLegend(40, 190, array("Style" => LEGEND_BOX, "Mode" => LEGEND_HORIZONTAL, "BoxSize" => 4, "R" => 200, "G" => 200, "B" => 200, "Surrounding" => 20, "Alpha" => 30)); $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); $settings = array("Surrounding" => -30, "InnerSurrounding" => 30, "DisplayValues" => TRUE); $myPicture->drawBarChart($settings); $file = PATH_STATS . $this->Type . "/temp.png"; $myPicture->render($file); return "<img src=\"data:image/png;base64," . IOStruct::ToBase64($file) . "\" />"; }
function pch_bar_graph($graph_type, $index, $data, $width, $height, $font, $antialiasing, $rgb_color = false, $xaxisname = "", $yaxisname = "", $show_values = false, $legend = array(), $fine_colors = array(), $water_mark = '', $font_size) { /* CAT: Vertical Bar Chart */ if (!is_array($legend) || empty($legend)) { unset($legend); } /* Create and populate the pData object */ $MyData = new pData(); $overridePalette = array(); foreach ($data as $i => $values) { $MyData->addPoints($values, $i); if (!empty($rgb_color)) { $MyData->setPalette($i, array("R" => $rgb_color[$i]['color']["R"], "G" => $rgb_color[$i]['color']["G"], "B" => $rgb_color[$i]['color']["B"], "BorderR" => $rgb_color[$i]['border']["R"], "BorderG" => $rgb_color[$i]['border']["G"], "BorderB" => $rgb_color[$i]['border']["B"], "Alpha" => $rgb_color[$i]['alpha'])); } // Assign cyclic colors to bars if are setted if ($fine_colors) { $c = 0; foreach ($values as $ii => $vv) { if (!isset($fine_colors[$c])) { $c = 0; } $overridePalette[$ii] = $fine_colors[$c]; $c++; } } else { $overridePalette = false; } } $MyData->setAxisName(0, $yaxisname); $MyData->addPoints($index, "Xaxis"); $MyData->setSerieDescription("Xaxis", $xaxisname); $MyData->setAbscissa("Xaxis"); /* Create the pChart object */ $myPicture = new pImage($width, $height, $MyData); /* Turn of Antialiasing */ $myPicture->Antialias = $antialiasing; /* Add a border to the picture */ //$myPicture->drawRectangle(0,0,$width,$height,array("R"=>0,"G"=>0,"B"=>0)); /* Turn on shadow computing */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); /* Set the default font */ $myPicture->setFontProperties(array("FontName" => $font, "FontSize" => $font_size)); /* Draw the scale */ // TODO: AvoidTickWhenEmpty = FALSE When the distance between two ticks will be less than 50 px // TODO: AvoidTickWhenEmpty = TRUE When the distance between two ticks will be greater than 50 px //Calculate the top margin from the size of string in each index $max_chars = 0; foreach ($index as $string_index) { if (empty($string_index)) { continue; } $len = strlen($string_index); if ($len > $max_chars) { $max_chars = $len; } } $margin_top = 10 * $max_chars; switch ($graph_type) { case "vbar": $scaleSettings = array("AvoidTickWhenEmpty" => FALSE, "AvoidGridWhenEmpty" => FALSE, "GridR" => 200, "GridG" => 200, "GridB" => 200, "DrawSubTicks" => TRUE, "CycleBackground" => TRUE, "Mode" => SCALE_MODE_START0, "LabelRotation" => 60); $margin_left = 40; $margin_top = 10; $margin_bottom = 10 * $max_chars; break; case "hbar": $scaleSettings = array("GridR" => 220, "GridG" => 220, "GridB" => 220, "DrawSubTicks" => TRUE, "CycleBackground" => TRUE, "Mode" => SCALE_MODE_START0, "Pos" => SCALE_POS_TOPBOTTOM, "LabelValuesRotation" => 60); $margin_left = 8 * $max_chars; $margin_top = 40; $margin_bottom = 10; break; } $water_mark_height = 0; $water_mark_width = 0; if (!empty($water_mark)) { $size_water_mark = getimagesize($water_mark); $water_mark_height = $size_water_mark[1]; $water_mark_width = $size_water_mark[0]; $myPicture->drawFromPNG($width - $water_mark_width, $height - $water_mark_height - $margin_bottom, $water_mark); } /* Define the chart area */ $myPicture->setGraphArea($margin_left, $margin_top, $width - $water_mark_width, $height - $margin_bottom); $myPicture->drawScale($scaleSettings); if (isset($legend)) { /* Write the chart legend */ $size = $myPicture->getLegendSize(array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL)); $myPicture->drawLegend($width - $size['Width'], 0, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL, "BoxWidth" => 10, "BoxHeight" => 10)); } /* Turn on shadow computing */ $myPicture->setShadow(TRUE, array("X" => 0, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); /* Draw the chart */ $settings = array("ForceTransparency" => "-1", "Gradient" => TRUE, "GradientMode" => GRADIENT_EFFECT_CAN, "DisplayValues" => $show_values, "DisplayZeroValues" => FALSE, "DisplayR" => 100, "DisplayG" => 100, "DisplayB" => 100, "DisplayShadow" => TRUE, "Surrounding" => 5, "AroundZero" => FALSE, "OverrideColors" => $overridePalette); $myPicture->drawBarChart($settings); /* Render the picture */ $myPicture->stroke(); }
/** * Helper method to draw bar graph * parameters have same meaning as displayGraph's parameters */ function displayBarGraph($fid, $frid, $labelElement, $dataElement, $operation, $graphOptions) { // getting data from DB if (is_int($frid) && $frid > 0) { $dbData = getData($frid, $fid); } else { $dbData = getData("", $fid); } foreach ($dbData as $entry) { // mayor - OR array of mayors if there's more than one in the dataset, depending on the one-to-may in a relationship $dataRawValue = display($entry, $dataElement); // city_name; $labelRawValue = display($entry, $labelElement); if (!is_array($dataRawValue) && $dataRawValue) { $dataRawValue = array($dataRawValue); } if (!is_array($labelRawValue)) { $labelRawValue = array($labelRawValue); } foreach ($labelRawValue as $thisLabelValue) { if ($dataPoints[$thisLabelValue]) { $dataPoints[$thisLabelValue] = array_merge($dataPoints[$thisLabelValue], $dataRawValue); } else { $dataPoints[$thisLabelValue] = $dataRawValue; } } } // Oct 29 Update for column heading for graphs: $elementHandler = xoops_getmodulehandler('elements', 'formulize'); $elementObject = $elementHandler->get($labelElement); $labelElement = $elementObject->getVar('ele_colhead') ? $elementObject->getVar('ele_colhead') : printSmart($elementObject->getVar('ele_caption')); $elementObject = $elementHandler->get($dataElement); $dataElement = $elementObject->getVar('ele_colhead') ? $elementObject->getVar('ele_colhead') : printSmart($elementObject->getVar('ele_caption')); // end of Update switch ($operation) { case "count": // count the values in each label of the array foreach (array_keys($dataPoints) as $key) { if (!empty($dataPoints[$key])) { $dataPoints[$key] = count($dataPoints[$key]); } else { $dataPoints[$key] = 0; } } if ($labelElement == $dataElement) { $dataElement = "count of " . $labelElement; } else { $dataElement = "count of " . $dataElement; } break; case "sum": case "display": // TODO: Check this! foreach ($dataPoints as $thisLabel => $theseValues) { $dataPoints[$thisLabel] = array_sum($theseValues); } $dataElement = ($operation == "display" ? "number of " : "sum of ") . $dataElement; break; case "count-unique": foreach ($dataPoints as $thisLabel => $theseValues) { $dataPoints[$thisLabel] = count(array_unique($theseValues)); } if ($dataElement == $labelElement) { $dataElement = "count of unique " . $labelElement; } else { $dataElement = "count of unique " . $dataElement; } break; default: echo "Sorry, the operation \"{$operation}\" for Bar graph is not supported at the moment!"; return; } // print("dataElement: ".$dataElement." "); // print("labelElement: ".$labelElement." "); // process the graph options // these defaults will be used, unless overwritten by values from the $graphOptions array $sizeMultiplier = sizeof(array_keys($dataPoints)); $BAR_THICKNESS = 40; $IMAGE_WIDTH = 600; $IMAGE_DEFAULT_WIDTH = $IMAGE_WIDTH; if ($sizeMultiplier > 1) { $IMAGE_HEIGHT = $BAR_THICKNESS * $sizeMultiplier / 0.5; } else { $IMAGE_HEIGHT = $BAR_THICKNESS * 4; } $IMAGE_DEFAULT_HEIGHT = $IMAGE_HEIGHT; $IMAGE_ORIENTATION = "vertical"; $BACKGROUND_R = 141; $BACKGROUND_G = 189; $BACKGROUND_B = 225; $BARCOLOR_R = 143; $BARCOLOR_G = 190; $BARCOLOR_B = 88; if (sizeof($graphOptions) > 0) { foreach ($graphOptions as $graphoption => $value) { switch ($graphoption) { case "width": $IMAGE_WIDTH = $value; break; case "height": $IMAGE_HEIGHT = $value; break; case "orientation": $IMAGE_ORIENTATION = $value; if ($IMAGE_ORIENTATION == "horizontal") { if ($IMAGE_HEIGHT == $IMAGE_DEFAULT_HEIGHT) { $IMAGE_HEIGHT = 500; } else { if ($IMAGE_WIDTH == $IMAGE_DEFAULT_WIDTH) { $IMAGE_WIDTH = $BAR_THICKNESS * $sizeMultiplier / 0.5; } } } break; case "backgroundcolor": // print_r($value); foreach ($value as $RGB => $colorvalue) { switch ($RGB) { case "R": $BACKGROUND_R = $colorvalue; break; case "G": $BACKGROUND_G = $colorvalue; break; case "B": $BACKGROUND_B = $colorvalue; break; default: echo "Please follow the correct format of backgroundcolor."; break; } } break; case "barcolor": // print_r($value); foreach ($value as $RGB => $colorvalue) { switch ($RGB) { case "R": $BARCOLOR_R = $colorvalue; break; case "G": $BARCOLOR_G = $colorvalue; break; case "B": $BARCOLOR_B = $colorvalue; break; default: echo "Please follow the correct format of backgroundcolor."; break; } } break; default: echo "Sorry, the graph option \"{$graphoption}\" for Bar graph is not supported at the moment!<br>"; break; } } } // reset width/height of the image in case the label is too long if (strlen($labelElement) * 4.5 >= $IMAGE_HEIGHT and $IMAGE_ORIENTATION == "vertical") { if ($IMAGE_HEIGHT == $IMAGE_DEFAULT_HEIGHT) { $IMAGE_HEIGHT = strlen($labelElement) * 5; } else { $labelElement = substr($labelElement, 0, $IMAGE_HEIGHT / 4.5 - 3) . "..."; } } elseif (strlen($dataElement) * 4.5 >= $IMAGE_HEIGHT and $IMAGE_ORIENTATION == "horizontal") { if ($IMAGE_HEIGHT == $IMAGE_DEFAULT_HEIGHT) { $IMAGE_HEIGHT = strlen($dataElement) * 5; } else { $dataElement = substr($dataElement, 0, $IMAGE_HEIGHT / 4.5 - 3) . "..."; } } elseif (strlen($labelElement) * 4.5 >= $IMAGE_WIDTH and $IMAGE_ORIENTATION == "horizontal") { if ($IMAGE_WIDTH == $IMAGE_DEFAULT_WIDTH) { $IMAGE_WIDTH = strlen($labelElement) * 5; } else { $labelElement = substr($labelElement, 0, $IMAGE_HEIGHT / 4.5 - 3) . "..."; } } elseif (strlen($dataElement) * 4.5 >= $IMAGE_WIDTH and $IMAGE_ORIENTATION == "vertical") { if ($IMAGE_WIDTH == $IMAGE_DEFAULT_WIDTH) { $IMAGE_WIDTH = strlen($dataElement) * 5; } else { $dataElement = substr($dataElement, 0, $IMAGE_HEIGHT / 4.5 - 3) . "..."; } } // Code straightly copied from pChart documentation to draw the graph $myData = new pData(); $myData->addPoints(array_values($dataPoints), $dataElement); $myData->setAxisName(0, $dataElement); $myData->addPoints(array_keys($dataPoints), $labelElement); $myData->setSerieDescription($labelElement, $labelElement); $myData->setAbscissa($labelElement); $myData->setAbscissaName($labelElement); // $myData -> setAxisDisplay(0, AXIS_FORMAT_CUSTOM, "YAxisFormat"); /* Create the pChart object */ $myPicture = new pImage($IMAGE_WIDTH, $IMAGE_HEIGHT, $myData); $myPicture->drawGradientArea(0, 0, $IMAGE_WIDTH, $IMAGE_HEIGHT, DIRECTION_VERTICAL, array("StartR" => $BACKGROUND_R, "StartG" => $BACKGROUND_G, "StartB" => $BACKGROUND_B, "EndR" => $BACKGROUND_R, "EndG" => $BACKGROUND_G, "EndB" => $BACKGROUND_B, "Alpha" => 100)); $myPicture->drawGradientArea(0, 0, 500, 500, DIRECTION_HORIZONTAL, array("StartR" => 240, "StartG" => 240, "StartB" => 240, "EndR" => 180, "EndG" => 180, "EndB" => 180, "Alpha" => 30)); $myPicture->setFontProperties(array("FontName" => "modules/formulize/libraries/pChart/fonts/arial.ttf", "FontSize" => 8)); $paddingtoLeft = $IMAGE_WIDTH * 0.15; $paddingtoTop = $IMAGE_HEIGHT * 0.2; if ($paddingtoTop > 50) { $paddingtoTop = 50; } /* Draw the chart scale */ $myPicture->setGraphArea($paddingtoLeft, $paddingtoTop, $IMAGE_WIDTH * 0.9, $IMAGE_HEIGHT * 0.88); if ($IMAGE_ORIENTATION == "vertical") { $myPicture->drawScale(array("CycleBackground" => TRUE, "DrawSubTicks" => TRUE, "GridR" => 0, "GridG" => 0, "GridB" => 0, "GridAlpha" => 10, "Pos" => SCALE_POS_TOPBOTTOM, "Mode" => SCALE_MODE_ADDALL_START0, "Decimal" => 0, "MinDivHeight" => 50)); } else { $myPicture->drawScale(array("CycleBackground" => TRUE, "DrawSubTicks" => TRUE, "GridR" => 0, "GridG" => 0, "GridB" => 0, "GridAlpha" => 10, "Mode" => SCALE_MODE_ADDALL_START0, "Decimal" => 0, "MinDivHeight" => 50)); } /* Turn on shadow computing */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); $Palette = array("0" => array("R" => $BARCOLOR_R, "G" => $BARCOLOR_G, "B" => $BARCOLOR_B, "Alpha" => 100)); for ($i = 1; $i < $sizeMultiplier; $i++) { $Palette[$i] = array("R" => $BARCOLOR_R, "G" => $BARCOLOR_G, "B" => $BARCOLOR_B, "Alpha" => 100); } // print_r($Palette); $myPicture->drawBarChart(array("OverrideColors" => $Palette)); /* Draw the chart */ $myPicture->drawBarChart(array("DisplayPos" => LABEL_POS_INSIDE, "DisplayValues" => TRUE, "Rounded" => TRUE, "Surrounding" => 30, "OverrideColors" => $Palette)); renderGraph($myPicture, $fid, $frid, $labelElement, $dataElement, $operation, $graphOptions); return; }
public function drawImage() { $qr_result = $this->values; //var_dump($qr_result);die(); $va_columns = $this->parameters["columns"]; $width = $this->parameters["width"]; $format = $this->parameters["format"]; $va_charting_columns = $this->parameters["charting_columns"]; $va_chart_types = $this->parameters["chart_types"]; $qr_result->seek(); if ($qr_result->numRows() == 0) { //if no result nothing to do return false; } // Loading chart format specifications // TODO : this coding part should be out of this function, sending values in 1 parameter if (is_array($va_chart_types)) { foreach ($va_chart_types as $type => $settings) { if ($type == $format) { $chart_type = $settings["googletype"]; $message = $settings["message"]; } } } /* Create and populate the pData object */ $MyData = new pData(); // Fulfillment of the results $va_row_no = 0; $va_content = array(); while ($qr_result->nextRow()) { $va_column_no = 0; foreach ($va_columns as $va_column => $va_column_label) { // only render columns specified in XML field charting_columns if (in_array($va_column_label, $va_charting_columns)) { $va_content[$va_column_label][$va_row_no] = $qr_result->get($va_column_label); $va_column_no++; } } $va_row_no++; } //var_dump($va_content); $va_row_no = 0; foreach ($va_charting_columns as $va_column_label) { //print "MyData->addPoints(\"".implode("\",\"",$va_content[$va_column_label])."\",\"".$va_column_label."\");<br/>"; $MyData->addPoints($va_content[$va_column_label], $va_column_label); if ($va_row_no == 0) { //print "MyData->setAbscissa(\"Labels\")<br/>"; $MyData->setAbscissa($va_column_label); } else { //print "MyData->setSerieDescription(\"".$va_column_label."\",\"".$va_column_label."\");<br/>"; $MyData->setSerieDescription($va_column_label, $va_column_label); } $va_row_no++; } /* Create the pChart object */ $myPicture = new pImage($width, $width / 2, $MyData); /* Set the common properties */ $myPicture->setFontProperties(array("FontName" => __CA_STATISTICSVIEWER_CLASS_DIR__ . "/fonts/verdana.ttf", "FontSize" => 0.014 * $width, "R" => 80, "G" => 80, "B" => 80)); $RectangleSettings = array("R" => 200, "G" => 200, "B" => 200); $myPicture->drawRectangle(1, 1, $width - 1, $width / 2 - 1, $RectangleSettings); $myPicture->setGraphArea($width / 9, $width / 10, $width * 0.75, $width * 0.4); // if not pie, draw the legend if ($format != "pie") { $myPicture->drawLegend($width * 0.8, $width * 0.05, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL)); } switch ($format) { case "bar": $myPicture->drawScale(array("Pos" => SCALE_POS_TOPBOTTOM, "DrawSubTicks" => FALSE, "RemoveYAxis" => TRUE, "GridAlpha" => 90, "DrawXLines" => FALSE)); $myPicture->drawBarChart(); break; case "column": $myPicture->drawScale(array("DrawSubTicks" => FALSE, "RemoveYAxis" => TRUE, "GridAlpha" => 90, "DrawXLines" => FALSE)); $myPicture->drawBarChart(); break; case "step": $myPicture->drawScale(array("DrawXLines" => FALSE, "DrawYLines" => ALL, "GridR" => 127, "GridG" => 127, "GridB" => 127)); $myPicture->drawStepChart(array("DisplayValues" => TRUE, "DisplayColor" => DISPLAY_AUTO)); break; case "area": $myPicture->drawScale(array("DrawXLines" => FALSE, "DrawYLines" => ALL, "GridR" => 127, "GridG" => 127, "GridB" => 127)); $myPicture->drawAreaChart(array("DisplayValues" => TRUE, "DisplayColor" => DISPLAY_AUTO)); break; case "pie": $PieChart = new pPie($myPicture, $MyData); $PieChart->draw2DPie(0.4 * $width, 0.25 * $width, array("WriteValues" => PIE_VALUE_PERCENTAGE, "ValueR" => 95, "ValueG" => 95, "ValueB" => 95, "ValuePadding" => 0.03 * $width, "Radius" => 0.16 * $width, "SecondPass" => TRUE, "Border" => TRUE, "Precision" => 0)); $myPicture->setShadow(FALSE); $myPicture->setFontProperties(array("FontName" => __CA_STATISTICSVIEWER_CLASS_DIR__ . "/fonts/verdana.ttf", "FontSize" => 0.018 * $width, "R" => 80, "G" => 80, "B" => 80)); $PieChart->drawPieLegend(0.8 * $width, 0.05 * $width, array("Style" => LEGEND_NOBORDER, "BoxSize" => $width / 60, "FontR" => 0, "FontG" => 0, "FontB" => 0)); break; case "line": default: $myPicture->drawScale(array("DrawXLines" => FALSE, "DrawYLines" => ALL, "GridR" => 127, "GridG" => 127, "GridB" => 127)); $myPicture->drawLineChart(array("DisplayValues" => TRUE, "DisplayColor" => DISPLAY_AUTO)); break; } /* Render the picture (choose the best way) */ $myPicture->autoOutput(); }
function generate_graph_image($outputfile) { // Create Graph Dataset and set axis attributes $graphData = new pData(); $graphData->setAxisName(0, $this->ytitle_actual); $graphData->addPoints($this->xlabels, "xaxis"); $graphData->setSerieDescription("xaxis", "xaxis"); $graphData->setAbscissa("xaxis"); $graphData->setXAxisName("ooo"); // Add each series of plot values to dataset, but Reportico will // duplicate series were the same data are displayed in different forms // so only add each unique series once $seriesadded = array(); foreach ($this->plot as $k => $v) { $series = $v["name"] . $k; $graphData->addPoints($v["data"], $series); $graphData->setSerieDescription($series, $v["legend"]); } /* $graph->xgrid->SetColor($this->xgridcolor); $graph->ygrid->SetColor($this->ygridcolor); */ /* switch ( $this->xgriddisplay ) { case "all": $graph->xgrid->Show(true,true); break; case "major": $graph->xgrid->Show(true,false); break; case "minor": $graph->xgrid->Show(false,true); break; case "none": default: $graph->xgrid->Show(false,false); break; } switch ( $this->ygriddisplay ) { case "all": $graph->ygrid->Show(true,true); break; case "major": $graph->ygrid->Show(true,false); break; case "minor": $graph->ygrid->Show(false,true); break; case "none": default: $graph->ygrid->Show(false,false); break; } */ /* $graph->xaxis->SetFont($fontfamilies[$xaxisfont],$fontstyles[$xaxisfontstyle], $xaxisfontsize); $graph->xaxis->SetColor($xaxiscolor,$xaxisfontcolor); $graph->yaxis->SetFont($fontfamilies[$yaxisfont],$fontstyles[$yaxisfontstyle], $yaxisfontsize); $graph->yaxis->SetColor($yaxiscolor,$yaxisfontcolor); $graph->xaxis->title->SetFont($fontfamilies[$xtitlefont],$fontstyles[$xtitlefontstyle], $xtitlefontsize); $graph->xaxis->title->SetColor($xtitlecolor); $graph->yaxis->title->SetFont($fontfamilies[$ytitlefont],$fontstyles[$ytitlefontstyle], $ytitlefontsize); $graph->yaxis->title->SetColor($ytitlecolor); $graph->xaxis->SetLabelAngle(90); $graph->xaxis->SetLabelMargin(15); $graph->yaxis->SetLabelMargin(15); $graph->xaxis->SetTickLabels($xlabels); $graph->xaxis->SetTextLabelInterval($xticklabint); $graph->yaxis->SetTextLabelInterval($yticklabint); $graph->xaxis->SetTextTickInterval($xtickinterval); $graph->yaxis->SetTextTickInterval($ytickinterval); */ /* if ( $gridpos == "front" ) $graph->SetGridDepth(DEPTH_FRONT); */ // Display the graph /*?$graph->Stroke();*/ $this->apply_defaults_internal(); //echo "oo<BR>"; //echo "<PRE>"; //var_dump($graphData); //echo $this->width."<BR>"; //echo $this->height_actual."<BR>"; $graphImage = new pImage($this->width_actual, $this->height_actual, $graphData); /* Turn of Antialiasing */ $graphImage->Antialias = TRUE; // Add gradient fill from chosen background color to white $startgradient = $this->htmltorgb("#ffffff"); $color = $this->htmltorgb($this->graphcolor); $graphImage->drawGradientArea(0, 0, $this->width_actual, $this->height_actual, DIRECTION_VERTICAL, array("StartR" => $startgradient[0], "StartG" => $startgradient[1], "StartB" => $startgradient[2], "EndR" => $color[0], "EndG" => $color[1], "EndB" => $color[2], "Alpha" => 100)); /* Add a border to the picture */ $graphImage->drawRectangle(0, 0, $this->width_actual - 1, $this->height_actual - 1, array("R" => 200, "G" => 200, "B" => 200)); /* Set the title font and draw it */ $graphImage->setFontProperties(array("FontName" => PCHARTFONTS_DIR . $this->titlefont, "FontSize" => $this->titlefontsize)); $this->titlecolor = $this->htmltorgb($this->titlecolor); $graphImage->drawText(20, 30, $this->title_actual, array("R" => $this->titlecolor[0], "G" => $this->titlecolor[1], "B" => $this->titlecolor[2])); /* Set the default font from the X title font */ $graphImage->setFontProperties(array("FontName" => PCHARTFONTS_DIR . $this->xtitlefont, "FontSize" => $this->xtitlefontsize)); /* Define the chart area */ $graphImage->setGraphArea($this->marginleft, $this->margintop, $this->width_actual - $this->marginright, $this->height_actual - $this->marginbottom); //$scaleSettings = array("GridR"=>200,"GridG"=>200,"GridB"=>200,"DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE,"LabelRotation"=>30); //$graphImage->drawScale($scaleSettings); //$settings = array("Surrounding"=>-30,"InnerSurrounding"=>30); //$graphImage->drawBarChart($settings); //$graphImage->autoOutput("pictures/example.drawBarChart.simple.png"); //return; // Before plotting a series ensure they are all not drawable. /// Plot the chart data $stackeddrawn = false; $stackedexists = false; $barexists = false; foreach ($this->plot as $k => $v) { if ($v["type"] == "STACKEDBAR") { $stackedexists = true; } if ($v["type"] == "STACKEDBAR" || $v["type"] == "BAR") { $barexists = true; } } /* Draw the scale */ $scaleSettings = array("GridR" => 200, "GridG" => 200, "GridB" => 200, "DrawSubTicks" => TRUE, "CycleBackground" => TRUE, "LabelRotation" => 30); // For stacked charts fix up the Max and Min values; if ($stackedexists) { $scaleMin = "Unknown"; $scaleMax = 0; foreach ($this->plot as $k => $v) { if ($v["type"] == "BAR" || $v["type"] == "STACKEDBAR") { $series = $v["name"] . $k; $min = $graphData->getMin($series); if ($scaleMin == "Unknown" || $min < $scaleMin) { $scaleMin = $min; } $scaleMax = $scaleMax + $graphData->getMax($series); } } if ($scaleMin > 0) { $scaleMin = 0; } $range = $scaleMax - $scaleMin; // Make scales based on 5% of the range of values $scaleMax = round($range * 0.05 + $scaleMax); if ($scaleMin < 0) { $scaleMin = $scaleMin - round($range * 0.05); } $AxisBoundaries = array(0 => array("Min" => $scaleMin, "Max" => $scaleMax)); $scaleSettings["Mode"] = SCALE_MODE_MANUAL; $scaleSettings["ManualScale"] = $AxisBoundaries; } else { if ($barexists) { $scaleMin = "Unknown"; $scaleMax = 0; foreach ($this->plot as $k => $v) { if ($v["type"] == "BAR" || $v["type"] == "STACKEDBAR") { $series = $v["name"] . $k; $min = $graphData->getMin($series); if ($scaleMin == "Unknown" || $min < $scaleMin) { $scaleMin = $min; } $max = $graphData->getMax($series); if ($scaleMax == "Unknown" || $max > $scaleMax) { $scaleMax = $max; } } } if ($scaleMin > 0) { $scaleMin = 0; } $range = $scaleMax - $scaleMin; // Make scales based on 5% of the range of values $scaleMax = round($range * 0.05 + $scaleMax); if ($scaleMin < 0) { $scaleMin = $scaleMin - round($range * 0.05); } $AxisBoundaries = array(0 => array("Min" => $scaleMin, "Max" => $scaleMax)); $scaleSettings["Mode"] = SCALE_MODE_MANUAL; $scaleSettings["ManualScale"] = $AxisBoundaries; } } $graphImage->drawScale($scaleSettings); // If there's a Pie chart we want to draw different legends $piechart = false; foreach ($this->plot as $k => $v) { foreach ($this->plot as $k1 => $v1) { $series = $v1["name"] . $k1; $graphData->setSerieDrawable($series, FALSE); } $series = $v["name"] . $k; $graphData->setSerieDrawable($series, TRUE); switch ($v["type"]) { case "PIE": $piechart = true; $pie = new pPie($graphImage, $graphData); //$pie->draw2DPie($width_actual / 2,$height_actual / 2,80,array("DrawLabels"=>TRUE,"LabelStacked"=>TRUE,"Border"=>TRUE)); $pie->draw2DPie($width_actual / 2, $height_actual / 2, 80, array("WriteValues" => PIE_VALUE_PERCENTAGE, "DataGapAngle" => 10, "DataGapRadius" => 6, "Border" => TRUE, "BorderR" => 255, "BorderG" => 255, "BorderB" => 255)); break; case "PIE3D": $piechart = true; $pie = new pPie($graphImage, $graphData); $pie->draw3DPie($this->width_actual / 2, $this->height_actual / 2, 80, array("SecondPass" => FALSE)); break; case "STACKEDBAR": case "BAR": if ($stackeddrawn) { break; } if ($barexists) { foreach ($this->plot as $k1 => $v1) { if ($v1["type"] == "BAR" || $v1["type"] == "STACKEDBAR") { $graphData->setSerieDrawable($v1["name"] . $k1, TRUE); } } } $stackeddrawn = true; $settings = array("Surrounding" => -30, "InnerSurrounding" => 30); if ($stackedexists) { $graphImage->drawStackedBarChart($settings); } else { $graphImage->drawBarChart($settings); } break; case "LINE": default: if (count($v["data"]) == 1) { $v["data"][] = 0; } $graphImage->drawLineChart($settings); break; } } $graphData->drawAll(); if ($piechart) { $pie->drawPieLegend($this->width_actual - 100, 30, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_VERTICAL)); } else { $graphImage->drawLegend($this->width_actual - 180, 22, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_VERTICAL)); } $graphImage->setShadow(TRUE, array("X" => 0, "Y" => 0, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); $graphImage->render($outputfile); return true; }
/* Draw the scale */ $myPicture->setFontProperties(array("FontName" => "../pChart/fonts/verdana.ttf", "FontSize" => 8)); $myPicture->setGraphArea(50, 60, 670, 340); $myPicture->drawFilledRectangle(50, 60, 670, 340, array("R" => 255, "G" => 255, "B" => 255, "Surrounding" => -200, "Alpha" => 10)); $axisBoundaries = array(0 => array("Min" => 0, "Max" => $yaxis - 1)); $scaleSettings = array("GridR" => 200, "GridG" => 200, "GridB" => 200, "DrawXLines" => FALSE, "MinDivHeight" => 50, "DrawSubTicks" => FALSE, "CycleBackground" => TRUE, "Mode" => SCALE_MODE_MANUAL, "ManualScale" => $axisBoundaries); $myPicture->drawScale($scaleSettings); /* Graph title */ //$myPicture->setFontProperties(array("FontName"=>"../pChart/fonts/Forgotte.ttf","FontSize"=>11)); //$myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); //$myPicture->drawText(50,52,"Chart subtitle",array("FontSize"=>20,"Align"=>TEXT_ALIGN_BOTTOMLEFT)); $Palette = array("0" => array("R" => 32, "G" => 74, "B" => 140, "Alpha" => 100), "1" => array("R" => 32, "G" => 74, "B" => 140, "Alpha" => 100), "2" => array("R" => 69, "G" => 43, "B" => 135, "Alpha" => 100), "3" => array("R" => 69, "G" => 43, "B" => 135, "Alpha" => 100)); /* Draw the bar chart chart */ $myPicture->setFontProperties(array("FontName" => "../pChart/fonts/verdana.ttf", "FontSize" => 10)); $data->setSerieDrawable("Last year", FALSE); $myPicture->drawBarChart(array("DisplayPos" => LABEL_POS_INSIDE, "DisplayValues" => TRUE, "DisplayOrientation" => ORIENTATION_HORIZONTAL, "Surrounding" => 30, "OverrideColors" => $Palette, "DisplayColor" => DISPLAY_MANUAL, "DisplayR" => 255, "DisplayG" => 255, "DisplayB" => 255)); $myPicture->drawThresholdArea($result->Benchmark_Low, $result->Benchmark_High, array("R" => 177, "G" => 221, "B" => 207, "Alpha" => 40)); /* Make sure all series are drawable before writing the scale */ $data->drawAll(); /* Write the legend */ //$myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); //$myPicture->drawLegend(580,35,array("Style"=>LEGEND_ROUND,"Alpha"=>20,"Mode"=>LEGEND_HORIZONTAL)); /* Render the picture (choose the best way) */ //$myPicture->autoOutput("pictures/example.combo.png"); $myPicture->Stroke(); } else { $entries = $tc->getEntries(); $metrics = $tc->getScored(); $option_values = ''; foreach ($entries as $entry) { $option_values .= '<option value="' . $entry->Account->Id . '">' . $entry->Account->Name . '</option>';
public function createCharts($lenght, $width = 1000, $height = 400, $statisticsUncategorized, $params, $options) { //print_r($params); //print_r($options); $year = date('Y'); $month = date('m'); $y = date('Y', strtotime('-' . ($lenght - 1) . ' month')); $m = date('m', strtotime('-' . ($lenght - 1) . ' month')); $user = Zend_Registry::get('User'); $invoicesDb = new Sales_Model_DbTable_Invoice(); $creditnotesDb = new Sales_Model_DbTable_Creditnote(); $turnover = array(); $turnoverCategories = array(); while ($y <= $year) { while ($m) { if ($y < $year || $m <= $month) { //Get invoices $ym = str_pad($m, 2, '0', STR_PAD_LEFT); $query = 'i.state = 105'; $query .= " AND (invoicedate BETWEEN '" . $y . "-" . $ym . "-" . "01' AND '" . $y . "-" . $ym . "-" . "31')"; $query .= ' AND i.clientid = ' . $user['clientid']; $query .= ' AND c.clientid = ' . $user['clientid']; if ($params['catid']) { $query = Zend_Controller_Action_HelperBroker::getStaticHelper('Query')->getQueryCategory($query, $params['catid'], $options['categories'], 'c'); } if ($params['country']) { $query = Zend_Controller_Action_HelperBroker::getStaticHelper('Query')->getQueryCountry($query, $params['country'], 'i'); } $invoices = $invoicesDb->fetchAll($invoicesDb->select()->from(array('i' => 'invoice'))->join(array('c' => 'contact'), 'i.contactid = c.id', array('catid'))->where($query ? $query : 1)->setIntegrityCheck(false)); //Get credit notes $ym = str_pad($m, 2, '0', STR_PAD_LEFT); $query = 'i.state = 105'; $query .= " AND (creditnotedate BETWEEN '" . $y . "-" . $ym . "-" . "01' AND '" . $y . "-" . $ym . "-" . "31')"; $query .= ' AND i.clientid = ' . $user['clientid']; $query .= ' AND c.clientid = ' . $user['clientid']; if ($params['catid']) { $query = Zend_Controller_Action_HelperBroker::getStaticHelper('Query')->getQueryCategory($query, $params['catid'], $options['categories'], 'c'); } if ($params['country']) { $query = Zend_Controller_Action_HelperBroker::getStaticHelper('Query')->getQueryCountry($query, $params['country'], 'i'); } $creditnotes = $creditnotesDb->fetchAll($creditnotesDb->select()->from(array('i' => 'creditnote'))->join(array('c' => 'contact'), 'i.contactid = c.id', array('catid'))->where($query ? $query : 1)->setIntegrityCheck(false)); $turnover[$y . $ym] = 0; $turnoverCategories[0][$y . $ym] = 0; //Calculate invoices foreach ($invoices as $invoice) { $turnover[$y . $ym] += $invoice->subtotal; if (isset($turnoverCategories[$invoice->catid][$y . $ym])) { $turnoverCategories[$invoice->catid][$y . $ym] += $invoice->subtotal; } else { $turnoverCategories[$invoice->catid][$y . $ym] = $invoice->subtotal; } } //Calculate credit notes foreach ($creditnotes as $creditnote) { $turnover[$y . $ym] -= $creditnote->subtotal; if (isset($turnoverCategories[$creditnote->catid][$y . $ym])) { $turnoverCategories[$creditnote->catid][$y . $ym] += $creditnote->subtotal; } else { $turnoverCategories[$creditnote->catid][$y . $ym] = $creditnote->subtotal; } } //Calculate categories foreach ($options['categories'] as $id => $category) { if (isset($turnoverCategories[$id][$y . $ym])) { $turnoverCategories[$id][$y . $ym] = round($turnoverCategories[$id][$y . $ym]); } else { $turnoverCategories[$id][$y . $ym] = 0; } } $turnover[$y . $ym] = round($turnover[$y . $ym]); $turnoverCategories[0][$y . $ym] = round($turnoverCategories[0][$y . $ym]); $dataDb = 'total:' . $turnover[$y . $ym] . ';'; foreach ($turnoverCategories as $key => $value) { if (isset($value[$y . $ym])) { $dataDb .= $key . ':' . $value[$y . $ym] . ';'; } } //$archiveDb->addArchive($y.$ym, $dataDb, $user['clientid']); $months[$y . $ym] = $y . '/' . $ym; } ++$m; if ($m > 12) { $m = 0; } } ++$y; $m = 1; } //Merge subcategories to main categories foreach ($turnoverCategories as $id => $values) { if (isset($options['categories'][$id]['childs']) && $id != $params['catid']) { foreach ($options['categories'][$id]['childs'] as $childId) { foreach ($values as $month => $value) { $turnoverCategories[$id][$month] += $turnoverCategories[$childId][$month]; } unset($turnoverCategories[$childId]); } } } //Remove empty arrays foreach ($turnoverCategories as $key => $values) { if (!array_sum($values)) { unset($turnoverCategories[$key]); } } require_once BASE_PATH . '/library/pChart/class/pData.class.php'; require_once BASE_PATH . '/library/pChart/class/pDraw.class.php'; require_once BASE_PATH . '/library/pChart/class/pImage.class.php'; //Turnover /* Create your dataset object */ $turnoverData = new pData(); /* Add data in your dataset */ $turnoverData->addPoints($turnover, 'Values'); $turnoverData->setAxisName(0, '€ / Netto'); /* Create the X serie */ $turnoverData->addPoints($months, 'Labels'); $turnoverData->setSerieDescription('Labels', 'Months'); $turnoverData->setAbscissa('Labels'); /* Create a pChart object and associate your dataset */ $turnover = new pImage($width, $height, $turnoverData); /* Turn off AA processing */ $turnover->Antialias = FALSE; /* Choose a nice font */ $turnover->setFontProperties(array('FontName' => BASE_PATH . '/library/pChart/fonts/verdana.ttf', 'FontSize' => 10)); /* Define the boundaries of the graph area */ $turnover->setGraphArea(75, 20, $width - 30, $height - 60); /* Draw the scale, keep everything automatic */ $turnover->drawScale(array('DrawSubTicks' => TRUE, 'Mode' => SCALE_MODE_START0, 'LabelRotation' => 45)); /* Draw the scale, keep everything automatic */ $settings = array('Gradient' => TRUE, 'GradientMode' => GRADIENT_EFFECT_CAN, 'DisplayPos' => LABEL_POS_INSIDE, 'DisplayValues' => TRUE, 'DisplayR' => 0, 'DisplayG' => 0, 'DisplayB' => 0, 'DisplayShadow' => TRUE, 'Surrounding' => 10); $turnover->drawBarChart($settings); /* Build the PNG file and send it to the web browser */ if (!file_exists(BASE_PATH . '/cache/chart/')) { mkdir(BASE_PATH . '/cache/chart/'); chmod(BASE_PATH . '/cache/chart/', 0777); } $turnover->Render(BASE_PATH . '/cache/chart/turnover-' . $width . '-' . $height . '.png'); //Turnover by categories /* Create your dataset object */ $turnoverCategoriesData = new pData(); /* Add data in your dataset */ $turnoverCategoriesTotal = array(); foreach ($turnoverCategories as $key => $value) { $turnoverCategoriesTotal[$key] = array_sum($value); } arsort($turnoverCategoriesTotal); foreach ($turnoverCategoriesTotal as $key => $value) { if ($key && isset($options['categories'][$key])) { $turnoverCategoriesData->addPoints($turnoverCategories[$key], $options['categories'][$key]['title']); } } if (isset($turnoverCategories[0])) { $turnoverCategoriesData->addPoints($turnoverCategories[0], $statisticsUncategorized); } $turnoverCategoriesData->setAxisName(0, '€ / Netto'); /* Create the X serie */ $turnoverCategoriesData->addPoints($months, 'Labels'); $turnoverCategoriesData->setSerieDescription('Labels', 'Months'); $turnoverCategoriesData->setAbscissa('Labels'); /* Create a pChart object and associate your dataset */ $turnoverCategories = new pImage($width, $height, $turnoverCategoriesData); /* Turn off AA processing */ $turnoverCategories->Antialias = FALSE; /* Choose a nice font */ $turnoverCategories->setFontProperties(array('FontName' => BASE_PATH . '/library/pChart/fonts/verdana.ttf', 'FontSize' => 10)); /* Define the boundaries of the graph area */ $turnoverCategories->setGraphArea(75, 20, $width - 30, $height - 60); /* Draw the scale, keep everything automatic */ $turnoverCategories->drawScale(array('XMargin' => 2, 'DrawSubTicks' => TRUE, 'Mode' => SCALE_MODE_ADDALL_START0, 'LabelRotation' => 45)); /* Draw the scale, keep everything automatic */ $settings = array(); $turnoverCategories->drawStackedAreaChart($settings); /* Write the chart legend */ $turnoverCategories->drawLegend(100, 20, array('Style' => LEGEND_NOBORDER, 'Mode' => LEGEND_VERTICAL)); /* Build the PNG file and send it to the web browser */ $turnoverCategories->Render(BASE_PATH . '/cache/chart/turnover-category-' . $width . '-' . $height . '.png'); }
/** * eval_ccpc_genGraphSimpleBar - Génère un graphique de type barre simple sous forme d'image au format PNG * * @category : eval_ccpc_functions * @param array $data Données à partir desquelles le graphique est généré * @return string URL de l'image générée * * @Author Ali Bellamine * * Structure de $data :<br> * ['data'][nom du label] => (int) Valeur du label<br> * ['settings']['height'] => (int) Hauteur du graphique (en px)<br> * ['settings']['width'] => (int) Largeur du graphique (en px) * */ function eval_ccpc_genGraphSimpleBar($data) { // On vérifie les données fournit if (isset($data) && isset($data['data']) && count($data['data']) > 0) { // On récupère le hash de $data $hash = md5(json_encode($data)); // Chemin du fichier $filePath = PLUGIN_PATH . 'cache/' . $hash . '.png'; $filePathURI = ROOT . 'evaluations/ccpc/cache/' . $hash . '.png'; // Si le hash existe déjà : on renvoie le lien de l'image // sinon en crée le graphique if (is_file($filePath)) { return $filePathURI; } else { // On crée l'image /* On inclut la librairie */ require_once PLUGIN_PATH . 'core/pChart2.1.4/class/pData.class.php'; require_once PLUGIN_PATH . 'core/pChart2.1.4/class/pDraw.class.php'; require_once PLUGIN_PATH . 'core/pChart2.1.4/class/pImage.class.php'; /* On crée l'objet pData */ // Préparation des données $tempDataArray = array(); // Contient les données chiffrés $tempLegendArray = array(); // Contient la légende affichée en bas // On prépare $tempDataArray : foreach ($data['data'] as $tempDataLegend => $tempDataValue) { $tempLegendArray[] = $tempDataLegend; if (is_numeric($tempDataValue)) { $tempDataArray[] = $tempDataValue; } else { return FALSE; } } $MyData = new pData(); $MyData->addPoints($tempDataArray, 'Valeur'); $MyData->addPoints($tempLegendArray, 'Label'); $MyData->setAbscissa("Label"); $MyData->setSerieDescription("Label", "Label"); /* On crée l'objet pChart */ if (isset($data['settings']['width'])) { $width = $data['settings']['width']; } else { $width = 600; } if (isset($data['settings']['height'])) { $height = $data['settings']['height']; } else { $height = 300; } $myPicture = new pImage($width, $height - 20, $MyData, TRUE); $myPicture->setFontProperties(array("FontName" => PLUGIN_PATH . 'core/pChart2.1.4/fonts/MankSans.ttf', "FontSize" => 10, "R" => 80, "G" => 80, "B" => 80)); // On détermine les limites $myPicture->setGraphArea(0, 0, $width, $height - 40); $scaleSettings = array("DrawSubTicks" => TRUE, "CycleBackground" => FALSE, "RemoveYAxis" => TRUE); $myPicture->drawScale($scaleSettings); $settings = array("Surrounding" => -30, "InnerSurrounding" => 30, "DisplayValues" => TRUE, "ORIENTATION_HORIZONTAL" => TRUE, "DisplayPos" => LABEL_POS_INSIDE); $myPicture->drawBarChart($settings); $myPicture->render($filePath); return $filePathURI; } } else { return FALSE; } }
function RenderValueChart(&$debug2) { $conditions = [["BETWEEN 1 AND 19"], ["BETWEEN 20 AND 49"], ["BETWEEN 50 AND 99"], ["BETWEEN 100 AND 199"], ["BETWEEN 200 AND 299"], ["BETWEEN 300 AND 499"], ["BETWEEN 500 AND 999"], ["> 999"]]; $label = ["1-19", "20-49", "50-99", "100-199", "200-299", "300-499", "500-999", ">1000"]; coinValueCount($conditions, $array_result); /* Create and populate the pData object */ $MyData = new pData(); $MyData->addPoints($array_result, "Värde (kr)"); $MyData->setAxisName(0, "Antal"); $MyData->addPoints($label, "Months"); $MyData->setSerieDescription("Months", "Month"); $MyData->setAbscissa("Months"); /* Create the cache object */ $myCache1 = new pCache(array("CacheFolder" => PCHART_PATH . "/class/cache")); /* Compute the hash linked to the chart data */ $ChartHash1 = $myCache1->getHash($MyData); /* Test if we got this hash in our cache already */ if ($myCache1->isInCache($ChartHash1)) { /* If we have it, get the picture from the cache! */ $myCache1->saveFromCache($ChartHash1, WWW_PATH . "/tmp/valuechart.png"); $debug2 = "Old image"; } else { /* Create the pChart object */ $myPicture = new pImage(700, 400, $MyData); /* Turn of Antialiasing */ $myPicture->Antialias = TRUE; /* Add a border to the picture */ $myPicture->drawRectangle(0, 0, 699, 399, array("R" => 0, "G" => 0, "B" => 0)); /* Set the default font */ $myPicture->setFontProperties(array("FontName" => PCHART_PATH . "/fonts/Forgotte.ttf", "FontSize" => 15, "R" => 80, "G" => 80, "B" => 80)); /* Define the chart area */ $myPicture->setGraphArea(60, 40, 650, 350); /* Draw the scale */ $scaleSettings = array("GridR" => 200, "GridG" => 200, "GridB" => 200, "DrawSubTicks" => TRUE, "CycleBackground" => TRUE, "Mode" => SCALE_MODE_START0); $myPicture->drawScale($scaleSettings); /* Write the chart legend */ $myPicture->drawLegend(340, 12, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL)); /* Turn on shadow computing */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); /* Draw the chart */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); $settings = array("Gradient" => TRUE, "GradientMode" => GRADIENT_EFFECT_CAN, "DisplayPos" => LABEL_POS_INSIDE, "DisplayValues" => TRUE, "DisplayR" => 255, "DisplayG" => 255, "DisplayB" => 255, "DisplayShadow" => TRUE, "Surrounding" => 10); $myPicture->drawBarChart(); /* Push the rendered picture to the cache */ $myCache1->writeToCache($ChartHash1, $myPicture); /* Render the picture (choose the best way) */ $myPicture->Render(WWW_PATH . "/tmp/valuechart.png"); $debug2 = "Picture rendered"; } }
/* Overlay with a gradient */ $Settings = array("StartR" => 219, "StartG" => 231, "StartB" => 139, "EndR" => 1, "EndG" => 138, "EndB" => 68, "Alpha" => 50); $myPicture->drawGradientArea(0, 0, 700, 390, DIRECTION_VERTICAL, $Settings); $myPicture->drawGradientArea(0, 0, 700, 20, DIRECTION_VERTICAL, array("StartR" => 0, "StartG" => 0, "StartB" => 0, "EndR" => 50, "EndG" => 50, "EndB" => 50, "Alpha" => 80)); /* Add a border to the picture */ $myPicture->drawRectangle(0, 0, 699, 389, array("R" => 0, "G" => 0, "B" => 0)); /* Write the picture title */ $myPicture->setFontProperties(array("FontName" => "../fonts/Silkscreen.ttf", "FontSize" => 6)); $myPicture->drawText(10, 13, "drawScale() - draw the X-Y scales", array("R" => 255, "G" => 255, "B" => 255)); /* Write the chart title */ $myPicture->setFontProperties(array("FontName" => "../fonts/Forgotte.ttf", "FontSize" => 11)); $myPicture->drawText(350, 55, "My chart title", array("FontSize" => 20, "Align" => TEXT_ALIGN_BOTTOMMIDDLE)); /* Define the 1st chart area */ $myPicture->setGraphArea(60, 70, 660, 200); $myPicture->setFontProperties(array("FontName" => "../fonts/pf_arma_five.ttf", "FontSize" => 6)); /* Draw the scale */ $scaleSettings = array("DrawSubTicks" => TRUE, "CycleBackground" => TRUE, "RemoveXAxis" => TRUE); $myPicture->drawScale($scaleSettings); $myPicture->drawBarChart(array("Surrounding" => -30, "InnerSurrounding" => 30)); /* Define the 2nd chart area */ $myPicture->setGraphArea(60, 220, 660, 360); $myPicture->setFontProperties(array("FontName" => "../fonts/pf_arma_five.ttf", "FontSize" => 6)); /* Draw the scale */ $scaleSettings = array("DrawSubTicks" => TRUE, "CycleBackground" => TRUE); $MyData->setSerieDrawable("Temperature", FALSE); $MyData->setSerieDrawable("Pressure", TRUE); $MyData->setAxisName(0, "Pressure"); $myPicture->drawScale($scaleSettings); $myPicture->drawBarChart(array("Surrounding" => -30, "InnerSurrounding" => 30)); /* Render the picture (choose the best way) */ $myPicture->autoOutput("pictures/example.drawScale.labels.png");
protected function drawBarChart(ChartDataset $CDs) { if (!extension_loaded("gd") && !extension_loaded("gd2")) { /* Extension not loaded */ // NO BARCHARTS AND ERRORS FOR YOU! return; } /* Create and populate the pData object */ $MyData = new pData(); if (empty($CDs->data)) { return; } //print_r($CDs->data); foreach ($CDs->data as $points) { //print_r($points); $MyData->addPoints($points["points"], $points["label"]); } $MyData->setAxisName(0, "Amount Sold"); $MyData->setSerieDescription($points["label"], $points["label"]); $MyData->setAbscissa($points["label"]); /* Create the pChart object */ $myPicture = new pImage(1000, 230, $MyData); // the horrible way to add fonts is just one bunch of f****d up shit, not making sense. bullshit parameters and paths. //$myPicture->setFontProperties(array("FontName"=>"Bedizen")); $myPicture->setFontProperties(array("FontName" => "pChart2.1.4//fonts/calibri.ttf", "FontSize" => 11)); //print_r(is_file("C:/xampp_jan2015/htdocs/hackerbar/web/fonts/GeosansLight.ttf")); /* Turn of Antialiasing */ $myPicture->Antialias = false; /* Add a border to the picture */ $myPicture->drawGradientArea(0, 0, 1000, 230, DIRECTION_VERTICAL, array("StartR" => 240, "StartG" => 240, "StartB" => 240, "EndR" => 180, "EndG" => 180, "EndB" => 180, "Alpha" => 100)); $myPicture->drawGradientArea(0, 0, 1000, 230, DIRECTION_HORIZONTAL, array("StartR" => 240, "StartG" => 240, "StartB" => 240, "EndR" => 180, "EndG" => 180, "EndB" => 180, "Alpha" => 20)); $myPicture->drawRectangle(0, 0, 999, 229, array("R" => 0, "G" => 0, "B" => 0)); /* Set the default font */ //$myPicture->setFontProperties(array("FontName"=>"../fonts/pf_arma_five.ttf","FontSize"=>6)); /* Define the chart area */ $myPicture->setGraphArea(60, 40, 850, 200); /* Draw the scale */ $scaleSettings = array("GridR" => 200, "GridG" => 200, "GridB" => 200, "DrawSubTicks" => TRUE, "CycleBackground" => TRUE); $myPicture->drawScale($scaleSettings); /* Write the chart legend */ $myPicture->drawLegend(860, 25, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_VERTICAL)); /* Turn on shadow computing */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); /* Draw the chart */ $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); $settings = array("Surrounding" => -30, "InnerSurrounding" => 30); $myPicture->drawBarChart($settings); /* Render the picture (choose the best way) */ $myPicture->autoOutput("images/barcharts/" . $points["label"] . ".png"); //$myPicture->auto $myPicture->render("myfile.png"); }
$Settings = array("Mode" => SCALE_MODE_FLOATING, "DrawSubTicks" => TRUE, "DrawArrows" => TRUE, "ArrowSize" => 6, "Pos" => SCALE_POS_LEFTRIGHT, "LabelSkip" => 0, "SkippedInnerTickWidth" => 10, "LabelingMethod" => LABELING_ALL, "GridR" => 0, "GridG" => 0, "GridB" => 0, "GridAlpha" => 20, "TickR" => 0, "TickG" => 0, "TickB" => 0, "TickAlpha" => 20, "LabelRotation" => 90, "DrawXLines" => 1, "DrawSubTicks" => 0, "SubTickR" => 255, "SubTickG" => 0, "SubTickB" => 0, "SubTickAlpha" => 20, "DrawYLines" => ALL); $myPicture->drawScale($Settings); $Config = array("DisplayValues" => 0, "AroundZero" => 0, "BreakVoid" => 1, "RecordImageMap" => FALSE); $GraphType = 'SplineChart'; switch ($GraphType) { case 'AreaChart': $myPicture->drawAreaChart($Config); break; case 'FilledSplineChart': $myPicture->drawFilledSplineChart($Config); break; case 'SplineChart': $myPicture->drawSplineChart($Config); break; case 'BarChart': $myPicture->drawBarChart($Config, 'tetimes'); break; case 'StackedBarChart': $myPicture->drawStackedBarChart($Config); break; case 'PlotChart': $myPicture->drawPlotChart($Config); break; default: break; } $Config = array("FontR" => 0, "FontG" => 0, "FontB" => 0, "FontName" => $LibPath . "fonts/verdana.ttf", "FontSize" => 8, "Margin" => 6, "Alpha" => 30, "BoxSize" => 5, "Style" => LEGEND_NOBORDER, "Mode" => LEGEND_VERTICAL); $myPicture->drawLegend($Graphwidth - 65, 40, $Config); $myPicture->setFontProperties(array("FontName" => $LibPath . "fonts/verdana.ttf", "FontSize" => 10)); $TextSettings = array("Align" => TEXT_ALIGN_MIDDLEMIDDLE, "R" => 0, "G" => 0, "B" => 0); $myPicture->drawText(200, 15, $GraphLabel, $TextSettings);
/** * Desenha um gráfico de barras * @param $title título do graico * @param $data matriz contendo as séries de dados * @param $xlabels vetor contendo os rótulos do eixo X * @param $ylabel rótulo do eixo Y * @param $width largura do gráfico * @param $height altura do gráfico * @param $outputPath caminho de saída do gráfico */ public function drawBarChart($title, $data, $xlabels, $ylabel, $width, $height, $outputPath) { // cria o modelo de dados $modelo = new pData(); foreach ($data as $legend => $serie) { $newdata = array(); foreach ($serie as $value) { $newdata[$legend][] = $value == NULL ? VOID : $value; } $modelo->addPoints($newdata[$legend], $legend); } $modelo->setAxisName(0, $ylabel); $modelo->addPoints($xlabels, "Labels"); $modelo->setAbscissa("Labels"); // cria o objeto que irá conter a imagem do gráfico $imagem = new pImage($width, $height, $modelo); // desliga a suavização de linhas $imagem->Antialias = FALSE; // adiciona uma borda na forma de um retângulo dentro da imagem $imagem->drawRectangle(0, 0, $width - 1, $height - 1, array("R" => 0, "G" => 0, "B" => 0)); // escreve um título dentro do gráfico $imagem->setFontProperties(array("FontName" => "app/lib/pchart/fonts/Forgotte.ttf", "FontSize" => 11)); $imagem->drawText(60, 35, $title, array("FontSize" => 20, "Align" => TEXT_ALIGN_BOTTOMLEFT)); // define a fonte dos dados do gráfico $imagem->setFontProperties(array("FontName" => "app/lib/pchart/fonts/pf_arma_five.ttf", "FontSize" => 6)); // define a área do gráfico $imagem->setGraphArea(60, 40, $width - 50, $height - 30); // define a escala do gráfico $scaleSettings = array("GridR" => 200, "GridG" => 200, "GridB" => 200, "CycleBackground" => TRUE); $imagem->drawScale($scaleSettings); // desenha a legenda do gráfico $imagem->drawLegend(60, $height - 13, array("Style" => LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL)); // cria uma sombra nas barras do gráfico $imagem->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); // desenha o gráfico de barras $imagem->drawBarChart(array("DisplayPos" => LABEL_POS_INSIDE, "DisplayValues" => TRUE, "Surrounding" => 200)); // grava o gráfico em um arquivo $imagem->render($outputPath); }
$myPicture->drawGradientArea(0, 0, 700, 230, DIRECTION_VERTICAL, $Settings); $myPicture->drawGradientArea(0, 0, 700, 20, DIRECTION_VERTICAL, array("StartR" => 0, "StartG" => 0, "StartB" => 0, "EndR" => 50, "EndG" => 50, "EndB" => 50, "Alpha" => 100)); /* Add a border to the picture */ $myPicture->drawRectangle(0, 0, 699, 229, array("R" => 0, "G" => 0, "B" => 0)); /* Write the picture title */ $myPicture->setFontProperties(array("FontName" => "../fonts/Silkscreen.ttf", "FontSize" => 6)); $myPicture->drawText(10, 13, "Chart title", array("R" => 255, "G" => 255, "B" => 255)); /* Draw the scale */ $myPicture->setFontProperties(array("FontName" => "../fonts/pf_arma_five.ttf", "FontSize" => 6)); $myPicture->setGraphArea(50, 60, 670, 190); $myPicture->drawFilledRectangle(50, 60, 670, 190, array("R" => 255, "G" => 255, "B" => 255, "Surrounding" => -200, "Alpha" => 10)); $myPicture->drawScale(array("CycleBackground" => TRUE)); /* Graph title */ $myPicture->setFontProperties(array("FontName" => "../fonts/Forgotte.ttf", "FontSize" => 11)); $myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 10)); $myPicture->drawText(50, 52, "Chart subtitle", array("FontSize" => 20, "Align" => TEXT_ALIGN_BOTTOMLEFT)); /* Draw the bar chart chart */ $myPicture->setFontProperties(array("FontName" => "../fonts/pf_arma_five.ttf", "FontSize" => 6)); $MyData->setSerieDrawable("Last year", FALSE); $myPicture->drawBarChart(); /* Draw the line and plot chart */ $MyData->setSerieDrawable("Last year", TRUE); $MyData->setSerieDrawable("This year", FALSE); $myPicture->drawSplineChart(); $myPicture->drawPlotChart(); /* Make sure all series are drawable before writing the scale */ $MyData->drawAll(); /* Write the legend */ $myPicture->drawLegend(580, 35, array("Style" => LEGEND_ROUND, "Alpha" => 20, "Mode" => LEGEND_HORIZONTAL)); /* Render the picture (choose the best way) */ $myPicture->autoOutput("pictures/example.combo.png");