Open Source im professionellen Einsatz

Ansichtssache

Neben den bislang vorgestellten einfachen Grafikobjekten wie Punkten und Linien bietet Ggplot2 ein umfangreiches Repertoire grafischer Elemente an, die der Anwender praktisch beliebig miteinander kombinieren kann. Abbildung 2 zeigt eine kleine Auswahl davon, eine vollständige Liste findet sich auf der Ggplot2-Homepage [3].

Abbildung 2: Eine kleine Auswahl der Grafikobjekte, die Ggplot2 anbietet.

Abbildung 2: Eine kleine Auswahl der Grafikobjekte, die Ggplot2 anbietet.

Zurück zum vollständigen Demo-Datensatz: Gegenüber der eingeschränkten Variante enthält er mehrere Algorithmentypen. Sie sollen durch die unterschiedliche Form (»shape« ) der Plot-Symbole erkennbar sein. Der Aufruf in Listing 4 erzeugt den Plot in Abbildung 3. Neben der kompletten Datenquelle »dat« anstelle der Teilmenge »dat.sub« und der »shape« -Ästhetik enthält der Code eine weitere Neuerung: Die Größe der mit »geom_point()« erzeugten Punkte ist mittels »size« auf »3« gesetzt und damit gegenüber der Standardeinstellung 2 etwas vergrößert.

Listing 4

Verschiedene Formen

01 g <- ggplot(data=dat,
02             aes(x=Datenumfang, y=Durchsatz,
03                 colour=Konfiguration,
04                 shape=Algorithmus)) +
05      geom_point(size=3) + geom_line() +
06      scale_x_log10()

Abbildung 3: Der Plot des vollständigen Beispieldatensatzes mit verschiedenen Formen für die verwendeten Algorithmen.

Zu den direkt im »ggplot« -Objekt eingestellten Ästhetiken gibt es zwei Unterschiede: Erstens ist die Einstellung nicht an die Daten gekoppelt, sondern verwendet einen fixen Wert. Daher ist auch keine Einbindung über den »aes« -Parameter nötig, die Einstellung erfolgt direkt. Zweitens gilt die Vorgabe nur für die Punkt-Ebene, beeinflusst also die ebenfalls eingezeichneten Linien nicht. Nicht alle grafischen Elemente kennen alle ästhetischen Abbildungen: Wie Abbildung 3 zeigt, unterstützen nur Punkte, aber nicht Linien die Angabe »shape« .

Der letzte Zusatz, »scale_x_log10()« , führt eine Skalentransformation durch: Anstelle der linearen kommt für die x-Achse nun eine logarithmische Skala zur Verwendung. Dass Ggplot2 auch in diesem Fall die Achsen so anpasst, dass alle Ebenen passend untergebracht sind, versteht sich von selbst.

Facetting

Eine aussagekräftige Abbildung soll möglichst viele Informationen enthalten, um alle Facetten der Daten wiederzugeben. Natürlich birgt dies die Gefahr, überfrachtete und ohne langes Meditieren unverständliche Plots zu erzeugen. (Die Grenze ist fließend: Während es dem Leser wissenschaftlicher Monografien durchaus zuzumuten ist, zehn Minuten über eine Abbildung nachzudenken, wird die Freude in der Redaktion von Boulevardzeitungen tendenziell geringer ausfallen.) Eine mögliche Lösung besteht darin, die Facetten der Daten nicht implizit über Farben und Symbole, sondern explizit über Untergraphen darzustellen.Ggplot2 setzt dies über das Facetten-Konzept um, das mittels »facet_grid()« verfügbar ist.

Um die Daten wie in Abbildung 4 auf mehrere Untergraphen zu verteilen, ist die Befehlssequenz aus Listing 5 notwendig. Der Ausdruck »facet_grid(~Konfiguration)« legt fest, dass Ggplot2 für alle möglichen Konfigurationen (also A, B und C) einen eigenen Unterplot anlegt. Jeder Unterplot zeigt eine eigene Teilmenge der Gesamtdaten, verwendet aber identische Ebenen und ästhetische Mappings.

Listing 5

Facetten

01 g <- ggplot(data=dat,
02             aes(x=Datenumfang, y=Durchsatz,
03                 colour=Algorithmus)) +
04      geom_point(aes(colour=Algorithmus)) +
05      facet_grid(~Konfiguration)

Abbildung 4: Eindimensionale Facettierung: Für jede Konfiguration erzeugt die Software einen eigenen Untergraphen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook