wird sich rumgesprochen haben, dass ich fanatischer Fan der Highcharts bin. Und ich hechel schon lange nach der OHLC- und CandleStick-Darstellung. KHC (User aus dem IPS-Forum) hat einen sehr coolen Job mit der Implementierung der HighCharts ins IP-Symcon gemacht, aber diese beiden Charttypen können bisher nicht genutzt werden.

Ich hatte im Sommer 2012 schon mal einen Anlauf genommen, die HC-Implementierung aufzubohren, bin aber mangels PHP-know-How und Verständnis des HC-Scripts gescheitert. Inzwischen hab ich aber durch ein paar PHP-Projekte etwas Wissen aufgesammelt, dieser Tage kam mir das Thema wieder vors innere, geistige Auge und  – zack – gestern hat es Boom gemacht.

also ein wenig im Code rumgeschraubt, nach einiger Zeit hatte ich dann das gewünschte Ergebnis:

 

   

 

 

 

Sehr schick. Genau das, was ich haben will.

 

Wozu braucht man das?

nun, ich finde gerade die OHLC-Darstellung (die sonst eher im Finance-Umfeld zu finden ist) extrem fluffig, um hochverdichtet metereologische Verlaufsdaten (wie in diesem Beispiel: Temperatur-Tageswerte über 365 Tage) so darzustellen, dass deren Kernaussage trotz der hohen Informationsdichte sehr schnell durch das Auge zu erfassen sind. Und zwar ohne sich mir Einzelwerten auseinander setzen zu müssen. In diesem Falle sind es gleich 4 Meßwerte pro Tag, 365Tage: Tages-Maximum, Tagesminimum, Temperatur zu Beginn und Ende eines Tages. Über diese 4 Werte und die OHLC-Darstellung kann man sehr schnell erkennen, mit welcher Temperatur der Tag „eingesstiegen“ ist, zwischen welchem Tages-Min und Tages-Max sich die Temperatur bewegt hat und mit welcher Temperatur sich der Tag an den Darauffolgenden übergeben hat.

 

Wie lese ich ein OHLC-Chart?

grundsätzlich ist über die Länge des senkrechten Striches (pro Tag ein Strich) die Schwankungsbreite der Tagestemperatur zu sehen (langer Strich => starke Schwankung, kurzer Strich => kleine Schwankung). Wobei das obere Ende des Striches das Tages-Maximum markiert, das untere ende – man ahnt es schon – das Tages-Minimum. Der waagerechte Strich von links markiert den Temperaturwert zu Beginn des Tages, der waagerechte Strich nach rechts – ja, Volltreffer! – markiert die Temperatur zum Ende des Tages.

Diese Details kann man mit dem Auge auflösen, wenn man die Graphen auf der Zeitachse heranzoomt (also den Betrachtungszeitraum auf ca. 14 Tage eingrenzt). Zoomt man heraus (z.B. auf 1 ganzes Jahr), identifiziert das Auge  zwar keine Tagesdetails mehr, aber ich sehe (ohne nennenswerte  Rechenleistung aus dem Grübel-Kübel beanspruchen zu müssen) sehr schnell nicht nur den Jahresverlauf der Temperaturkurve, sondern auch deren Schwankungsbreite über das Jahr. Versuch mal, diese Fülle an Infos so leicht verdaulich mit anderen Chart-Typen rüber zu bringen.

und weil es so cool ist, hier ein Live-HighChart (genauer: es ist ein HighStock-Chart!) zum Spielen:

Was ist nun der „Hack“?

KHC hat eine wirklich sehr lexible und effiziente IPS-PHP Schnittstelle gebaut. Jedoch (und was Anderes war zu dem Zeitpunkt noch nicht absehbar) sind hier nur Wertepaare als Datensätze für die Graphen vorgesehen. Ein CandleStick oder OHLC-Chart benötigt aber mindestens 4 Werte pro Datensatz. Da ich leider noch immer nicht vollständig durch das Funktions-Labyrint gestiegen bin, habe ich kurzerhand einen anderen Weg versucht: die Übergabe eines fertig formatierten Datenstrings (statt Datenarray). Dazu musste ich ein klein wenig in den HC-Functions rumschrauben (Bild rechts), aber es klappt hervorragen. Auch alle Anderen, bei  mir im Einsatz befindlichen Charts funktionieren nach wie vor (sind ca. 250 Stück). Im Config-Script (da, wo man die Configurationsdaten für das Chart angibt) musste eine recht Ressourcenfressende IPD-Datenbank-Abfrage rein, die einerseits (welch Überraschung) die Daten der Variable aus der IPS-DB abfragt und andererseits daraus den Datenstring für die HC-Aufgabe häkelt (Bild Links).

 

Download

ich hab mal dieses Beispiel (allerdings ohne die Webcam-Pics im Tooltip) mit Hilfe meines Project Exporters als Plug-and-Play Installationslösung bereit gestellt. Man kann diese Installation bedenkenlos parallel zu einer evtl. schon vorhandenen HC-Installation installieren – oder das bestehende HC-Script damit ersetzen. ID’s noch anpassen (Archive-Handler,Variable), ins Webfront verlinken,  Script starten und staunen! 

 


 

Getagged mit
 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

css.php