データの視覚化では、レーダーグラフ(またはスパイダーグラフ)は、多次元データを視覚的に表示するのに役立つ非常に便利なグラフです。 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()関数を介して、レーダーグラフを簡単にシミュレートして描画することができ、多次元データの表示を改善できます。実際のアプリケーションでは、ニーズに応じて寸法、色、データマッピングの数を調整して、より複雑なレーダーマップを作成できます。