use Herbaer::Punktediagramm; # "Welt"-Koordinaten my $points = [ [1, 2], [4, 8], [7, 9], [10, 7], [11, 8] ]; # Führungspunkte einer C-Bezier-Kurve in Weltkoordinaten my $cbezier = [ [1, 2], [4, 7], [8, 7], [11, 6] ]; my $pd =new
Herbaer::Punktediagramm (3000, 2000, "Titel"); $pd ->add_pointset
("Punktmenge", $points); $pd ->add_cbezier
("Kurve", $cbezier); $pd ->y_autorange
(); # $pd ->y_autorange_step
(4); $pd ->x_autoticks
(); $pd ->scale
(100, 2950, 2900, 50); $pd ->write_xml
("diagramm.xml");
Alle Funktionen geben das Objekt selbst zurück.
Erzeugt ein neues Objekt zur Ausgabe der Daten für ein Diagramm mit Punktmengen und Linien (C-Bezier-Kurven).
$width
und $height
sind die Breite und die Höhe des Diagramms, $title
der optionale Titel.
Fügt dem Diagramm eine Menge von Punkten hinzu.
$name
ist eine Bezeichnung, die der Punktmenge zugeordnet ist. $points
ist eine ARRAY-Referenz der Form [ [x1, y1], [x2, y2], ....]
. Die Koordinatenwerte sind „Weltkoordinatenwerte”.
Fügt dem Diagramm eine C-Bezier-Kurve hinzu.
$name
ist eine Bezeichnung, die der Bezier-Kurve zugeordnet ist.
$cbezier
ist eine ARRAY-Referenz der Führungspunkte der C-Bezier-Kurve in „Weltkoordinaten” der Form [ [x(1), y(1)], [x(2), y(2)], .... [x(3n+1), y(3n+1)] ]
.
Bestimmt den y-Ausgabebereich, die Markierungen an der y-Achse und deren Beschriftungen.
$min
ist die Mindestzahl der Intervalle, in die die Achsenmarkierungen den y-Ausgabebereich zerlegen. Der Default-Wert ist 7.
Der „Echtwertebereich” ist das Intervall zwischen dem kleinsten und dem größten y-Wert, der als y-Koordinate in einer Punktmenge oder als Führungspunkt einer C-Bezier-Kurve vorkommt. Als Schrittweite $step
wird die größte Zahl bestimmt, die eine Zehnerpotenz oder das Doppelte oder das Fünffache einer Zehnerpotenz ist und deren $min
-Faches nicht größer ist als die Länge des Echtwertebereichs. Dann wird die Funktion $pd ->
aufgerufen.y_autorange_step
($step)
Bestimmt den y-Ausgabebereich, die Markierungen an der y-Achse und deren Beschriftungen. $step
muss eine positive Zahl sein.
Die untere Grenze des y-Ausgabebereichs ist das größte ganzzahlige Vielfache der Schrittweite $step
, das nicht größer ist als der kleinste vorkommende y-Wert in einer Punktmenge oder der Liste der Führungspunkte einer C-Bezier-Kurve. Die obere Grenze des y-Ausgabebereichs ist das kleinste ganzzahlige Vielfache der Schrittweite $step
, das nicht kleiner ist als der größte vorkommende y-Wert und größer als die untere Grenze des y-Ausgabebereichs ist.
Die y-Achse wird an den ganzzahligen Vielfachen der Schrittweite $step
markiert, jede Markierung mit dem Zahlenwert beschriftet.
Bestimmt automatisch die Markierungen der x-Achse und deren Beschriftungen. $min
ist eine positive ganze Zahl, der Default-Wert ist 7.
Der „Echtbereich” ist das Intervall zwischen dem größten und dem kleinsten x-Koordinatenwert, der in einem Punkt einer Punktmenge oder als Führungspunkt einer C-Bezier-Kurve vorkommt.
Die Schrittweite step
ist die größte Zahl, die eine Zehnerpotenz oder das Doppelte oder das Fünffache einer Zehnerpotenz ist und deren $min
-Faches nicht größer ist als die Länge des „Echtbereichs”.
Die x-Achse wird an den ganzzahligen Vielfachen von step
markiert, die im halboffenen Intervall [xmin + step/2, xmax - step/2)
liegen, zusätzlich am Endpunkt xmax
. xmin
und xmax
stehen hier für die Grenzen des Echtbereichs.
Falls der Ausgabebereich noch nicht definiert ist, definieren der Echtwertebereich und der Echtbereich den Ausgabebereich.
Diese Funktion berechnet die Bildkoordinaten der Punkte und Achsenmarkierungen.
Der Bildkoordinatenwert $sxmin
entspricht der unteren Grenze des x-Ausgabebereichs, $sxmax
der oberen Grenze des x-Ausgabebereichs, $symin
der unteren Grenze des y-Ausgabebereichs und $symax
der oberen Grenze des y-Ausgabebereichs.
Normalerweise steigen die y-Werte in einem Diagramm von unten nach oben, während die senkrechten Bildkoordinaten von oben nach unten steigen. Deshalb ist oft $symin
größer als $symax
.
Die Grenzen des x-Ausgabebereichs und des y-Ausgabebereichs dürfen nicht zusammenfallen.
Diese Funktion gibt die Daten zur Erstellung des Diagramms als XML-Datei aus. $filepath
ist der Dateipfad der XML-Datei. Der XML-Namensraum ist http:herbaer.de/xmlns/20200803/punktediagramm/
.
Die Transformation pd_svg.xslt
erzeugt aus der Ausgabedatei eine SVG-Datei.
Das Modul Herbaer::Punktediagramm
ist zur Ausgabe der Daten für ein Diagramm gedacht. Nur die bisher nötigen Funktionen sind implementiert.
Das Programm ist mit Perl Version 5.24.1 entwickelt. Es benutzt das Modul Herbaer::XMLDataWriter
zur Ausgabe.