Aktueller Standort: Startseite> Neueste Artikel> Wie zeichne ich komplexe Lichtbogendiagramme mehrerer Segmente unter Verwendung von ImageFilledarc? Die grafische Visualisierung ist in einem Schritt vorhanden

Wie zeichne ich komplexe Lichtbogendiagramme mehrerer Segmente unter Verwendung von ImageFilledarc? Die grafische Visualisierung ist in einem Schritt vorhanden

M66 2025-06-12

Im PHP ist ImageFilledarc () eine sehr leistungsstarke Funktion, die hauptsächlich zum Zeichnen von Bogendiagrammen verwendet wird. Es ist zweifellos ein sehr nützliches Werkzeug, wenn Sie ein komplexes gekrümmtes Diagramm mit mehreren Segmenten anzeigen müssen. In diesem Artikel wird angezeigt, wie Sie mit der Funktion imageFilledarc () mehrere segmentierte Bogendiagramme zeichnen und einfache Codebeispiele verwenden, um zu verstehen, wie Sie diese Grafik Schritt für Schritt erstellen.

1. Einführung in die Funktion von ImageFilledarc ()

ImageFilledarc () ist eine Funktion in der GD -Bibliothek, mit der ein gefülltes Bogen gezeichnet wird. Die grundlegende Syntax ist wie folgt:

 imagefilledarc(resource $image, int $cx, int $cy, int $width, int $height, int $start, int $end, int $color, int $style)
  • $ Bild : Zielbildressource.

  • $ cx, $ cy : Die Koordinaten der Mitte des Kreises.

  • $ width, $ Höhe : Breite und Höhe des Bogenbereichs.

  • $ start : Der Startwinkel des Bogens.

  • $ End : Der Endwinkel des Bogens.

  • $ Farbe : Die Füllfarbe des Bogens.

  • $ style : arc fill style.

Diese Funktion eignet sich sehr zum Zeichnen von Kreisdiagrammen, kreisförmigen Fortschrittsbalken, komplexen statistischen Diagrammen usw., insbesondere wenn mehrere Datenelemente in Segmenten angezeigt werden müssen.

2. Erstellen Sie ein grundlegendes Diagramm

Lassen Sie uns zunächst ein einfaches Diagramm erstellen, das zeigt, wie man einen Bogen zeichnet. Wir zeichnen einen Bogen von 0 bis 180 Grad mit bildFilledarc () und die Farbe darauf einstellen.

 <?php
// Erstellen Sie eine Bildressource
$image = imagecreatetruecolor(400, 400);

// Farben zuweisen
$bgColor = imagecolorallocate($image, 255, 255, 255); // Weißer Hintergrund
$arcColor = imagecolorallocate($image, 255, 0, 0); // Roter Bogen

// Hintergrundfarbe füllen
imagefill($image, 0, 0, $bgColor);

// Zeichne einen Bogen
imagefilledarc($image, 200, 200, 300, 300, 0, 180, $arcColor, IMG_ARC_PIE);

// Ausgabebild
header('Content-Type: image/png');
imagepng($image);

// Freier Speicher
imagedestroy($image);
?>

Im obigen Code erstellen wir ein Bild von 400 x 400 und setzen einen weißen Hintergrund. Dann zeichnen wir einen Bogen von 0 bis 180 Grad rot.

3. Zeichnen Sie mehrere segmentierte Bogendiagramme

Um ein komplexes ARC -Diagramm mehrerer Segmente zu zeichnen, müssen wir den ARC in mehrere Segmente aufteilen. Jedes Segment hat unterschiedliche Start- und Endwinkel. Hier ist ein komplexeres Beispiel, in dem wir einen Kreis mit vier Segmenten zeichnen, die jeweils einen anderen Datenwert darstellen.

 <?php
// Erstellen Sie eine Bildressource
$image = imagecreatetruecolor(400, 400);

// Farben zuweisen
$bgColor = imagecolorallocate($image, 255, 255, 255); // Weißer Hintergrund
$colors = [
    imagecolorallocate($image, 255, 0, 0),   // Rot
    imagecolorallocate($image, 0, 255, 0),   // Grün
    imagecolorallocate($image, 0, 0, 255),   // Blau
    imagecolorallocate($image, 255, 255, 0)  // Gelb
];

// Hintergrundfarbe füllen
imagefill($image, 0, 0, $bgColor);

// Datendefinition(Jeder Wert repräsentiert den Winkel des entsprechenden Segments)
$data = [40, 30, 60, 90]; // Die Summe ist 220 Grad

// 计算每个分段的起始和结束角Grad
$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;
}

// Ausgabebild
header('Content-Type: image/png');
imagepng($image);

// Freier Speicher
imagedestroy($image);
?>

In diesem Beispiel zeichnen wir mehrere Segmente basierend auf den Werten im Array $ -Daten (jeder Wert repräsentiert den Winkel des Bogens). Die Farbe jedes Segments ist eines der vordefinierten Farbarrays.

4. laden Sie Daten über URL dynamisch laden

Um das Diagramm flexibler zu gestalten, können wir verschiedene Daten über URLs dynamisch laden. Angenommen, die Daten stammen aus einer URL und die Daten werden im JSON -Format übergeben. Wir können die Funktion von PHPs File_Get_Contents () verwenden, um Daten aus der angegebenen URL zu erhalten und sie in ein PHP -Array über JSON_DECODE () umzuwandeln. Hier ist ein einfaches Beispiel:

 <?php
// aus URL Erhalten JSON Daten
$dataUrl = 'https://m66.net/data.json'; // 假设Daten存放在这个 URL
$jsonData = file_get_contents($dataUrl);
$data = json_decode($jsonData, true);

// Bildressourcen erstellen
$image = imagecreatetruecolor(400, 400);

// Farben zuweisen
$bgColor = imagecolorallocate($image, 255, 255, 255); // Weißer Hintergrund
$colors = [
    imagecolorallocate($image, 255, 0, 0),   // Rot
    imagecolorallocate($image, 0, 255, 0),   // Grün
    imagecolorallocate($image, 0, 0, 255),   // Blau
    imagecolorallocate($image, 255, 255, 0)  // Gelb
];

// Hintergrundfarbe füllen
imagefill($image, 0, 0, $bgColor);

// 计算每个分段的起始和结束角Grad
$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;
}

// Ausgabebild
header('Content-Type: image/png');
imagepng($image);

// Freier Speicher
imagedestroy($image);
?>

In diesem Code gehen wir davon aus, dass die Daten auf einer URL gespeichert sind und die Daten im JSON -Format über die Funktion von File_get_Contents () erhalten und in ein PHP -Array analysiert werden. Basierend auf diesen Daten werden mehrere Bogensegmente dynamisch gezeichnet. Es ist erwähnenswert, dass wir eine einfache Schleife auf dem Farbarray gemacht haben, um mehr Datensegmentierung zu bewältigen.