2013-02-26 108 views
0

我期望在图例下方放置一个文本元素(或两个),并与其右侧对齐,但无法获得一致的坐标。确定图例何时准备就绪

警告:我是SVG的相对小菜鸟。

我有一系列想要显示图表的数据集。当我从一个移动到另一个时,我添加了新的serieses并删除了旧的。每次更新后,我尝试在图例下方放置一个包含数据集平均值的字符串。我遇到的问题是,我每隔一个时间查询x属性,字符串结束在图表之外。另一半的时候,我得到了一个完美的结果。

我用的地方这串代码是:

var tbl=table[3]; 
$('.usData').remove(); 

//get legend x & y 
startX = chart.legend.group.translateX; 
endX = startX + chart.legend.legendWidth; 
startY = chart.legend.group.translateY; 
endY = startY + chart.legend.legendHeight; 
$(tbl.usAvg).each(function(i){ 
chart.renderer.text("National Avg: " + formatData(this,tbl.format), endX, endY+(i*15)+15).attr({'text-anchor':'end',zIndex:12, class:'usData'}).add(); 

我认为正在发生的是那个传说开始的情节之外,被翻译成它的位置。因此,在完成渲染之前,我无法可靠地“抓取”准确的坐标。

所以,我的问题:有没有一种方法来确定(事件)何时图例完成移动,还是我只需要包括超时和等待?

回答

0

我建议更简单的解决方案,设置useHTML图例。 http://jsfiddle.net/aWFYr/1/

$('#btn').click(function(){ 

     $('.highcharts-legend').append('<div style="position:absolute;top:'+(chart.legend.legendHeight)+'px">aaa</div>'); 

    }); 
+0

是的,但随后的加入DIV不存在于导出的图像/ PDF。这是最终目标的一部分。 – astangelo 2013-02-28 11:20:36

+0

不在导出的图像中显示,因为它是动态内容,但是当您导出图表时,它会再次创建。您可以尝试在加载事件中添加此指令:http://api.highcharts.com/highcharts#chart.events.load – 2013-02-28 11:27:43