2

我有一个 HighStock 图表,它正在提取一些 OHLC 数据并创建一个包含 3 个系列的图表 - 1 个烛台、1 个交易量和 1 个标志集。这一切都很好。

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

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

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

这是添加从pointato的简单路径的代码部分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;
    }

根据请求,我创建了一个演示一般问题的 JS Fiddle。

任何帮助深表感谢。

4

1 回答 1

1

解决了

Highcharts 似乎并不是免费提供的。或者如果是这样,我没有找到技术。

我必须同时load使用redrawchartStockChart.

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

在 上redraw,我既要破坏旧的趋势线,又要创造新的趋势线。所以我循环遍历我的旧元素数组并将每个元素从它们自己的parentNode. 然后我根据每个相关Point对象的新绘制位置绘制新版本的趋势线。

最终结果是,在每个redraw事件中,线条似乎会随着图表移动,而实际上它们正在被销毁和重新创建。

于 2012-12-16T02:25:55.323 回答