User Tools

Site Tools


google_timeseries

Darstellung von Zeitreihen mit google

Neben www.d3js.org bietet Google eine einfache Möglichkeit an, Daten grafisch darzustellen.

Beispiel:

1. Integration der Bibliothek

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

2. Implementierung der Grafik mit Javascript:

<script type="text/javascript">
    google.charts.load('current', {'packages':['corechart', 'line']});
    google.charts.setOnLoadCallback(drawChart);
 
    function drawChart() {
        var data = google.visualization.arrayToDataTable([
          [{label:'Time', id:'time', type:'date'}, {label:'Rate', id:'rate', type:'number'}],
          [new Date('2018-06-12'),  1000],
          [new Date('2018-06-14'),  1170],
          [new Date('2018-06-16'),  1260],
          [new Date('2018-06-20'),  1030]
        ]);
        var options = {
          title: 'Kursentwicklung: ' + konzern,
          //curveType: 'function',
          legend :'none',  //legend: { position: 'bottom' },
          pointSize: 5,
          hAxis: {  title: 'Zeit', format: 'd/MM' },
          vAxis: {  title: 'Kurs',  gridlines: { color: '#aaa', count: 10 }    }
    };
 
    var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
    chart.draw(data, options);
    }
    </script>

3. Der Inhalt der Webseite:

<body>
    <div id="curve_chart" style="float:left; width: 1100px; height: 700px"></div>
</body>
</html>

Dynamische Daten aus einer SQLITE3-Datenbank erzeugen Es muss nur die Definition der Zeilen var data = … ersetzt werden.

var data = google.visualization.arrayToDataTable([
      [{label:'Time', id:'time', type:'date'}, {label:'Rate', id:'rate', type:'number'}] ]);
   <?php
      $liste = getKursAsJSON($konzern);
      for ( var i = 0; i < liste.length; i++) { 
            var d = liste[i][0];  // yyyy-mm-dd hh:mm:ss
            var k = liste[i][1];
            var parts =d.split(' ');
            var parts2 = parts[0].split('-');
            data.addRows([ [new Date(parts2[0], parts2[1]-1, parts2[2]), k] ]);
            //console.log(parts2[0]);
        }
   ?>
    //console.log(liste); 

Anmerkungen:

Die php-Funktion getKursAsJSON($konzern) liefert zu einem Konzernname den Kurs aus der Datenbank im JSON-Format [[“2018-08-11 13:12:44”,1221.23],[“2018-08-12 13:11:56”, 1231.45],…].

In einer Schleife werden alle Einträge in das Javascript-Array data mit der Methode addRows() eingefügt. Dabei muss das Datum in die Werte Jahr, Monat und Tag zerlegt werden.

  • parts[0] enthält das Datum,
  • parts2 enthält die jeweiligen Anteile Jahr-Monat-Tag. Da der Monat Januar mit 0 beginnt, muss hier korrigiert werden.

Datenbankabfrage:

  function getKursAsJSON($konzern) {
      $query="SELECT time,kurs FROM 'daxkurse' WHERE konzern='$konzern' ORDER BY 'time' DESC";
 
      // --- Datenbank abfragen
      $db = new SQLite3('dax.sqlite');
      $result = $db->query($sql);
      $tab= array ( );
      while ($row = $result->fetchArray()) {
          array_push($tab, array($row['time'],$row['kurs']));
      }
      $db->close();
 
      // --- Ergebnis im JSON-Format zurückgeben
      return json_encode($tab);  
  }  
 
google_timeseries.txt · Last modified: 2024/03/11 13:04 by walter