示例#1
0
 /**
  *
  * @param string $ScatterSerieID
  * @param mixed $Points
  * @param array $Format
  * @return null | int
  */
 public function writeScatterLabel($ScatterSerieID, $Points, array $Format = array())
 {
     $DrawPoint = isset($Format["DrawPoint"]) ? $Format["DrawPoint"] : LABEL_POINT_BOX;
     $Decimals = isset($Format["Decimals"]) ? $Format["Decimals"] : null;
     $Data = $this->pDataObject->getData();
     if (!is_array($Points)) {
         $Points = array($Points);
     }
     if (!isset($Data["ScatterSeries"][$ScatterSerieID])) {
         return 0;
     }
     $Series = $Data["ScatterSeries"][$ScatterSerieID];
     $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"];
     $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;
     }
     foreach ($Points as $Key => $Point) {
         if (isset($PosArrayX[$Point]) && isset($PosArrayY[$Point])) {
             $X = floor($PosArrayX[$Point]);
             $Y = floor($PosArrayY[$Point]);
             if ($DrawPoint == LABEL_POINT_CIRCLE) {
                 $this->pChartObject->drawFilledCircle($X, $Y, 3, array("R" => 255, "G" => 255, "B" => 255, "BorderR" => 0, "BorderG" => 0, "BorderB" => 0));
             } elseif ($DrawPoint == LABEL_POINT_BOX) {
                 $this->pChartObject->drawFilledRectangle($X - 2, $Y - 2, $X + 2, $Y + 2, array("R" => 255, "G" => 255, "B" => 255, "BorderR" => 0, "BorderG" => 0, "BorderB" => 0));
             }
             $Serie = array();
             $Serie["R"] = $Series["Color"]["R"];
             $Serie["G"] = $Series["Color"]["G"];
             $Serie["B"] = $Series["Color"]["B"];
             $Serie["Alpha"] = $Series["Color"]["Alpha"];
             $XAxisMode = $Data["Axis"][$SerieXAxis]["Display"];
             $XAxisFormat = $Data["Axis"][$SerieXAxis]["Format"];
             $XAxisUnit = $Data["Axis"][$SerieXAxis]["Unit"];
             if ($Decimals == null) {
                 $XValue = $SerieValuesX[$Point];
             } else {
                 $XValue = round($SerieValuesX[$Point], $Decimals);
             }
             $XValue = $this->pChartObject->scaleFormat($XValue, $XAxisMode, $XAxisFormat, $XAxisUnit);
             $YAxisMode = $Data["Axis"][$SerieYAxis]["Display"];
             $YAxisFormat = $Data["Axis"][$SerieYAxis]["Format"];
             $YAxisUnit = $Data["Axis"][$SerieYAxis]["Unit"];
             if ($Decimals == null) {
                 $YValue = $SerieValuesY[$Point];
             } else {
                 $YValue = round($SerieValuesY[$Point], $Decimals);
             }
             $YValue = $this->pChartObject->scaleFormat($YValue, $YAxisMode, $YAxisFormat, $YAxisUnit);
             $Caption = sprintf("%s / %s", $XValue, $YValue);
             if (isset($Series["Description"])) {
                 $Description = $Series["Description"];
             } else {
                 $Description = "No description";
             }
             $Series = array(array("Format" => $Serie, "Caption" => $Caption));
             $this->pChartObject->drawLabelBox($X, $Y - 3, $Description, $Series, $Format);
         }
     }
 }