Highcharts 为什么不';这些矩形不出现吗?

Highcharts 为什么不';这些矩形不出现吗?,highcharts,highstock,Highcharts,Highstock,我在一些应该很简单的事情上遇到了很多麻烦。我无法使具有世界坐标(时间在x轴上,价格在y轴上)的矩形显示: chart.renderer.rect(chart.xAxis[0].toPixels(1432810800),chart.yAxis[0].toPixels(1.089965),chart.xAxis[0].toPixels(10800),chart.yAxis[0].toPixels(0.0032400000000001317), 0) .attr({fill: '#FFFF0F',

我在一些应该很简单的事情上遇到了很多麻烦。我无法使具有世界坐标(时间在x轴上,价格在y轴上)的矩形显示:

chart.renderer.rect(chart.xAxis[0].toPixels(1432810800),chart.yAxis[0].toPixels(1.089965),chart.xAxis[0].toPixels(10800),chart.yAxis[0].toPixels(0.0032400000000001317), 0)
  .attr({fill: '#FFFF0F', stroke: 'green', 'stroke-width':1, zIndex:4})
  .add()

完整的图表是。

我发现解决方案是这样计算宽度和高度:

    chart.renderer.rect(chart.xAxis[0].toPixels(1431716400000),chart.yAxis[0].toPixels(1.14505),chart.xAxis[0].toPixels(1431896400000)-chart.xAxis[0].toPixels(1431716400000),chart.yAxis[0].toPixels(1.144735)-chart.yAxis[0].toPixels(1.14505), 0)
      .attr({fill: '#FF0FFF', stroke: 'red', 'stroke-width':1, zIndex:4})
      .add()

也就是说,您必须将两个坐标转换为像素,然后减去以获得宽度或高度。(我不清楚为什么不能先做减法,然后再转换为像素,因为我们讨论的是在两个坐标系中应该相同的相对变化。另一方面,我不再关心。:-

你不能,因为
toPixels
返回相对于实际极值的像素位置。例如,yAxis的刻度为100-1000,rect的单位为120-130。当减去值时,它是10个单位。现在,当尝试使用
toPixels(10)
时,它将返回实际范围之外的像素位置。