修改Highcharts中的dataGrouping

时间:2018-02-14 14:28:49

标签: javascript charts highcharts

Highcharts hour数据聚合流程 遵循下一条规则:01 AM = 01:00 + 01:15 + 01:30 + 01:45。 (例)。所以当前小时和下一小时之间的所有点。 我希望它遵循以下规则:01 AM = 00:00 + 00:15 + 00:30 + 00:45

我没有找到在库的数据分组选项中这样做的可能性。 现在我正在考虑修改serie.groupedData对象(在那里添加1小时的时间),但不幸的是,即使数据被修改,它仍然会在图表中显示旧值

    chartConfiguration.xAxis[0].events = {
        setExtremes(event) {
            this.series.forEach(serie => {
                if (serie.hasGroupedData && serie.currentDataGrouping.unitName == "hour") {
                    let groupedData = serie.groupedData.map(dataPiece => {
                        dataPiece.x = dataPiece.x + 3600000;
                        return dataPiece;
                    });
                    serie.update(groupedData);
                }
            })  
        }
    };

1 个答案:

答案 0 :(得分:0)

如果应用1小时数据分组,此代码会将所有点的x值更改为提前一小时:

   chart: {
    events: {
      render: function() {
        if (redrawEnabled) { // prevent infinte recursive loop - this.redraw() calls render event
          redrawEnabled = false;

          var series = this.series[0],
            isHourUnit = series.currentDataGrouping.unitName === 'hour';

          if (isHourUnit && !hourOffsetApplied) {
            // change the data
            series.setData(data.slice().map((p) => [p[0] - hour, p[1]]), false);
            hourOffsetApplied = true;
          } else if (!isHourUnit && hourOffsetApplied) {
            // resotre the original data
            series.setData(data, false);
            hourOffsetApplied = false;
          }

          this.redraw();
          redrawEnabled = true;
        }
      }
    }
  },

现场演示: http://jsfiddle.net/BlackLabel/z850035n/

如果您将dataGrouping.units更改为['day', [1]]点,则会显示没有时间偏移。