如何使用rangeSelector按不同单位对不同系列进行分组?

时间:2018-03-29 14:10:35

标签: highcharts highstock

所以我的问题是我有3个系列,每个系列有30分钟的间隔数据。

  1. 数据系列:

    • 应按rangeSelector文本中定义的单位进行分组(此工作正常)
  2. 平均系列:

    • 应按大于数据系列的单位进行分组(如按天分组的数据,平均值应显示周平均值,按星期分组的数据应平均应为月平均值)
  3. 山顶系列:

    • 应按大于数据系列的单位进行分组(如按天分组的数据,峰值应显示周峰值,数据按周分组,峰值应为月峰值)
  4. 如果平均值和峰值系列有助于解决问题,则每30分钟不需要有值。但它应该是这段时期的一条直线,所以每个分组都不能有一个点。

    这是我现在拥有的一个例子(http://jsfiddle.net/tc97kud0/11/

    rangeSelector: { buttons: [ { type: "day", count: 1, text: "Day" }, { type: "week", count: 1, text: "Week", dataGrouping: { forced: true, units: [ [ "day", [ 1 ] ] ] } }, { type: "month", count: 1, text: "Month ( group by day )", dataGrouping: { forced: true, units: [ [ "day", [ 1 ] ] ] } }, { type: "month", count: 1, text: "Month ( group by week )", dataGrouping: { forced: true, units: [ [ "week", [ 1 ] ] ] } }, { type: "year", count: 1, text: "Year", dataGrouping: { forced: true, units: [ [ "month", [ 1 ] ] ] } }, { type: "all", text: "All" } ], selected: 5, buttonTheme: { width: null } },
    series: [{ name: 'ADBE', data: ADBE, tooltip: { valueDecimals: 2 }, dataGrouping: { approximation: "average" } }, { name: 'Data point count (confidence)', data: ADBE, type: 'column', dataGrouping: { approximation: "SUM" } }]

    那么有什么方法可以通过rangeSelector更改分组,并为每个系列分组不同的单位?

    我知道我可以在serie dataGrouping属性中为每个系列设置不同的近似值。

    但单位是基于rangeSelector选项,所以我不知道或不知道如何设置系列中的单位,以便相应地使用当前活动的rangeSelector选项。

1 个答案:

答案 0 :(得分:4)

您可以使用范围选择器按钮的click事件为每个系列设置单独的数据分组:

       {
          type: "month",
          count: 1,
          text: "Month ( group by day )",
          events: {
            click: function() {
                chart.series[0].update({
                  dataGrouping: {
                        forced: true,
                        units: [ [ "day", [ 1 ] ] ]
                      }
              }, false);

              chart.series[1].update({
                  dataGrouping: {
                        forced: true,
                        units: [ [ "month", [1] ] ]
                      }     
              }, false);

            }
          }
        }

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