0

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

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

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

请注意,我阅读了这篇文章,但不太了解其中的建议。

谢谢你的帮助。

4

2 回答 2

1

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

于 2013-03-28T16:43:37.590 回答
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();

这确实调整了图表以填充删除图例时图例占用的空间。但是,它也留下了图例周围的框。我还允许我的用户手动调整边距,所以对我来说,一个有效的选项是让用户“关闭”图例,然后手动调整边距。

于 2013-05-24T17:08:49.007 回答