NAME
Quiq::Gd::Component::Graph - Polyline-Graph
BASE CLASS
DESCRIPTION
Das Objekt repräsentiert einen Graph entlang der Weltkoordinaten @x und @y. Per Default wird der Graph über der gesamten Fläche des Bildes gezeichnet. Durch die Angabe colors=>\@colors
kann als dritte Dimension ein Farbwert entlang des Graphen gezeichnet werden. Punkte und Linien werden in diesen Farben gezeichnet, sofern per (pointColor
) oder (lineColor
) nichts anderes vorgegeben ist.
ATTRIBUTES
Fett hervorgehobene Attribute sind Pflichtangaben beim Konstruktor-Aufruf.
- width => $int (Default: keiner)
-
Breite der Grafik in Pixeln.
- height => $int (Default: keiner)
-
Höhe der Grafik in Pixeln.
- x => \@x (Default: [])
-
Array der X-Werte (Weltkoordinate).
- y => \@y (Default: [])
-
Array der Y-Werte (Weltkoordinate).
- colors => \@colors (Default: undef)
-
Farben der Datenpunkte und Linien. Jeder Datenpunkt und jede Verbindungslinie hat eine eigene Farbe. Siehe Beispiel Graph mit verschiedenfarbigen Datenpunkten und Linien.
- lineColor => $color (Default: Defaultfarbe)
-
Farbe der Verbindungslinien. FIMXE: Verhältnis zu Attribut colors beschreiben.
- lineThickness => $n (Default: 1)
-
Dicke der Verbindungsline in Pixeln. Wenn 0, wird keine Linie gezeichnet.
- xMin => $f (Default: Minimum der X-Werte)
-
Anfang des X-Wertebereichs (Weltkoodinate).
- xMax => $f (Default: Maximum der X-Werte)
-
Ende des X-Wertebereichs (Weltkoodinate).
- yMin => $f (Default: Minimum der Y-Werte)
-
Anfang des Y-Wertebereichs (Weltkoodinate).
- yMax => $f (Default: Maximum der Y-Werte)
-
Ende des Y-Wertebereichs (Weltkoodinate).
- xMaxDelta => $f (Default: undef)
-
Maximaler Abstand zwischen zwei benachbarten Punkten in X-Richtung. Wird dieser Abstand überschritten, werden die Punkte nicht durch eine Linie verbunden.
- yMaxDelta => $f (Default: undef)
-
Wie
xMaxDelta
, nur in Y-Richtung. - pointColor => $color (Default: Defaultfarbe)
-
Farbe, in der alle Datenpunkte gezeichnet werden.
- pointSize => $n (Default: 1)
-
Größe des Punktes in Pixeln. Der Punkt wird gemäß
pointStyle
dargestellt. Der Wert sollte ungerade sein: 1, 3, 5, usw., damit die Darstellung mittig über dem Datenpunkt stattfindet. - pointStyle => $style (Default: 'square')
-
Darstellung des Punktes: 'square', 'circle'.
- adaptPlotRegion => $bool (Default: 0)
-
Ist die Punktgröße > 1 (s. Attribut
pointSize
), erweitere den Plotbereich (AttributexMin
,xMax
,yMin
,yMax
) derart, dass die Datenpunkte auch am Rand vollständig gezeichnet werden.
EXAMPLES
Einfacher Graph
Code:
require Quiq::Gd::Image;
require Quiq::Gd::Component::Graph;
my ($width,$height) = (500,100);
$img = Quiq::Gd::Image->new($width,$height);
$img->background('#ffffff');
my $g = Quiq::Gd::Component::Graph->new(
width=>$width,
height=>$height,
x=>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
y=>[0, 9, 7.5, 1, 1.9, 6, 4, 6.3, 0.5, 10],
);
$g->render($img);
Im Browser:
[Nur im Browser sichtbar]
Graph mit gekennzeichneten Datenpunkten
Code:
require Quiq::Gd::Image;
require Quiq::Gd::Component::Graph;
my ($width,$height) = (500,100);
$img = Quiq::Gd::Image->new($width,$height);
$img->background('#ffffff');
$img->border('#d0d0d0');
my $g = Quiq::Gd::Component::Graph->new(
width=>$width,
height=>$height,
x=>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
y=>[0, 9, 7.5, 1, 1.9, 6, 4, 6.3, 0.5, 10],
pointColor=>'#ff0000',
pointSize=>5,
);
$g->render($img);
Im Browser:
[Nur im Browser sichtbar]
Wir setzen die Punktfarbe und die Punktgröße. Die Endpunkte sind abgeschnitten, da ein Teil von ihnen außerhalb des Bildes liegt.
Graph mit verschiedenfarbigen Datenpunkten und Linien
Code:
require Quiq::Gd::Image;
require Quiq::Gd::Component::Graph;
my ($width,$height) = (504,104);
$img = Quiq::Gd::Image->new($width,$height);
$img->background('#ffffff');
$img->border('#d0d0d0');
my $g = Quiq::Gd::Component::Graph->new(
width=>$width-4,
height=>$height-4,
x=>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
y=>[0, 9, 7.5, 1, 1.9, 6, 4, 6.3, 0.5, 10],
colors=>[
'#ff0000',
'#00ff00',
'#0000ff',
'#ffff00',
'#ff00ff',
'#00ffff',
'#000000',
'#808000',
'#800080',
'#008080',
],
pointSize=>5,
);
$g->render($img,2,2);
Im Browser:
[Nur im Browser sichtbar]
Wenn Eigenschaft colors
definiert ist, werden die Punkte und Verbindungslinien in den angegebenen Farben dargestellt. Die Linie hat die Farbe des Anfangspunktes, der letzte Punkt hat keine Verbindungsline. Mit pointColor
oder lineColor
kann die Punkt- oder Linienfarbe auf eine bestimmte Farbe festgelegt werden (beide im Falle von colors
fix einzustellen, macht wenig Sinn, denn dann hat colors
keinen Effekt mehr). Die Endpunkte sind hier im Gegensatz zum vorigen Beispiel vollständig dargestellt, da wir das Bild um 4 Pixel breiter und höher gemacht haben als den Plotbereich.
Größe Plotregion anpassen mit adaptPlotRegion
Code:
require Quiq::Gd::Image;
require Quiq::Gd::Component::Graph;
my ($width,$height) = (504,104);
$img = Quiq::Gd::Image->new($width,$height);
$img->background('#ffffff');
$img->border('#d0d0d0');
my $g = Quiq::Gd::Component::Graph->new(
width=>$width,
height=>$height,
pointSize=>5,
adaptPlotRegion=>1,
x=>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
y=>[0, 9, 7.5, 1, 1.9, 6, 4, 6.3, 0.5, 10],
colors=>[
'#ff0000',
'#00ff00',
'#0000ff',
'#ffff00',
'#ff00ff',
'#00ffff',
'#000000',
'#808000',
'#800080',
'#008080',
],
);
$g->render($img);
Im Browser:
[Nur im Browser sichtbar]
Mit adaptPlotRegion
wird der Plotbereich so verkleinert, dass Punkte am Rand vollständig sichtbar sind.
METHODS
Konstruktor
new() - Konstruktor
Synopsis
$g = $class->new(@keyVal);
Description
Instantiiere ein Grafik-Objekt mit den Eigenschaften @keyVal (s. Abschnitt ATTRIBUTES) und liefere eine Referenz auf das Objekt zurück.
Zeichnen
render() - Zeichne Grafik
Synopsis
$g->render($img);
$g->render($img,$x,$y,@keyVal);
$class->render($img,$x,$y,@keyVal);
Description
Zeichne die Grafik in Bild $img an Position ($x,$y). Die Methode liefert keinen Wert zurück.
Objektmethoden
xMin() - Minimum des X-Wertebereichs
Synopsis
$xMin = $g->xMin;
Description
Liefere das Minimum des X-Wertebereichs, das entweder beim Konstruktoraufruf gesetzt oder aus den Daten ermittelt wurde.
xMax() - Maximum des X-Wertebereichs
Synopsis
$xMax = $g->xMax;
Description
Liefere das Maximum des X-Wertebereichs, das entweder beim Konstruktoraufruf gesetzt oder aus den Daten ermittelt wurde.
yMin() - Minimum des X-Wertebereichs
Synopsis
$yMin = $g->yMin;
Description
Liefere das Minimum des Y-Wertebereichs, das entweder beim Konstruktoraufruf gesetzt oder aus den Daten ermittelt wurde.
yMax() - Maximum des Y-Wertebereichs
Synopsis
$yMax = $g->yMax;
Description
Liefere das Maximum des Y-Wertebereichs, das entweder beim Konstruktoraufruf gesetzt oder aus den Daten ermittelt wurde.
VERSION
1.222
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.