我有一张HighStock图表,其中包含一些OHLC数据并创建一个包含3个系列的图表 - 1个烛台,1个体积和1个标志。一切正常。
我想在图表中添加一些自定义趋势线。我将根据自定义逻辑确定点和路径。
问题在于,当我使用图表中的Renderer
绘制路径时,路径未连接到基础图表。随着图表日期范围的修改和/或新点添加到主要series
,我的自定义路径的位置和大小保持不变。这是不变的。
我需要将自定义路径的位置/端点绑定到图表的数据点,而不是svg绘图的坐标。有没有办法实现这个目标?
以下是添加从pointa
到pointb
的简单路径的代码部分。路径按预期呈现,但然后是静态的:
buildPath: function(pointa, pointb){
this.myChart.renderer.path(this.buildPathArray(pointa,pointb))
.attr({
'stroke-width': 2,
stroke: 'red'
}).add();
},
buildPathArray: function(pointa, pointb){
var pathArray = [];
pathArray.push('M');
pathArray.push(pointa.plotX);
pathArray.push(pointa.plotClose);
pathArray.push('L');
pathArray.push(pointb.plotX);
pathArray.push(pointb.plotClose);
pathArray.push('Z');
return pathArray;
}
根据请求,我创建了a JS Fiddle that demonstrates the general issue.
非常感谢任何帮助。
答案 0 :(得分:1)
<强>解决强>
这似乎与Highcharts免费提供。或者,如果确实如此,我没有找到技术。
我必须同时使用load
中包含的redraw
对象的chart
和StockChart
个事件。
在load
上,我绘制初始路径,与趋势线中涉及的Point
对象对齐。当我构建这些包含真正SVG path
元素的SVGElement
个对象(path
个对象)时,我会在数组中跟踪它们。
在redraw
上,我必须销毁旧的趋势线并创建新的趋势线。所以我遍历我的旧元素数组并从他们自己的parentNode
中删除每个元素。然后,我根据每个相关Point
对象的新绘制位置绘制我的趋势线的新版本。
最终结果是,在每个redraw
事件中,当它们真正被销毁并重新创建时,这些线条似乎与图表一起移动。