Highstock clipPath计算错误

时间:2018-12-05 09:05:46

标签: javascript highcharts

我在Highstock(Highcharts)中遇到了这个问题。如果系列的作物属性设置为true(默认值),则可能会导致作物面积没有更新/重新计算。

每次我们创建一个高度为A的新轴,将其高度更改为B,将其删除,然后再次创建一个具有相同ID的高度为A的新轴时,都会出现该错误。使用删除的轴的clipPath裁剪创建的轴。

简单来说,逻辑如下:

chart.addAxis({..., id: Y_AXIS_TEST_ID, height: '100%'});
chart.addSeries({...});

chart.get(Y_AXIS_TEST_ID).update({height: '80%'});

chart.get(Y_AXIS_TEST_ID).remove();

chart.addAxis({..., id: Y_AXIS_TEST_ID, height: '100%'});
chart.addSeries({...});

Full JSFiddle example

要重现该问题,请按照下列步骤操作:

  1. 点击“添加数据轴”按钮。
  2. 单击“更改高度”按钮。
  3. 单击“删除”按钮。
  4. 再次单击“用数据添加轴”按钮。

结果:轴内部的序列使用为高度80%的轴生成的clipPath裁剪; 预期:全新的数据轴,如第1页中的

在这种情况下,如果每次创建轴时都生成新的ID,则可以解决此问题。

  1. 单击“删除”按钮。 /或刷新JSFiddle
  2. 启用“每次生成新ID”复选框。
  3. 执行步骤1-4。

是否有避免在每次创建轴时产生新ID的麻烦?

1 个答案:

答案 0 :(得分:0)

解决方法:

在移除轴之前将yAxis高度更新为100%:

$('#remove').click(() => {
    chart.get(Y_AXIS_TEST_ID).update({height: '100%'});
    chart.get(Y_AXIS_TEST_ID).remove();
})

演示: https://jsfiddle.net/BlackLabel/g6wLhsq1/