Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort des Fachgutachters
Vorwort
1 Einleitung
2 Einführung in eZ Components
3 Die Applikationsbasis
4 Fehlerbehandlung und Debugging
5 Konfiguration
6 Datenbankanbindung
7 ORM mit PersistentObject
8 Template
9 Übersetzung
10 Benutzereingaben validieren
11 Authentifizierung
12 Bildverarbeitung
13 Archive und Dateien
14 Mail
15 Logging
16 Diagramme
17 Feeds und Caching
18 Setup
A Inhalt der Buch-CD
Stichwort

Download:
- ZIP, ca. 2,7 MB
Ihre Meinung?

Spacer
<< zurück
eZ Components von Tobias Schlitt, Kore Nordmann
Das Entwickler-Handbuch
Buch: eZ Components

eZ Components
geb., mit CD
454 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1073-7
Pfeil 16 Diagramme
Pfeil 16.1 Die Graph-Komponente
Pfeil 16.1.1 Ausgabeformate
Pfeil 16.2 Einbindung in die Applikation
Pfeil 16.2.1 Die Aktion erstellen
Pfeil 16.2.2 Einfaches Pie-Chart
Pfeil 16.2.3 Dreidimensional
Pfeil 16.2.4 Eigene Palette definieren
Pfeil 16.2.5 Liniendiagramm erstellen
Pfeil 16.2.6 Formatierung der Elemente
Pfeil 16.3 Weitere Möglichkeiten
Pfeil 16.3.1 Generierung von Bitmaps
Pfeil 16.3.2 Balkendiagramme
Pfeil 16.4 Fazit


Galileo Computing - Zum Seitenanfang

16.3 Weitere Möglichkeiten Zur nächsten ÜberschriftZur vorigen Überschrift

Die Graph-Komponente ist zu umfangreich, um das gesamte Potential der Komponente sowie ihre Erweiterungsmöglichkeiten in diesem Kapitel aufzuzeigen. Eine gute Quelle für die vollständige Dokumentation ist das Tutorial. Ein paar der wesentlichen Anwendungsmöglichkeiten sollen allerdings noch aufgezeigt werden.


Galileo Computing - Zum Seitenanfang

16.3.1 Generierung von Bitmaps Zur nächsten ÜberschriftZur vorigen Überschrift

Wenn es Ihnen nicht möglich ist, SVG zu verwenden, sollten sie häufig Bitmaps mit Hilfe der GD-Extension generieren. Wie in Abschnitt 16.1.1, »Ausgabeformate«, schon angesprochen, ist die Qualität der mit GD generierten Bilder erheblich geringer, weil die Extension einige Features nicht unterstützt und an anderen Stellen, wie dem Zeichnen von halbtransparenten Ellipsenausschnitten, Darstellungsfehler verursacht.

Eine Lösung dafür ist die Verwendung externer Programme zur Konvertierung von SVG in ein Bitmap – zum Beispiel das PNG-Format, das für solche Diagramme optimal ist. Dazu ist allerdings ein Zugriff auf die Kommandozeile aus PHP heraus notwendig. Besonders eignet sich dafür das Programm rsvg aus librsvg sowie inkscape, ein fortgeschrittenes Programmm zur Bearbeitung von Verktorgrafiken. Die Konvertierung ist im Tutorial genauer beschrieben. [http://ezcomponents.org/docs/api/latest/introduction_Graph.html#svg-to-bitmap-conversion ] Selbstverständlich ist es auch möglich, den GD-Treiber direkt zu verwenden. Mit dem angesprochenen Supersampling sind die Resultate immerhin ansehnlicher als die der meisten anderen Graphenbibliotheken, die man für PHP kennt.

$graph = new ezcGraphPieChart();
$graph->title = 'Access statistics';

$graph->driver = new ezcGraphGdDriver();
$graph->options->font = 'tutorial_font.ttf';

$graph->data['Access statistics'] =
    new ezcGraphArrayDataSet( array(
        'Mozilla' => 19113,
        'Explorer' => 10917,
        'Opera' => 1464,
        'Safari' => 652,
    )
);

$graph->render( 400, 200, 'example_gd.png' );

Listing 16.16 Einen Bitmap-Graph rendern

Um den GD-Treiber ezcGraphGdDriver zu verwenden, muss dieser der Eigenschaft $driver des Graph-Objekts zugewiesen werden. Anders als beim Zuweisen eines neuen Renderers oder neuer Datensätze reicht dies allerdings noch nicht aus, um einen anderen Ausgabetreiber zu verwenden. Zusätzlich muss noch eine zum Treiber passende Schriftart zugewiesen werden. Der GD-Treiber kann je nach Konfiguration True-Type-Fonts und Post-Script-Fonts Type 1 verarbeiten. Erstere werden mit der FreeType2-Bibliothek auch antialiased in guter Qualität gerendert.

Abbildung 16.7 Verwendung des GD-Treibers zur Erzeugung des Diagramms

Ein klarer Vorteil des GD-Treibers ist die genaue Berechnung der Schriftgröße und damit eine absolut exakte Positionierung der Texte innerhalb der Graphik.

In dem Beispiel können Sie neben der Verwendung des GD-Treibers noch das bislang nicht gezeigte ezcGraphArrayDataSet sehen. Mit diesem Datensatz lassen sich PHP-Arrays direkt in einen Graphen einfügen.

Bis jetzt haben wir drei der aktuell vier verschiedenen verfügbaren Datensätze vorgestellt. Neben diesen gibt es noch die Möglichkeit, dem ezcGraphNumericDataSet ein Callback zu einer selbst definierten Funktion oder Methode zu übergeben, um mathematische Funktionen abzubilden. Dabei ist die Abtastrate zum Zeichnen des Graphen selbst konfigurierbar, da nicht alle Treiber freie Pfade unterstützen und somit eine Umwandlung von Funktionen zu Kurven nicht effizient einsetzbar wäre.


Galileo Computing - Zum Seitenanfang

16.3.2 Balkendiagramme topZur vorigen Überschrift

Balkendiagramme und Netzdiagramme sind von ihren Eigenschaften und ihren darstellbaren Datensätzen gleichwertig mit Liniendiagrammen.

$graph = new ezcGraphBarChart();
$graph->palette = new gpBlogPalette();
$graph->title = 'Used browsers';

$graph->legend->position = ezcGraph::BOTTOM;

Listing 16.17 Positionieren von Graph-Elementen

Wie zuvor erwähnt, wird der Typ des Diagramms durch die Wahl des Konstruktors beeinflusst. Mit der Wahl der Klasse ezcGraphBarChart wird ein Balkendiagramm erstellt, das von dem Liniendiagramm ableitet und sich nur in zwei Eigenschaften von diesem unterscheidet, sodass alle Optionen und Einstellungen äquivalent verwendet werden können.

Wie Sie in der Ausgabe erkennen, wird die Beschriftung der X-Achse anders gerendert, worauf später noch eingegangen wird. Ansonsten hat sich die Standarddarstellung für Datensätze von Linie auf Block geändert. Sie können über die Eigenschaft $displayType eines Datensatzes diese Darstellung wieder zurück auf ezcGraph::LINE setzen und damit Linien und Balken in einem Diagramm kombinieren. Ebenso ist es genauso möglich, die Angabe $displayType einzelner Datensätze in einem Liniendiagramm auf ezcGraph::BAR zu setzen.

Graph-Elemente wie Legende und Titel können im Graphen frei positioniert werden. Die Legende kann, wie sie im Beispiel sehen, an jeder der vier Seiten positioniert werden, während der Titel zu oberst oder auch im Diagrammfuß dargestellt werden kann.

$graph->data['Access statistics'] =
    new ezcGraphArrayDataSet( array(
        'Mozilla' => 19113,
        'Explorer' => 10917,
        'Opera' => 1464,
        'Safari' => 652,
    )
);

$graph->data['Access statistics']->symbol = ezcGraph::NO_SYMBOL;
$graph->data['Access statistics']->highlight['Opera'] = true;

Listing 16.18 Datensätze im Balkendiagramm

In einem dreidimensionalen Balkendiagramm definiert das Symbol des Datensatzes die Grundform des Balkens: ezcGraph::BULLET zeichnet somit eine Säule, während ezcGraph::NO_SYMBOL die Daten mittels eines normalen Balkens darstellt. Eine Übersicht über alle momentan möglichen Symbole:


ezcGraph::NO_SYMBOL

kein Symbol

ezcGraph::DIAMOND

Raute

ezcGraph::BULLET

gefüllter Kreis

ezcGraph::CIRCLE

nicht-gefüllter Kreis


Sie erinnern sich, dass sich einzelne Daten über die Eigenschaft $highlight hervorheben lassen, was bei einem Tortendiagramm zum Herausrücken eines Tortenstücks führt. Bei Balken- und Liniendiagrammen wird im Fall der Hervorhebung der Datenpunkt mit seinem Wert beschriftet.

$graph->renderer = new ezcGraphRenderer3d();

$graph->renderer->options->legendSymbolGleam = .5;
$graph->renderer->options->barChartGleam = .5;

$graph->render( 500, 200, 'bar_example.svg' );

Listing 16.19 Balkendiagramm rendern

Auch für Balkendiagramme und Legenden gibt es Optionen im Renderer, um das Erscheinungsbild zu verbessern, indem Glanzeffekte hinzugefügt werden. Eine vollständige Liste der Effekte und Modifikationsmöglichkeiten findet sich in der API-Dokumentation. [http://ezcomponents.org/docs/api/latest/Graph/ezcGraphRendererOptions.html ]

Abbildung 16.8 Dreidimensionales Balkendiagramm

Die Beschriftung der X-Achse ist typisch für Balkendiagramme und unterscheidet sich maßgeblich von der Variante, die zuvor beim Liniendiagramm zu beobachten war. Je nach Diagrammtyp wird ein sinnvoller Algorithmus für die Beschriftungen gewählt, die in den von ezcGraphAxisLabelRenderer ableitenden Klassen implementiert sind. Diesen Algorithmus können Sie auch selbst bestimmen, indem Sie ihn manuell setzen.

$chart->xAxis->axisLabelRenderer =
    new ezcGraphAxisRotatedLabelRenderer();
$chart->xAxis->axisLabelRenderer->angle = 45;

Listing 16.20 Algorithmus für die Achsenbeschriftung konfigurieren

Die Graph-Komponente stellt dazu verschiedene Algorithmen zur Verfügung:

  • ezcGraphAxisExactLabelRenderer Dieser Algorithmus wurde bei den numerischen Achsen in den gezeigten Bildern verwendet und stellt sicher, dass alle Schritte auf der Achse mit einem Text versehen sind. Dazu wird beim letzten Schritt auf der Achse der Text unterhalb des Schritte platziert. Dies mag unschön erscheinen, stellt aber sicher, dass kein Text durch andere Elemente im Graphen verdeckt ist.
  • ezcGraphAxisCenteredLabelRenderer Dieser im Liniendiagramm auf der Y-Achse verwendete Algorithmus platziert den Text zentriert am markierten Schritt auf der Achse. Da sich der Text an der Null-Position mit der anderen Achse schneiden würde, und dadurch schlecht lesbar wäre, wird er dort nicht gezeichnet. Dieses Verhalten ist über die Eigenschaft $showZeroValue konfigurierbar.
  • ezcGraphAxisRotatedLabelRenderer Ein nützlicher Algorithmus, wenn viele Texte an einer Achse angezeigt werden sollen, da durch die freie Rotation mehr Texte auf der Achse Platz finden. Die Texte werden dabei vertikal zentriert an den Schritten der Achse ausgerichtet.
  • ezcGraphAxisBoxedLabelRenderer Dieser Algorithmus zeichnet die Texte zwischen zwei Schritten auf der Achse, was optimal für Balkendiagramme ist. Im letzten Beispiel zu einem Balkendiagramm war dies zu sehen.
  • ezcGraphAxisRadarLabelRenderer Da der Algorithmus zum Zeichnen der Achsenbeschriftungen auch das Zeichnen des Gitters im Diagrammhintergrund übernehmen muss, existiert ein spezieller Algorithmus für Netzdiagramme, der ein rotiertes Gitter zeichnet.

Jeder der Algorithmen ist mit allen Achsen und Diagrammtypen verwendbar, doch kann eine unpassende Kombination in Einzelfällen zu optisch nicht ansprechenden Resultaten führen.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: PHP 5.3 und MySQL 5.1






 PHP 5.3 und
 MySQL 5.1


Zum Katalog: Besser PHP programmieren






 Besser PHP
 programmieren


Zum Katalog: Webshops mit Magento






 Webshops mit
 Magento


Zum Katalog: Sichere Webanwendungen






 Sichere
 Webanwendungen


Zum Katalog: PHP 5.3 und MySQL 5.1 - Videotraining






 PHP 5.3 und
 MySQL 5.1 -
 Videotraining


Zum Katalog: Apache 2






 Apache 2


Zum Katalog: Suchmaschinen-Optimierung für Webentwickler






 Suchmaschinen-
 Optimierung
 für Webentwickler


Zum Katalog: Joomla! 1.5






 Joomla! 1.5


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de