以编程方式更改highstock或highchart中的图例

时间:2013-03-27 22:48:54

标签: highcharts highstock

要在创建高价图表之前设置图例的可见性,我可以这样做:

new Highcharts.StockChart({
   legend: {
      enabled: true,
      align: 'left'
   }
});

创建图表后,我希望允许用户隐藏或将图例移动到其他位置。我需要类似于chart.setTitle的东西,但是对于传说。

请注意,我读过this post但不太明白其中的建议。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

现在这样的事情不是Highcharts的一部分,但它是计划好的插件,请检查:http://highcharts.uservoice.com/forums/55896-general/suggestions/912335-draggable-legend-box

答案 1 :(得分:0)

您链接的帖子是正确的,但不是您想要的完整。无法设置打开和关闭图例的选项,并让图表将边距调整为图例的存在。但是,通过以链接到的示例中显示的方式删除所有数据系列,图表将消失。如果您提前知道图例的位置以及给出的边距,则可以手动调整边距。

例如,如果“chart”是highcharts对象的名称:

for (var a=0; a<window[id].Chart_dataseries.length; a++)
{
    chart.series[a].options.showInLegend = false;
    chart.series[a].legendItem = null;
    chart.legend.destroyItem(chart.series[a]);
    chart.legend.render();
}

然后,您可以通过重新渲染项目来“重新显示”图表。

for (var a=0; a<window[id].Chart_dataseries.length; a++)
{
    chart.series[a].options.showInLegend = true;
    chart.series[a].legend.renderItem(chart.series[a]);
    chart.legend.render();
}

我通过将操作链接到复选框来实现这一点,当检查时,图表“重新出现”,当未选中时,图表“消失”。我尝试使用以下附加命令执行此操作:

chart.options.legend.enabled=false; (or true)
chart.render();

这确实调整了图表以填充图例在删除图例时占用的空间。然而,它也留下了传说中的框。我还允许我的用户手动调整保证金,所以对我来说一个有效的选择是让用户“关闭”图例,然后手动调整保证金。