Ejemplo n.º 1
0
 /**
  * Draw a scatter spline chart
  * @param array $Format
  */
 public function drawScatterSplineChart(array $Format = array())
 {
     $Data = $this->pDataObject->getData();
     $RecordImageMap = isset($Format["RecordImageMap"]) ? $Format["RecordImageMap"] : false;
     $ImageMapTitle = isset($Format["ImageMapTitle"]) ? $Format["ImageMapTitle"] : null;
     $ImageMapPlotSize = isset($Format["ImageMapPlotSize"]) ? $Format["ImageMapPlotSize"] : 10;
     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"];
             $Ticks = $Series["Ticks"];
             $Weight = $Series["Weight"];
             if ($ImageMapTitle == null) {
                 $Description = sprintf("%s / %s", $Data["Series"][$Series["X"]]["Description"], $Data["Series"][$Series["Y"]]["Description"]);
             } else {
                 $Description = $ImageMapTitle;
             }
             $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;
             }
             $SplineSettings = array("R" => $Series["Color"]["R"], "G" => $Series["Color"]["G"], "B" => $Series["Color"]["B"], "Alpha" => $Series["Color"]["Alpha"]);
             if ($Ticks != 0) {
                 $SplineSettings["Ticks"] = $Ticks;
             }
             if ($Weight != 0) {
                 $SplineSettings["Weight"] = $Weight;
             }
             $LastX = VOID;
             $LastY = VOID;
             $WayPoints = array();
             $Forces = array();
             foreach ($PosArrayX as $Key => $Value) {
                 $X = $Value;
                 $Y = $PosArrayY[$Key];
                 $Force = $this->pChartObject->getLength($LastX, $LastY, $X, $Y) / 5;
                 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), $ImageMapPlotSize), $this->pChartObject->toHTMLColor($Series["Color"]["R"], $Series["Color"]["G"], $Series["Color"]["B"]), $Description, $RealValue);
                     }
                 }
                 if ($X != VOID && $Y != VOID) {
                     $WayPoints[] = array($X, $Y);
                     $Forces[] = $Force;
                 }
                 if ($Y == VOID || $X == VOID) {
                     $SplineSettings["Forces"] = $Forces;
                     $this->pChartObject->drawSpline($WayPoints, $SplineSettings);
                     $WayPoints = array();
                     $Forces = array();
                 }
                 $LastX = $X;
                 $LastY = $Y;
             }
             $SplineSettings["Forces"] = $Forces;
             $this->pChartObject->drawSpline($WayPoints, $SplineSettings);
         }
     }
 }