9

Highchartsを使用しており、チャート上に約75のシリーズを含む複雑なチャートがいくつかあります。このシリーズは、チャート全体では使用されませんが、3か月の範囲でのみ使用されます。したがって、年間約15のシリーズがあり、全体のチャートは5年間をカバーします(およそ15 * 5 = 75シリーズになります)。ただし、Highchartsはその凡例内に75のチャートすべてを表示します。目標は、凡例を表示可能なシリーズのみに最小化することです。JSコードで関連シリーズを特定することができ、関連シリーズの「showInLegend」フラグを切り替えようとしました。

chart.series[24].options.showInLegend = false

しかし、効果はありません。を使用してチャートを再描画しようとしました

chart.redraw() 

しかし、それは効果がありません...凡例は変更されません。

したがって、質問は次のとおりです。

  • 更新されたshowInLegendオプションに基づいて凡例を再描画することは可能ですか?
  • Highchartsには、表示されているシリーズに基づいて凡例を動的に更新するメカニズムがありますか?
4

3 に答える 3

16

設定するだけではうまくいきshowInLegendません。注意が必要なフックがいくつかあります。

最近の方法については、HalvorStrandの回答を参照してください


古いトリックですが、まだ機能します

たす

item.options.showInLegend = true;
chart.legend.renderItem(item);
chart.legend.render();

削除する

item.options.showInLegend = false;
item.legendItem = null;
chart.legend.destroyItem(item);
chart.legend.render();

ここで、アイテムはポイントまたはシリーズにすることができます

var item = chart.series[1];

追加削除凡例を動的に| Highchart&Highstock @ jsFiddle

于 2012-11-28T12:42:59.817 に答える
6

チャートを作成するときのようにshowInLegend設定できます。false

{
    name: 'Tokyo',
    data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6],
    showInLegend: false
}

demo1

動的に更新する場合は、次のようにすることができます。

options.series[1].showInLegend = false;
chart = new Highcharts.Chart(options);

チャートを強制的に再描画するのを忘れました。

デモ

またはchart.legend.allItems[1].destroy();、最初のものを削除します。

于 2012-11-28T12:43:59.823 に答える
6

Series.updateこれは、メソッド(API )を介してハッキングすることなく解決できるようになりました。例えば:

chart.series[0].update({ showInLegend: false });

このJSFiddleデモを参照してください。メソッドシグネチャは次のとおりです。

update(Object options, [Boolean redraw])

options通常のSeriesオブジェクトのオプションはどこにありますか。オプションで、再描画を停止して、再描画する前に複数のオプションを変更できます。

于 2014-08-16T03:46:59.707 に答える