現在の位置: ホーム> 最新記事一覧> ImageFilledArcを使用して複数のセグメントの複雑なアークチャートを描く方法は?グラフィックの視覚化は、1つのステップで整備されています

ImageFilledArcを使用して複数のセグメントの複雑なアークチャートを描く方法は?グラフィックの視覚化は、1つのステップで整備されています

M66 2025-06-12

PHPでは、 ImageFilledArc()は非常に強力な機能であり、主にアークチャートを描画するために使用されます。複数のセグメントを備えた複雑な曲線チャートを表示する必要がある場合、それは間違いなく非常に便利なツールです。この記事では、ImageFilledArc()関数を使用して複数のセグメント化されたアークチャートを描画する方法を示し、簡単なコードの例を使用して、このグラフを段階的に構築する方法を理解するのに役立ちます。

1。ImageFilledArc()関数の概要

ImageFilledArc()は、GDライブラリの関数であり、塗りつぶされたアークを描画するために使用されます。その基本的な構文は次のとおりです。

 imagefilledarc(resource $image, int $cx, int $cy, int $width, int $height, int $start, int $end, int $color, int $style)
  • $画像:ターゲット画像リソース。

  • $ cx、$ cy :円の中心の座標。

  • $ width、$ height :アーク領域の幅と高さ。

  • $ start :アークの開始角。

  • $ end :アークの端角。

  • $色:アークの充填色。

  • $スタイル:アークフィルスタイル。

この機能は、特にセグメントに複数のデータ項目を表示する必要がある場合、パイチャート、円形の進行状況バー、複雑な統計チャートなどの描画に非常に適しています。

2。基本チャートを作成します

まず、アークを描く方法を示す簡単なチャートを作成しましょう。 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の弧を描きます。

3.複数のセグメント化されたアークチャートを描きます

複数のセグメントの複雑なアークチャートを描くには、アークを複数のセグメントに分割する必要があります。各セグメントには、開始角と終了角が異なります。以下は、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);
?>

この例では、配列$データの値に基づいて複数のセグメントを描画します(各値はアークの角度を表します)。各セグメントの色は、定義された色の配列の1つです。

4。URLを介してデータを動的にロードします

チャートをより柔軟にするために、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アレイに解析されると想定しています。次に、これらのデータに基づいて、複数のアークセグメントが動的に描画されます。より多くのデータセグメンテーションに対処するために、色配列に簡単なループを行ったことは注目に値します。