Anschaulich zusammengefasst: Diagramm-Bibliotheken für Android

Artikel als PDF herunterladen:
Download Anschaulich zusammengefasst: Diagramm-Bibliotheken für Android
Download Erschienen in Java aktuell (Ausgabe 03/2013)

Android ChartingInternet, Kommunikation, Unterhaltung – wofür man bis vor ein paar Jahren noch einen Desktop-PC oder Laptop benötigte, kann man heute in einer Hand halten und mit der anderen bedienen. E-Mails lesen auf dem Smartphone und surfen im Internet oder chatten auf dem Tablet sind keine futuristischen Anwendungsfälle mehr. Eine Vielzahl von Apps stehen dafür bereit.

Anders als im Consumer-Bereich sind professionelle Anwendungen rar gesät. Warum überwachen Administratoren nicht mobil ihre Serverlandschaft, prüfen Sales-Manager nicht die Verkaufszahlen der letzten Tage oder sehen Fußballtrainer nicht den aktuellen Trainingsstand ein?

Damit diese Anwendungsfälle realisiert werden können, benötigt man Bibliotheken zur visuellen Aufbereitung von Daten. Derartige Bibliotheken sollen im Folgenden für Android unter die Lupe genommen werden.

Ausgepackt, angeschaut, ausprobiert

Die Untersuchung der Bibliotheken geschah unter rein pragmatischen Gesichtspunkten. Dabei ging es weitestgehend um Fragen wie: Ist die API umgänglich? Ist die JavaDoc verständlich? Kann ich die gezeichneten Diagramme relativ einfach auf meine Bedürfnisse anpassen? Wo finde ich schnelle Hilfe?

Als Szenario für die Demo-Applikation dient folgendes Bild: Ein Wartungsingenieur läuft durch eine Halle mit Maschinen und lässt sich die Ausfälle (also Fehler) einer jeden Maschine in einem bestimmten Zeitraum anzeigen. Alle Demo-Applikationen basieren mit der gleichen Datenbasis, um die Vergleichbarkeit zu gewährleisten. Die Demo-Applikationen sind im Anschluss an den Artikel als Download verfügbar.

Übersicht

Nachdem die prinzipielle Verwendungsweise der Bibliotheken klar war, wurde die Anpassbarkeit der erzeugten Diagramme untersucht. Dazu wurden folgende Punkte betrachtet:

  • Titel: Lässt sich der Diagrammtitel anpassen?
  • Achsen: Lassen sich die Diagrammachsen anpassen, die Farben ändern, die Achsenskalierungen ändern, die Skalierungsbeschriftungen (Labels) anpassen?
  • Achsentitel: Lassen diese sich anpassen?
  • Datenbereich: Kann man den Hintergrund ändern? Ist eine Zoom- bzw. Scroll-Funktion bereits in der Bibliothek implementiert? Kann das Gitternetz geändert werden?
  • Datenbeschriftung: Kann man einzelne Messpunkte beschriften und wenn ja, kann diese Beschriftung angepasst werden?
  • Datendarstellung: Lassen sich Linien, Balken, Punkte, etc. in Größe und Aussehen ändern?
  • Legende: Lässt sich die Legende anpassen?
  • Implementierungsspezifika: Hier wurde untersucht, wie sich die Diagramme darstellen lassen und wie sie deklariert werden können.

Das Ergebnis der Untersuchung findet sich zusammengefasst in Tabelle 1.

Tabelle 1

Die Bibliotheken im Detail

AChartEngine

AChartEngine ist eine Open-Source-Bibliothek, deren Quelltext bei Google-Code gehostet wird. Die Bibliothek unterstützt alle gängigen Diagramm-Typen, z. B. Liniendiagramme, Balkendiagramme, Kuchendiagramme – um nur einige zu nennen. Die Bibliothek steht unter der Apache License 2.0. Als minimale Android-Version wird 1.6 gefordert. Die aktuelle Version ist 1.0.0.

Der Start mit dieser Bibliothek geht relativ schnell vonstatten, obwohl keine Tutorials oder kommentierte Beispiele auf der projekteigenen bzw. der Google-Code-Seite vorhanden sind. Die JavaDoc ist in den meisten Fällen nur ausreichend. Glücklicherweise gibt es jedoch ein Beispiel-Projekt, dessen Quellen man einsehen kann. Dieses hilft, die Bibliothek zu verstehen und zu benutzen.

Im Issue-Tracker der Google-Code-Seite gibt es sporadische Anfragen, die von den Entwicklern auch beantwortet werden. Falls man auf Probleme mit der Bibliothek oder Bugs in ihr stoßen sollte, kann man hier auf Unterstützung hoffen.

AndroidPlot

Die aktuelle Version von AndroidPlot ist 0.5.2. Diese Bibliothek ist ebenfalls ein Open-Source-Projekt. Sie bietet nur vier verschiedene Diagramm-Typen an. Dazu gehören Linien-, Balken-, Streuungs- und Schrittdiagramme. AndroidPlot ist ebenfalls ab Android-Version 1.6 einsetzbar und steht auch unter der Apache License 2.0.

Auf der projekteigenen Webseite gibt es einen Quickstart-Guide, der den Einstieg in diese Bibliothek vereinfacht. Auf dieser Seite gibt es noch weitere Tutorials, welche die grundlegenden Funktionen veranschaulichen. Die JavaDoc ist leider sehr mangelhaft. Viele der Klassen bzw. Methoden sind gar nicht oder nur rudimentär dokumentiert. Es gibt jedoch auf der Bitbucket-Seite des Projekts weitere Beispiele mit Quellcode, um tiefer in die Materie vorzustoßen.

Glaubt man der Projekt-Webseite, so wird AndroidPlot schon in über 500 Apps eingesetzt. Es gibt auf der Seite auch ein Forum mit reger Beteiligung.

AFreeChart

AFreeChart ist ebenfalls ein Open-Source-Projekt. Die aktuelle Version ist 0.0.4. Einsetzbar ist es ab Android-Version 2.1. Die Bibliothek wird unter der GNU Lesser GPL ausgeliefert. Die Entwickler haben es sich zur Aufgabe gemacht, JFreeChart auf die Android-Platform zu portieren. Dabei haben sie eine Vielzahl der Funktionen von JFreeChart übernommen, jedoch nicht alle. AFreeChart unterstützt u.a. folgende Diagrammtypen: Balken, Linien, Kuchen und Streuungen. Die Bibliothek wird bei Google-Code gehostet.

Der Einstieg in die Bibliothek von AFreeChart gestaltet sich relativ schwierig im Vergleich zu den anderen Bibliotheken. Es gibt weder einen Quickstart-Guide noch ein Tutorial. Die Beispiel-Applikation, die sich auf der Google-Code-Seite herunterladen lässt, zeigt eine Vielzahl von möglichen Diagrammen. Jedoch ist der Beispiel-Quellcode, der sich ebenfalls auf dieser Seite einsehen lässt, nicht der, der zu der Applikation gehört. Dessen Umfang ist um einiges geringer. Das verwirrt noch mehr. Eine Brücke lässt sich bei dieser Bibliothek zu JFreeChart schlagen. Da die meisten Klassen, die von dort portiert wurden, ihre Namen behalten haben, kann man auf der JFreeChart-Seite nach Verwendung und Hilfe suchen. Andererseits ist aber die JavaDoc sehr gut und hilft auch beim Vertiefen der Bibliothek.

Leider gibt es anscheinend keinerlei Feedback der Entwickler auf Probleme der Nutzer. Im Issue-Tracker auf der Google-Code-Seite sind noch Beiträge von Anfang 2011 offen und unkommentiert.

aiCharts

aiCharts der Firma ArtfulBits ist eine Bibliothek, deren Quellcode nicht offen ist und für die man zur Nutzung einen Entwickler-Account und eine einjährige Subscription benötigt. Es besteht jedoch die Möglichkeit, einen Trial der Versionen 1.7 (stable) bzw. 2.0 (beta) herunterzuladen. Die Bibliothek kann ab Android-Version 1.5 eingesetzt werden. Die Palette der Bibliothek ist weit gefächert.

Durch den im Download-Paket mitgelieferten Quick-Start-Guide und die ausführlichen Quellcode-Beispiele ist der Einstieg in diese Bibliothek schnell gemacht. Auch das weitere Arbeiten mit der Bibliothek gestaltet sich dadurch relativ einfach. Die JavaDoc ist sehr gut. Es finden sich sogar in wichtigen Klassenbeschreibungen Bilder und Beispiele, wie man etwas implementieren sollte. So kennt man es auch von der JavaDoc der Android-API.

ArtfulBits bietet neben dem Support, den man sich mit der Subscription sichert, noch ein Forum, in dem die Entwickler der Bibliothek detailliert auf Fragen der Benutzer eingehen.

TeeChart

TeeChart ist eine Diagramm-Bibliothek der Firma Steema Software. Auch hier benötigt man eine Enwicklerlizenz und eine jährliche Subscription. Die Bibliothek unterstützt alle gängigen Diagrammtypen, darunter u.a. Linien, Balken, Häufigkeiten und Schnittmengen. Die aktuelle Version ist 2012, TeeChart lässt sich ab Android-Version 2.1 einsetzen.

Das Download-Paket umfasst – wie auch schon bei aiCharts – eine Menge an Tutorials und Beispielanwendungen nebst Quellcode, so dass der Einstieg in die Bibliothek relativ leicht fällt und schnell vonstatten geht. Leider ist die JavaDoc nicht ganz so hilfreich wie gehofft. Die Klassenbeschreibungen bestehen nur aus Copyright-Informationen und viele Beschreibungen der Funktionen scheinen generiert.

Neben dem Support, den Subscription-User von Steema bekommen, gibt es auf der Webseite auch ein Forum, in dem gestellte Fragen recht schnell beantwortet werden.

Als einzige der untersuchten Bibliotheken kann TeeChart Diagramme auch in 3D darstellen.

Weitere Bibliotheken

Es gibt natürlich noch weitere Bibliotheken, mit denen sich Diagramme zeichnen lassen. Dazu gehören u.a. RChart, DroidCharts, Android Chart und Snowdon. Diese wurden jedoch aus der Betrachtung herausgenommen, da deren letzte Aktivität (hinsichtlich Quellcode-Commits oder Foren/Wiki-Einträge) mehr als zwei Jahre zurück liegt.

ChartDroid, dessen letzte Aktivität auch im November 2011 zu verzeichnen ist, bietet noch einen weiteren Ansatz der Diagrammerstellung. Statt die Bibliothek in die zu erstellende Applikation einzubinden, wird von der Applikation vorausgesetzt, dass eine weitere Applikation – in diesem Fall ChartDroid – auf dem Zielgerät vorhanden ist. ChartDroid wird dann per Intent gerufen und stellt das Diagramm anschließend bereit. Dieser Ansatz scheint nicht praktikabel genug, um ihn weiter zu verfolgen.

Fazit

Alle Bibliotheken tun genau das, wozu sie entwickelt wurden. Und das nicht mal schlecht. Abgesehen von AndroidPlot, decken alle eine weite Palette an Diagrammtypen ab. Benötigt man einen sehr speziellen Typ, so muss man sich die Beschreibungen der Bibliotheken ansehen, um zu erkennen, ob diese Bibliothek den gewünschten Typ unterstützt.

Um zu entscheiden, welche Bibliothek man einsetzen möchte, stellt sich hier nur die Frage, inwieweit man die aufgelisteten Bibliotheken bzw. deren erstellten Diagramme an die eigenen Wünsche anpassen kann.

Ein anderes Entscheidungskriterium könnte die Art und Weise sein, wie die Diagramme zur Anzeige gebracht werden. So bietet zum Beispiel AFreeChart keine Views für die verschiedenen Diagrammtypen, sondern der Entwickler muss die onDraw()-Methode eines Kind-Views überschreiben. In dieser wird dann das Diagramm auf den View-Bereich gezeichnet. Diese Art der View-Darstellung passt eigentlich nicht in das Android-Umfeld und ist sicher dem Umstand geschuldet, dass diese Bibliothek von einer Swing-Bibliothek portiert wurde. Andere Bibliotheken (AChartEngine, AndroidPlot, aiCharts und TeeChart) machen es da dem Benutzer schon einfacher: Sie bieten Views an, die in manchen Fällen sogar per Layout-XML deklariert werden können.

Beispiele zum Herunterladen

Links

AChartEngine

AndroidPlot

AFreeChart

aiCharts

TeeChart

Kommentare sind abgeschaltet.