Filterlegende einer Highcharts nur durch sichtbare Reihen

7

Wir verwenden Highcharts und haben einige komplexe Charts mit ungefähr 75 Serien innerhalb des Charts. Die Serien werden nicht im gesamten Chart verwendet, sondern nur für einen Zeitraum von drei Monaten. So haben wir etwa 15 Serien pro Jahr und die Gesamtchart umfasst fünf Jahre (macht etwa 15 * 5 = 75 Serien). Highcharts zeigt jedoch alle 75 Diagramme in seiner Legende an. Ziel ist es, die Legende nur für die sichtbaren Serien zu minimieren. Wir sind in der Lage, die verwandte Serie in JS-Code zu bestimmen, und wir haben versucht, die 'showInLegend'-Flags der verwandten Serie, z. B.

, umzuschalten %Vor%

aber ohne Wirkung. Wir haben versucht, das Diagramm mit

neu zu zeichnen %Vor%

aber das hat keine Wirkung ... die Legende bleibt unverändert.

Also sind die Fragen:

  • ist es möglich, die Legende basierend auf den aktualisierten showInLegend-Optionen neu zu zeichnen?
  • gibt es Mechanismen in Highcharts, um die Legende basierend auf der sichtbaren Reihe dynamisch zu aktualisieren?
Andreas Jung 28.11.2012, 08:24
quelle

3 Antworten

15

Nun, wenn du showInLegend einstellst, reicht das nicht aus, da gibt es noch ein paar weitere hooks, um die du dich kümmern musst

Siehe die Antwort von Halvor Strand für einen neueren Weg

Alter Trick funktioniert aber immer noch

Hinzufügen

%Vor%

Entfernen

%Vor%

Dabei kann Element ein Punkt oder eine Serie sein

%Vor%

Hinzufügen der Legende dynamisch | Highchart & amp; Highstock @ jsFiddle

    
Jugal Thakkar 28.11.2012, 12:42
quelle
5

Dies kann jetzt ohne irgendwelche Hacks durch die Methode Series.update ( API ) gelöst werden. Zum Beispiel:

%Vor%

Siehe diese JSFiddle-Demonstration . Die Methodensignatur lautet:

%Vor%

Wo options Optionen für ein normales Series -Objekt sind. Sie können optional das Neuzeichnen anhalten, um vor dem Neuzeichnen mehrere Optionen zu ändern.

    
Halvor Strand 16.08.2014 03:46
quelle
2

Sie können showInLegend als false festlegen, wenn Sie das Diagramm erstellen.

%Vor%

demo1

Wenn Sie es dynamisch aktualisieren möchten, können Sie Folgendes tun.

%Vor%

Sie haben vergessen, das Diagramm neu zu zeichnen.

Demo

Oder chart.legend.allItems[1].destroy(); , um den ersten zu entfernen.

    
Ricardo Alvaro Lohmann 28.11.2012 12:43
quelle

Tags und Links