HTML5 und Javascript: Daten visualisieren mit Plotly.JS Mit Plotly lassen sich relativ unkompliziert Daten in allen möglichen Darstellungsarten visualisieren.
z.B.
Klangdaten einzelner Musikinstrumente: Timbre Features: Formanten, Spectral Centroids, dynamische Klangfarbenfelder Registergrenzen: Flöte, Oboe, Klarinette, Fagott Messwerte an Inkubatoren: Innerhalb und außerhalb des Inkubators, Pegel in dB(A), Pegel in dB(SPL) u.v.a.m.: Raumakustische Daten , Glockenklänge , Taubengurren, HipHop: Produzenten vs, Interpreten , Klangfarbe-Farbe-Synästhesie Im Vergleich zu anderen Daten-Visualisierungs-Libraries ist Plotly die mit Abstand vielseitigste Library mit einer großen Community. Sobald
man sich die aktuelle Plotly-Library unter Zunächst legt man die heruntergeladene Datei (plotly-latest.min.js) in einen Ordner (z.B. mit dem Namen "header"), in dem sich auch die Datei mit den darzustellenden Daten befinden sollte. Hier wäre dies z.B. die Datei lukeme_array.js , die aus Signalanalysen der Lukeme-Klänge in Excel hervorgegangen ist (lukeme.xls).
Von CSV (bzw. Excel-Sheet) zum Javascript-Array In lukeme_array.js sind die einzelnen Tabellenspalten aus der Excel-Datei als Arrays (= Listen) dargestellt, indem zunächst jeweils der Array-Name initialisiert wird (z.B. var name_array = []; oder var pitch_array = []; ) und dann die eckigen Klammern ([]) mit den jeweiligen Werten gefüllt werden. Buchstaben
oder Wörter werden hierbei durch Apostrophe und Kommata getrennt
(z.B. ['a2', 'h2', 'e2', 'f2',
'h1', ...]), Zahlen werden nur durch Kommata getrennt (z.B. [880,
1006, 671, 703, 502, ...]). Hat
man mehrere Excel-Dateien (z.B. die Hautleitwerte
von mehreren Versuchspersonen als txt.- oder csv-Datei), so müssen
sie vorher synchronisiert werden. Hierzu kann man sich am besten an der
Audiospur orientieren (beim Nexus-10MKII über einen der EXG-Kanäle
aufgenommen).
...entfernt alle überflüssigen Informationen und beschriftet die Spalten eindeutiger ...
... und ersetzt via Suchen/Ersetzen alle Punkte durch Beistriche.
Nun kann man die Amplitudenwerte via Bedingte Formatierung ...
... als Balken bzw. Kurven visualisieren und darüber optisch die Zeitpunkte ermitteln, an denen das Klangbeispiel bei den jeweiligen Versuchspersonen einsetzte (für einen prägnanteren Start des Klangbeginns bietet es sich an, die Klangbeispiele am Anfang mit einem Knack zu versehen):
Nun können beide Tabellen am jeweiligen Startpunkt zu einer Tabelle zusammengeführt werden ....
... und am Ende des Klangbeispiels entsprechend abgeschnitten werden.
Da man für die gemeinsame Darstellung der Hautleitwerte nur eine Zeit und nur eine Amplitude braucht, können Zeit und Amplitude bei der zweite Vpn (bzw. bei allen anderen Vpns, wenn man mehrere Tabellen zusammenführt) auch weggelassen werden.
Wenn
man diese Zeilen in Javascript-Arrays überführen möchte,
dann bietet es sich an die Zeilenüberschrift als Array-Namen zu verwenden
(am besten immer mit "_array" dahinter, damit man schon von
der Variablenbezeichnung her weiß, dass es sich um ein Array handelt).
Die erste Spalte würde also lauten: Um diesen Vorgang zu automatisieren hat Veronika Weber auch das Matlab-Script xls2js.m geschrieben
Grundlegender Aufbau von Plotly-Visualisierungen Sobald die Daten in dieser Art vorbereitet sind, kann man beide Dateien über das Script-Tag in eine html-Datei einbinden. Der typische Aufbau einer html-Datei mit der eingebundenen Plotly-Library und den eingebundenen vorbereiteten Daten-Arrays sähe dann folgendermaßen aus: <html>
Zwischen die beiden Body-Tags ( <body bgcolor="#FFFFFF" text="#000000"> und </body> ) kommen dann 5 Abschnitte, die je nach Darstellungsart teilweise anders gefüllt werden:
1. Ein durch DIV-Tags festgelegter Bereich mit einem Namen (hier "AnzeigeDiv") mit den Pixelmaßen für die Weite und Höhe der Darstellung (hier style="width:800,height:800"), in dem die Visualisierung angezeigt werden soll. <div id="AnzeigeDiv" style="width:800,height:800"></div> 2. Ab hier beginnt ein Script-Teil (zwischen <script> und </script>), in dem alles Weitere geregelt wird. Zunächst werden die Daten und die Art der Darstellung in einzelnen "Traces" zusammengestellt, z.B. var
trace1 = { var
trace2 = { 3. Alle Traces werden dann in einem Array namens "data" zusammengefasst: var data = [ trace1, trace2]; 4. Danach wird das Layout bestimmt, z.B.: var
layout = { 5.
Schließlich werden mit Plotly.newPlot();
alle Traces (data)
und das Layout (layout)
zusammengeführt und im oben definierten Bereich (AnzeigeDiv,
s.o. unter 1.) zur Darstellung gebracht: Plotly.newPlot('AnzeigeDiv', data, layout);
Nach diesem Schema laufen so ziemlich alle Darstellungsarten innerhalb von Plotly ab.
Für Daten aus der (systematischen) Musikwissenschaft sind folgende Darstellungsarten besonders spannend: Zweidimensionale Darstellungen:
Drei- und mehrdimensionale Darstellungen:
|