Programmieren > Sprachen > JavaScript

jqPlot

Installation

JavaScript-Files

Das neueste jQuery (jQuery - Homepage) und jqPlot (jqPlot - Homepage) herunterladen. Ich habe der Übersichtlichkeit wegen alle jqPlot-Dateien in ein eigenes Verzeichnis ausgepackt.

jpPlot benötigt jquery als Grundlage. Deshalb muss es vor jqPlot eingebunden werden. In der Datei erichweigand.js werden dann die Javascript-Programmierungen vorgenommen, um die Graphen zu erstellen. Deshalb wird diese als letzte eingebunden.

<script type='text/javascript' src='/js/jquery.min.js'></script>
<script src="js/jqplot/jquery.jqplot.min.js"></script>
<script type='text/javascript' src='/js/erichweigand.js'></script>

CSS-Files

Dann muss noch die CSS von jpPlot eingebunden werden und schon ist jqPlot fertig eingerichtet.

<link rel="stylesheet" type="text/css" href="js/jqplot/jquery.jqplot.css" />

DIV-Element

An der Stelle im HTML-Dokument, an der später der Graph erscheinen soll, muss ein leeres DIV-Element stehen.

<div id="myChart" style="width: 600px"></div>

JavaScript-Code

Mit dieser Vorarbeit kann mit diesem JavaScript-Code bereits ein Graph erstellt werden.
$(function () {
    $.jqplot('myChart', [[1,9,4,3,8,5]]);
});

Das Ergebnis sieht so aus:

Die HTML-Datei als ganzes ist hier zu finden.

Programmierung

Daten-Formate

Die Daten werden wie oben gesehen als zweites Argument übergeben. Der Typ des Arguments ist eine Liste. Jedes Element dieser Liste wird als eigener Graph dargestellt. D.h. jedes Element dieser Liste ist wieder eine Liste von Datenpunkten für diesen Graphen. Hierfür gibt es mehrere Möglichkeiten.

Data-Renderer

Daten müssen häufig von externen Datenquellen geholt werden und sind selten im korrekten Format, um als Graph dargestellt zu werden. Das holen und aufbereiten der Daten erledigen sogenannte Data-Renderer. Dies sind JavaScript-Funktionen, die von jqPlot die URL der Datenquelle (url), das jqPlot-Objekt (plot) und das Options-Objekt (options) übergeben bekommen. Die Rückgabe der Funktion muss aus Daten bestehen, die einem der obigen Formate entspricht.

var rendererFunction = function (url, plot, options) {
    data = [];
    return data;
}

Die Funktion muss in den Optionen von jqPlot übergeben werden. Das zweite Argument von jqPlot ist die URL der Datenquelle.

var plot = $.jqPlot('myChartDiv','/data/source.json',{
    dataRenderer: rendererFunction
});

Konfigurationen

Der Graph kann beim Erstellen konfiguriert werden. Dafür wird ein dritter Parameter übergeben. Dies ist ein assoziatives Array mit vielen Möglichkeiten der Konfiguration. Im Beispiel wird der Titel des Graphen gesetzt.

$.jqplot('myChart', [[1,9,4,3,8,5]], {title: 'My Chart'});

Der genaue Aufbau des Optionen-Objekts wird auf der Seite Optionen erklärt.

Datum auf der X-Achse

Häufig wird bei Graphen auf der x-Achse das Datum dargestellt. Damit dies in jqPlot funktioniert muss der dateAxisRenderer nach jqPlot eingefügt werden.

    <script src="js/jqplot/plugins/jqplot.dateAxisRenderer.js"></script>

Ist dieses Renderer installiert kann nun der x-Wert der Liste durch ein Datum ersetzt werden. Damit dies funktioniert muss noch über die Konfigurations-Variable mitgeteilt werden, dass für das Erstellen der X-Achse nun der dateAxisRenderer zuständig ist. Dies sieht dann so aus.

$.jqplot(
    'myChart',
    [[['2018-01-05', 2], ['2018-01-10', 4], ['2018-01-25', 3]]],
    {
        axes: {
            xaxis: {renderer: $.jqplot.DateAxisRenderer}
        }
    }
);