0

我正在渲染具有不同系列颜色的甘特图。颜色不知何故没有反映在底部的导航器上。如何在系列和导航器中显示相同的颜色?小提琴链接:小提琴 注意:这些颜色将是动态的,这将基于不同的情况。所以我希望它们也能动态地反映在导航器中。我正在改变系列的颜色,如下所示:

    chart: {
    events: {
        load: function() {
            Highcharts.each(this.series[0].points, function(p) {
            p.color = 'grey'
            });
        }
    }
  },

如您所见,系列颜色为灰色,但在下面的导航器中,我看到了不同的颜色。

4

2 回答 2

1

根据 highcharts-gantt 文档:

使用一组新选项更新系列。为了干净和精确地处理新选项,该系列中的所有方法和元素都被删除,并从头开始初始化。

在事件中,您应该通过给定的系列积分并更改其选项(在您的情况下为“颜色”)。更改将应用​​于下面的时间线 - 示例代码在 1.5 秒后更改颜色。

//Updating the color
setTimeout(function() {
  for (var i = 0; i < chart.series[0].points.length; i++) {
    chart.series[0].points[i].update({
      color: "grey"
    });
  }
}, 1500);

工作示例

在您的代码中,它将是:

events: {
    load: function() {
        Highcharts.each(this.series[0].points, function(p) {
            p.update({color: "grey"});
        });
    }
}

为避免时间线缩短 - 在图表更新后启动 setExtremes()。

通过调用 .setExtremes() 方法或通过选择图表中的区域为轴设置最小值和最大值时触发。

//Fully selected timeline
this.xAxis[0].setExtremes();

工作示例 - 时间线选择

于 2019-12-17T21:17:24.713 回答
0

您还可以为一系列导航器设置选项,如下所示:

navigator: {
    series: {
        ...,
        colorByPoint: false,
        color: 'grey'
    },
    ...
}

现场演示: https ://jsfiddle.net/BlackLabel/c4j9dvqx/

API 参考: https ://api.highcharts.com/gantt/navigator.series.color

于 2019-12-18T12:10:11.663 回答