Wie man den index eines Punktes in Highcharts?
Bin ich mit "Zeit-Daten mit unregelmäßigen Abständen" chart von Highcharts. Wie Sie wissen, wenn die Maus über die Punkte der Linie, die der formatter-Funktion ausgeführt wird, und zeigt einige Informationen. Ich möchte wissen index der Punkt, dass die Maus darüber bewegt. Wenn also die Maus bewegt sich über ersten Punkt der Linie, der tooltip zeigt "1" und die zweite Stelle zeigt "2" und so weiter. thnx.
- Edgar ' s Antwort scheint die beste zu sein, keine Bearbeitung erforderlich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser arbeitete für mich mit v2.2:
Eine Möglichkeit ist die pre-Prozess die Daten zu enthalten, die eine Eigenschaft mit dem index. In der Schnee-Tiefe Beispiel könnten Sie tun, eine Vorbereitung wie diese:
konvertieren Sie das array von
[x, y]
werden, um ein Objekt wie{ x: x, y: y, myIndex: i}
. Dann seine einfach zu Holen, dass der index in den Formatierer mit:Beispiel auf jsfiddle
Für den Datensatz zu tun, es direkt in einer netten Art und Weise
Es ist speichern in:
seriesMapping
ich zugeordnet der Dritten Spalte der CSV-zu einer tatsächlichen index und dann zugegriffen es mit dieser Zeile 🙂 +1 von mirDa die Daten sortiert sind, können Sie eine binäre Suche.
Eine binäre Suche durchführen sollten, auch für eine große Anzahl von Punkte (aus dem wikipedia-Artikel: "Zum Beispiel, für die Suche eine Liste mit einer million Elementen nimmt so viele, wie eine million Iterationen mit linearer Suche, aber nie mehr als zwanzig Iterationen mit binärer Suche."
Beispiel:
(die binarysearch-Methode die oben beschriebene Funktion ist inspiriert von http://www.dweebd.com/javascript/binary-search-an-array-in-javascript/)
Klingt wie Sie brauchen nur den x-Wert (d.h. die Zeit). Verwendung:
this.xData.indexOf(point.x)
diese.die Punkte werden gruppiert in größeren Serien so wäre eine tiefere Suche durch die Punkte[0]...Punkte[n].
Dies ist alles, was für mich gearbeitet auf Highstock JS v4.2.4:
Dies ist in etwa so hacky, wie es kommt, und langsam wie die Hölle mit einer Menge von Punkten, aber es wird funktionieren. Die Allgemeine Idee ist, sich durch all die Punkte, die in der Reihe' Daten, bis Sie denjenigen finden, der passend zu den aktuellen Punkt:
Live-Beispiel: http://jsfiddle.net/Fuv4h/
Wenn Sie Zugang zu Ihrem Ausgangspunkt können Sie dann einfach zugreifen,
this.point.index
oder einfachthis.index
wennthis
bezieht sich auf den Punkt selbstum Zugang zu seinem index,
In meinem Fall verwende ich immer, weil seine einfacher dann @Edgar Lösung, die ist auch toll.