데이터 시각화에서 레이더 그래프 (또는 스파이더 그래프)는 다차원 데이터를 시각적으로 표시하는 데 도움이되는 매우 유용한 그래프입니다. PHP 개발자의 경우 ImageOpenPolygon () 함수를 사용하여 레이더 도면을 시뮬레이션 할 수 있습니다. 이 기능은 GD 라이브러리의 일부로 이미지에 다각형을 그릴 수 있습니다. 정점을 합리적으로 설정함으로써 레이더 맵의 효과를 달성 할 수 있습니다. 이 기사는 PHP의 ImageOpenPolygon () 함수를 사용하여 레이더 다이어그램을 그리는 방법을 소개합니다.
스파이더 차트라고도하는 레이더 차트는 다차원 데이터를 표시하는 차트입니다. 각 데이터 포인트는 그래프의 치수를 나타내고 데이터 값은 정점을 통해 연결되어 폐쇄 다각형을 형성합니다. 여러 변수 간의 관계를 표시하는 데 적합합니다. 특히 여러 객체 나 차원을 비교해야 할 때.
ImageOpenPolygon () 함수는 PHP GD 라이브러리의 함수이며 일반적으로 이미지에 다각형을 그리는 데 사용됩니다. 레이더 그래프를 그릴 때는이 기능을 사용하여 다각형의 정점을 조정하여 다각형을 그리며 다른 데이터 차원에 적응할 수 있습니다.
imageopenpolygon($image, $points, $num_points, $color);
$ 이미지 : 대상 이미지 리소스.
$ 포인트 : 모든 정점 좌표가 포함 된 배열.
$ num_points : 정점 수.
$ 컬러 : 다각형의 색상.
먼저 이미지 리소스를 만들고 이미지의 배경색을 설정해야합니다.
<?php
// a 500x500 빈 이미지
$image = imagecreatetruecolor(500, 500);
// 배경색을 흰색으로 설정합니다
$bgColor = imagecolorallocate($image, 255, 255, 255); // RGB (255, 255, 255) 흰색을 나타냅니다
imagefill($image, 0, 0, $bgColor);
?>
레이더 그래프의 중심점은 그래프의 중심이며 각 차원의 데이터 포인트는 값에 따라 중심으로부터의 거리를 결정합니다. 그래프를 6 차원으로 나누고 반경을 200으로 설정한다고 가정합니다.
<?php
// 레이더 맵 센터 좌표
$centerX = 250;
$centerY = 250;
$radius = 200;
?>
각 차원에 대한 데이터 포인트의 좌표를 계산해야합니다. 이 좌표는 다각형의 정점을 결정합니다.
<?php
// 있다고 가정합니다 6 각 차원의 데이터
$data = [80, 70, 90, 60, 85, 75]; // 每각 차원의 데이터值 (범위:0 - 100)
// 将每각 차원의 데이터映射到半径
$points = [];
$numPoints = count($data);
for ($i = 0; $i < $numPoints; $i++) {
// 각도를 계산하십시오
$angle = (2 * M_PI * $i) / $numPoints;
// 각 데이터 포인트의 좌표를 계산하십시오
$x = $centerX + cos($angle) * ($radius * $data[$i] / 100);
$y = $centerY + sin($angle) * ($radius * $data[$i] / 100);
// 정점 좌표를 저장하십시오
$points[] = $x;
$points[] = $y;
}
?>
다음으로 ImageOpenPolygon () 함수를 사용하여 다각형을 그리고이 정점에 결합합니다.
<?php
// 다각형의 색상을 파란색으로 설정하십시오
$polygonColor = imagecolorallocate($image, 0, 0, 255);
// 레이더 다이어그램의 다각형 그림
imageopenpolygon($image, $points, $numPoints, $polygonColor);
?>
마지막으로 생성 된 이미지를 출력합니다.
<?php
// 출력 이미지입니다 PNG 체재
header('Content-Type: image/png');
imagepng($image);
// 이미지 자원을 파괴하십시오
imagedestroy($image);
?>
위의 코드 스 니펫을 결합하면 최종 코드는 다음과 같습니다.
<?php
// 이미지 리소스를 만듭니다
$image = imagecreatetruecolor(500, 500);
// 배경색을 설정하십시오
$bgColor = imagecolorallocate($image, 255, 255, 255); // RGB (255, 255, 255) 흰색을 나타냅니다
imagefill($image, 0, 0, $bgColor);
// 레이더 맵 센터 좌표和半径
$centerX = 250;
$centerY = 250;
$radius = 200;
// 데이터
$data = [80, 70, 90, 60, 85, 75]; // 每각 차원의 데이터值 (범위:0 - 100)
// 计算데이터点坐标
$points = [];
$numPoints = count($data);
for ($i = 0; $i < $numPoints; $i++) {
$angle = (2 * M_PI * $i) / $numPoints;
$x = $centerX + cos($angle) * ($radius * $data[$i] / 100);
$y = $centerY + sin($angle) * ($radius * $data[$i] / 100);
$points[] = $x;
$points[] = $y;
}
// 색상 설정
$polygonColor = imagecolorallocate($image, 0, 0, 255);
// 다각형을 그립니다
imageopenpolygon($image, $points, $numPoints, $polygonColor);
// 출력 이미지
header('Content-Type: image/png');
imagepng($image);
// 리소스를 자유롭게합니다
imagedestroy($image);
?>
PHP의 ImageOpenPolygon () 함수를 통해 레이더 그래프를 쉽게 시뮬레이션하고 그릴 수있어 다차원 데이터를 더 잘 표시 할 수 있습니다. 실제 애플리케이션에서는 요구에 따라 치수, 색상 및 데이터 매핑 수를 조정하여보다 복잡한 레이더 맵을 만들 수 있습니다.