7

大量のデータを含むハイストック グラフがあり、データをグループ化する方法を定義できますが、使用するデータのグループ化をユーザーが指定し、日、週、月などの間で動的に変更できるようにしたいと考えています。

では、ユーザーがデータのグループ化方法を変更できるボタンを持つことは可能ですか?

currentDataGrouping など、文書化されていない機能が多数ありますが、データのグループ化を設定するものは何もありません...どうにかして見ることができます...

series: [{
                type: 'column',
                name: title,
                data: data,
                dataGrouping: {
                    units: [['week', [1]], ['month', [1]]]
                }
        }]
4

3 に答える 3

4

API には、シリーズを更新するメソッドがあります ( http://api.highcharts.com/highcharts#Series.update() )。例えば

chart.series[0].update({ type: 'spline' });

この API 呼び出しを使用して、シリーズの属性を変更できるはずです。

たとえば、2 つのシリーズ オブジェクトを定義し、ボタン クリックで必要なものを使用するようにチャートを更新できます。

var seriesWeek = {
            type: 'column',
            name: title,
            data: data,
            dataGrouping: {
                units: [ ['week', [1] ] ]
            }
    }

var seriesMonth = {
            type: 'column',
            name: title,
            data: data,
            dataGrouping: {
                units: [ ['month', [1] ] ]
            }
    }

chart.series[0].update(seriesWeek);
于 2013-03-26T10:13:20.607 に答える
1

私は常に時系列を 1 つだけ持っているので、このアプローチはうまくいきます (各時系列を手動で更新する必要はありません)。

self.myChart = new window.Highcharts.stockChart(pChartDivContainer, {
        title: {
            text: 'My title'
        },
        rangeSelector: {
            enabled: true
        },
        plotOptions: {
            series: {

                dataGrouping: {
                    approximation: 'ohlc',
                    units: [
                        ["minute", [1]]
                    ],
                    forced: true,
                    enabled: true,
                    groupAll: true
                }

            }
        }
    }, function (chart) {
        self.onChartReady();
    });

その後、単位を簡単に変更できます。

self.setCandleInterval = function (pUnit, pInterval) {
    self.myChart.update({
        plotOptions: {
            series: {
                dataGrouping: {
                    units: [
                        [pUnit, [pInterval]]
                    ]
                }
            }
        }
    });
}
于 2018-08-19T16:06:25.103 に答える
0

Highstock の (Splinechart) RangeSelector、 Event 、およびDataGroupingを使用して、これを回避するハックを試みました。毎週 rangeselectorButton をクリックすると、 setExtremes を通じてこのイベントをキャッチします。イベントをキャッチする投稿は、それを「合計」に近似します。2 つのシリーズを使用している場合は、オブジェクトを反復します。

  events: {
         setExtremes: function (e) {
             if (e.rangeSelectorButton != undefined) {
                 var triger = e.rangeSelectorButton;
                 if (triger.type == 'week') {
                     $.each(this.series, function (index, obj) {
                         obj.options.dataGrouping.units[0] = ['week', [1]];
                     });
                 } else if (triger.type == 'day') {
                     $.each(this.series, function (index, obj) {
                         obj.options.dataGrouping.units[0] = ['day', [1]];
                     });
                 }
             }
         }
     },

@フィドル

于 2015-04-10T08:01:24.623 に答える