/** * Draw a scatter plot chart * @param array $Format */ public function drawScatterPlotChart($Format = null) { $PlotSize = isset($Format["PlotSize"]) ? $Format["PlotSize"] : 3; $PlotBorder = isset($Format["PlotBorder"]) ? $Format["PlotBorder"] : false; $BorderR = isset($Format["BorderR"]) ? $Format["BorderR"] : 250; $BorderG = isset($Format["BorderG"]) ? $Format["BorderG"] : 250; $BorderB = isset($Format["BorderB"]) ? $Format["BorderB"] : 250; $BorderAlpha = isset($Format["BorderAlpha"]) ? $Format["BorderAlpha"] : 30; $BorderSize = isset($Format["BorderSize"]) ? $Format["BorderSize"] : 1; $RecordImageMap = isset($Format["RecordImageMap"]) ? $Format["RecordImageMap"] : false; $ImageMapTitle = isset($Format["ImageMapTitle"]) ? $Format["ImageMapTitle"] : null; $Data = $this->pDataObject->getData(); $BorderColor = array("R" => $BorderR, "G" => $BorderG, "B" => $BorderB, "Alpha" => $BorderAlpha); foreach ($Data["ScatterSeries"] as $Key => $Series) { if ($Series["isDrawable"] == true) { $SerieX = $Series["X"]; $SerieValuesX = $Data["Series"][$SerieX]["Data"]; $SerieXAxis = $Data["Series"][$SerieX]["Axis"]; $SerieY = $Series["Y"]; $SerieValuesY = $Data["Series"][$SerieY]["Data"]; $SerieYAxis = $Data["Series"][$SerieY]["Axis"]; if ($ImageMapTitle == null) { $Description = sprintf("%s / %s", $Data["Series"][$Series["X"]]["Description"], $Data["Series"][$Series["Y"]]["Description"]); } else { $Description = $ImageMapTitle; } if (isset($Series["Picture"]) && $Series["Picture"] != "") { $Picture = $Series["Picture"]; list($PicWidth, $PicHeight, $PicType) = $this->pChartObject->getPicInfo($Picture); } else { $Picture = null; } $PosArrayX = $this->getPosArray($SerieValuesX, $SerieXAxis); if (!is_array($PosArrayX)) { $Value = $PosArrayX; $PosArrayX = array(); $PosArrayX[0] = $Value; } $PosArrayY = $this->getPosArray($SerieValuesY, $SerieYAxis); if (!is_array($PosArrayY)) { $Value = $PosArrayY; $PosArrayY = array(); $PosArrayY[0] = $Value; } $Color = array("R" => $Series["Color"]["R"], "G" => $Series["Color"]["G"], "B" => $Series["Color"]["B"], "Alpha" => $Series["Color"]["Alpha"]); foreach ($PosArrayX as $Key => $Value) { $X = $Value; $Y = $PosArrayY[$Key]; if ($X != VOID && $Y != VOID) { $RealValue = sprintf("%s / %s", round($Data["Series"][$Series["X"]]["Data"][$Key], 2), round($Data["Series"][$Series["Y"]]["Data"][$Key], 2)); if ($RecordImageMap) { $this->pChartObject->addToImageMap("CIRCLE", sprintf("%s,%s,%s", floor($X), floor($Y), floor($PlotSize + $BorderSize)), $this->pChartObject->toHTMLColor($Series["Color"]["R"], $Series["Color"]["G"], $Series["Color"]["B"]), $Description, $RealValue); } if (isset($Series["Shape"])) { $this->pChartObject->drawShape($X, $Y, $Series["Shape"], $PlotSize, $PlotBorder, $BorderSize, $Series["Color"]["R"], $Series["Color"]["G"], $Series["Color"]["B"], $Series["Color"]["Alpha"], $BorderR, $BorderG, $BorderB, $BorderAlpha); } elseif ($Picture == null) { if ($PlotBorder) { $this->pChartObject->drawFilledCircle($X, $Y, $PlotSize + $BorderSize, $BorderColor); } $this->pChartObject->drawFilledCircle($X, $Y, $PlotSize, $Color); } else { $this->pChartObject->drawFromPicture($PicType, $Picture, $X - $PicWidth / 2, $Y - $PicHeight / 2); } } } } } }