高库存clipPath计算错误



我在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({...});

完整的JSFiddle示例

要重现问题,请执行以下步骤:

  1. 点击";将轴与数据相加";按钮
  2. 点击";改变高度";按钮
  3. 点击";删除";按钮
  4. 点击";将轴与数据相加";按钮

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

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

  1. 单击";删除";按钮。/或刷新JSFiddle
  2. 启用";每次生成新的ID";复选框
  3. 按照步骤1-4进行操作

是否有一些情况可以避免每次创建轴时生成新ID的混乱?

解决方法:

删除轴之前将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/

最新更新