HighChart - 自定义路径未链接到图表

时间:2012-12-12 05:10:04

标签: highcharts highstock

我有一张HighStock图表,其中包含一些OHLC数据并创建一个包含3个系列的图表 - 1个烛台,1个体积和1个标志。一切正常。

我想在图表中添加一些自定义趋势线。我将根据自定义逻辑确定点和路径。

问题在于,当我使用图表中的Renderer绘制路径时,路径未连接到基础图表。随着图表日期范围的修改和/或新点添加到主要series,我的自定义路径的位置和大小保持不变。这是不变的。

我需要将自定义路径的位置/端点绑定到图表的数据点,而不是svg绘图的坐标。有没有办法实现这个目标?

以下是添加从pointapointb的简单路径的代码部分。路径按预期呈现,但然后是静态的:

    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.

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

<强>解决

这似乎与Highcharts免费提供。或者,如果确实如此,我没有找到技术。

我必须同时使用load中包含的redraw对象的chartStockChart个事件。

load上,我绘制初始路径,与趋势线中涉及的Point对象对齐。当我构建这些包含真正SVG path元素的SVGElement个对象(path个对象)时,我会在数组中跟踪它们。

redraw上,我必须销毁旧的趋势线并创建新的趋势线。所以我遍历我的旧元素数组并从他们自己的parentNode中删除每个元素。然后,我根据每个相关Point对象的新绘制位置绘制我的趋势线的新版本。

最终结果是,在每个redraw事件中,当它们真正被销毁并重新创建时,这些线条似乎与图表一起移动。