Line
Chart (Daten und Audiobeispiel synchronisieren)
1. Im Header das Plotly-Script (plotly-latest.min.js) und die Array-Definitionen (fate_all.js) einbinden: <script src="header/plotly-latest.min.js"></script> 2. Im Body einen Bereich festlegen, in dem die Daten visualisiert werden: <div id="AnzeigeDiv" style="width:800,height:400"></div> 3. Script-Teil starten, in dem die Traces mit den Datenwerten zusammengestellt werden <script> var trace2 = { var trace3 = { 4. Alle Traces im Array data zusammenführen: var data = [ trace1, trace2, trace3]; 5. Layout bestimmen: var layout = { 6. Daten und Layout zusammenführen, im oben definierten Bereich ausplotten und Script-Teil beenden: Plotly.newPlot('AnzeigeDiv',
data, layout, {displayModeBar: false});
Synchronisierung der dargestellten Werte mit Werten auf einer anderen Zeitskala Stammen die Werte aus unterschiedlichen Quellen mit unterschiedlichen Sampleraten bzw. mit unterschiedlicher (z.B. zeitlicher) Auflösung (z.B. vom Nexus10MKII und vom Valence-Arousal-Script), dann muss eine Zeitskala (und die mit dieser zusammenhängenden Werte) an die andere angeglichen werden. Hierzu errechnet man in einem Script im Header der Seite zunächst einen Faktor (z.B. zeitfaktor), mit dem die Anzahl der Elemente des einen Arrays (zeit_va_array.length) multipliziert werden müssen, um der Anzahl der Elemente des anderen Arrays (zeit_array.length) zu entsprechen, <script> Dann legt man leere Arrays an, in die dann die zeitlich angepassten Werte jeweils hineingeschrieben werden sollen z.B.: //
Arrays für die zeitlich angepassten Werte anlegen Mit einer Schleife ( (i=0; i<zeit_array.length; i++){ ... } ) errechnet man für jedes Element des Arrays, das man als zeitlichen Maßstab verwendet (hier: zeit_array), das in der Position dazu passende Element im neuen, angepassten Array. Die Position wird in Arrays über den Index gezählt (von 0 bis zur maximalen Länge des Arrays zeit_array.length). Der neue Index muss eine ganze Zahl sein, weswegen der für jede Position errechnete Wert (i*zeitfaktor) über Math.round() gerundet wird. Aus den Original-Arrays (z.B. Valence_vpn1_array) wird dann der über den indexzeiger ermittelte Wert ausgelesen und via .push() in das neue Array (z.B: Valence_angepasst_vpn1_array) eingefügt und das Script im Header abgeschlossen: //
zeitliche angepasste Werte in die neuen Arrays schreiben Im Plotly-Script fügt man die hinzukommenden Kurven (traces) unter den schon vorhandenen traces mit den entsprechenden Arrays hinzu (und zählt die Nummer der Traces entsprechend weiter) ... var trace4 = { var trace5 = { var trace6 = { var trace7 = { und erweitert die Kurvensammlung (data) entsprechend um die neu hinzugekommenen Kurven: var data = [ trace1, trace2, trace3, trace4, trace5, trace6, trace7 ];
Synchronisierung der dargestellten Werte mit Audiobeispielen Will man die Werte mit ihren Audiodateien verbinden (z.B. Fara Effect: Fate), so legt man alle Audio-Dateien in einen Ordner (z.B. "klang"), welcher wiederum am gleichen Ort liegt wie die jeweilige html-Datei. In der Datei legt man gleich nach dem <body>-Tag einen unsichtbaren Audioplayer mit der entsprechenden Klangquelle an und gibt ihm einen Namen (z.B. "myaudio"): <audio id="myaudio" src="klang/kilicci_fara_effect_fate_heiss_423sone.mp3">.</audio> Danach legt man in den <head>-Bereich zwei Funktionen an, die das Starten und Stoppen des Audio-Players regeln sollen, und denen man später via (id) die jeweilige Position in der Audiodatei übergibt: <script> function stopAudio()
{
Schließlich
ermittelt man mit folgender Funktion am Ende des Plotly-Scripts, welcher
Positionswert (indexNumber)
aus welcher Kurve (indexTrace)
bei einem Mouse-Over (plotly_hover)
vorliegt und errechnet dann via ... ... Array-Länge
(zeit_physio_array.length)
durch Dauer des Klangbeispiels (document.getElementById('myaudio').duration)
einen Faktor (audiofaktor),
durch den der Positionswert (indexNummer)
geteilt werden muss, um von der Position im Graphen auf die Position innerhalb
der Audiodatei schließen zu können. myPlot
= document.getElementById('AnzeigeDiv');
|