我在Highcharts中有一个图表(具体来说:这是一个Highstocks图表,蜡烛图类型),现在我想为它添加一些SVG形状。如何在特定位置绘制SVG形状(取决于xAxis)
我知道这个渲染器对象,但它只接受相对于画布的x和y坐标。
我需要的是在特定的时间(xAxis)添加一些形状,所以我需要它接受x/y值作为图表坐标(而不是画布坐标)(我明确表示怀疑是可能的),或者我们需要获取图表中特定点的x/y-canvas-position。
有没有办法做到这一点?
我在Highcharts中有一个图表(具体来说:这是一个Highstocks图表,蜡烛图类型),现在我想为它添加一些SVG形状。如何在特定位置绘制SVG形状(取决于xAxis)
我知道这个渲染器对象,但它只接受相对于画布的x和y坐标。
我需要的是在特定的时间(xAxis)添加一些形状,所以我需要它接受x/y值作为图表坐标(而不是画布坐标)(我明确表示怀疑是可能的),或者我们需要获取图表中特定点的x/y-canvas-position。
有没有办法做到这一点?
要绘制SVG形状和变焦移动它扩展现有的符号,有两种方式我用的第一个只是把它作为一个想法,看看你是否可以做得比我好,第二种方式总是有效
第一种方式
得到这个形状的x坐标: 如你所知highstock使用unix时间,所以假设你想要在X数据= 1326844540000处添加你的形状,现在根据系列[i]获得1326844540000的x位置,我会假设你有一个系列,以便使用一系列[0],这里是你如何看一下X-COOR:
$.each(chart.series[0].points, function(index,value){
if(value.category == 1326847170000)
console.log(this.plotX) ;
});
现在使用.append()
添加您的SVG:
var myrect = $(".highcharts-series-group") ;
$(myrect).append(<your svg goes here with
x ="you have it from the previous code " y="")
这段代码进去(xAxis - events - setExtremes)A第二Ønchart负载以及
推荐的方式
建议和存在保证的方法是创建一个标志给它一个ID,然后您可以通过编辑这个标志
的attr()
你什么都想要
UPDATE
<g>
标签的第四路径是,您将编辑吸引你什么都想要什么您可以使用图形来替换某个数据点。以下example演示了这种能力。在下面的例子中,一个特定点正在被图形取代。它恰好是需要绘制的最高点。
data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, {
y: 26.5,
marker: {symbol: 'url(http://www.highcharts.com/demo/gfx/sun.png)'}
}, 23.3, 18.3, 13.9, 9.6]
您可以通过
$.extend(Highcharts.Renderer.prototype.symbols, {
newSymbol: function() {
return [//SVG path as Array];
}
});
这似乎是一个不错的方法,但我似乎并没有把它做对!我想定义我自己的,比方说,我可以放在所需的x/y位置的圆,但是如果我更改数据部分内的x/y值,它只会调整xAxis,而圆则保持正确它在哪里。 这里的例子(在这种情况下用正方形):[Example](http://jsfiddle.net/X3EA7/) –
小提琴似乎不再起作用。 –
您的“第一条路”是迄今为止我解决问题的方式,但它仍然不是“完美”的。似乎有一些偏离的确切位置,不知道... 而我不完全理解你的“推荐的方式”...你可以请添加一些解释词? :) –
检查更新 –