PHP에서 ImageFilledArc ()는 주로 아크 차트를 그리는 데 사용되는 매우 강력한 기능입니다. 의심 할 여지없이 여러 세그먼트가있는 복잡한 곡선 차트를 표시해야 할 때 매우 유용한 도구입니다. 이 기사에서는 ImageFilledArc () 함수를 사용하여 여러 세그먼트 된 아크 차트를 그리며 간단한 코드 예제를 사용 하여이 그래프를 단계별로 작성하는 방법을 이해하는 방법을 보여줍니다.
ImageFilledArc () 는 GD 라이브러리에서 채워진 아크를 그리는 데 사용되는 함수입니다. 기본 구문은 다음과 같습니다.
imagefilledarc(resource $image, int $cx, int $cy, int $width, int $height, int $start, int $end, int $color, int $style)
$ 이미지 : 대상 이미지 리소스.
$ cx, $ cy : 원의 중심 좌표.
너비, $ 높이 : 아크 영역의 너비와 높이.
$ 시작 : 아크의 시작 각도.
$ END : 아크의 끝 각도.
$ color : 아크의 채우기 색상.
$ 스타일 : 아크 필 스타일.
이 기능은 특히 여러 데이터 항목을 세그먼트에 표시 해야하는 경우 파이 차트, 원형 진행 막대, 복잡한 통계 차트 등을 그리는 데 매우 적합합니다.
먼저 아크를 그리는 방법을 보여주는 간단한 차트를 만들어 봅시다. ImageFilledArc ()를 사용하여 0 ~ 180 도의 아크를 그리며 색상을 설정합니다.
<?php
// 이미지 리소스를 만듭니다
$image = imagecreatetruecolor(400, 400);
// 색상을 할당합니다
$bgColor = imagecolorallocate($image, 255, 255, 255); // 흰색 배경
$arcColor = imagecolorallocate($image, 255, 0, 0); // 빨간 아크
// 배경색을 채우십시오
imagefill($image, 0, 0, $bgColor);
// 아크를 그립니다
imagefilledarc($image, 200, 200, 300, 300, 0, 180, $arcColor, IMG_ARC_PIE);
// 출력 이미지
header('Content-Type: image/png');
imagepng($image);
// 무료 메모리
imagedestroy($image);
?>
위의 코드에서는 400x400의 이미지를 만들고 흰색 배경을 설정합니다. 그런 다음 아크를 0 에서 180 도로 빨간색으로 그립니다.
다중 세그먼트의 복잡한 아크 차트를 그려 보려면 아크를 여러 세그먼트로 분할해야하며 각 세그먼트마다 시작 및 엔딩 각도가 다릅니다. 다음은 4 개의 세그먼트가있는 원을 그릴 수있는 더 복잡한 예입니다. 각각은 다른 데이터 값을 나타냅니다.
<?php
// 이미지 리소스를 만듭니다
$image = imagecreatetruecolor(400, 400);
// 색상을 할당합니다
$bgColor = imagecolorallocate($image, 255, 255, 255); // 흰색 배경
$colors = [
imagecolorallocate($image, 255, 0, 0), // 빨간색
imagecolorallocate($image, 0, 255, 0), // 녹색
imagecolorallocate($image, 0, 0, 255), // 파란색
imagecolorallocate($image, 255, 255, 0) // 노란색
];
// 배경색을 채우십시오
imagefill($image, 0, 0, $bgColor);
// 데이터 정의(각 값은 해당 세그먼트의 각도를 나타냅니다)
$data = [40, 30, 60, 90]; // 합계는 220 도
// 计算每个分段的起始和结束角도
$startAngle = 0;
foreach ($data as $i => $value) {
$endAngle = $startAngle + $value;
imagefilledarc($image, 200, 200, 300, 300, $startAngle, $endAngle, $colors[$i], IMG_ARC_PIE);
$startAngle = $endAngle;
}
// 출력 이미지
header('Content-Type: image/png');
imagepng($image);
// 무료 메모리
imagedestroy($image);
?>
이 예에서는 배열 $ 데이터 의 값에 따라 여러 세그먼트를 그립니다 (각 값은 아크 각도를 나타냅니다). 각 세그먼트의 색상은 사전 정의 된 색상 배열 중 하나입니다.
차트를보다 유연하게 만들기 위해 URL을 통해 다른 데이터를 동적으로로드 할 수 있습니다. 데이터가 URL에서 나오고 데이터가 JSON 형식으로 전달된다고 가정합니다. php의 file_get_contents () 함수를 사용하여 지정된 URL에서 데이터를 가져 와서 json_decode () 를 통해 php 배열로 변환 할 수 있습니다. 간단한 예는 다음과 같습니다.
<?php
// ~에서 URL 얻다 JSON 데이터
$dataUrl = 'https://m66.net/data.json'; // 假设데이터存放在这个 URL
$jsonData = file_get_contents($dataUrl);
$data = json_decode($jsonData, true);
// 이미지 리소스를 만듭니다
$image = imagecreatetruecolor(400, 400);
// 색상을 할당합니다
$bgColor = imagecolorallocate($image, 255, 255, 255); // 흰색 배경
$colors = [
imagecolorallocate($image, 255, 0, 0), // 빨간색
imagecolorallocate($image, 0, 255, 0), // 녹색
imagecolorallocate($image, 0, 0, 255), // 파란색
imagecolorallocate($image, 255, 255, 0) // 노란색
];
// 배경색을 채우십시오
imagefill($image, 0, 0, $bgColor);
// 计算每个分段的起始和结束角도
$startAngle = 0;
foreach ($data as $i => $value) {
$endAngle = $startAngle + $value;
imagefilledarc($image, 200, 200, 300, 300, $startAngle, $endAngle, $colors[$i % count($colors)], IMG_ARC_PIE);
$startAngle = $endAngle;
}
// 출력 이미지
header('Content-Type: image/png');
imagepng($image);
// 무료 메모리
imagedestroy($image);
?>
이 코드에서는 데이터가 URL에 저장되고 JSON 형식의 데이터가 file_get_contents () 함수를 통해 얻어지고 PHP 배열로 구문 분석된다고 가정합니다. 그런 다음 이러한 데이터를 기반으로 여러 아크 세그먼트가 동적으로 그려집니다. 더 많은 데이터 세분화에 대처하기 위해 색상 배열에서 간단한 루프를 수행했다는 점은 주목할 가치가 있습니다.