1

我在 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 的混乱?

4

1 回答 1

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/

于 2018-12-05T11:07:48.163 回答