Общая синхронизированная подсказка для синхронизированных HighCharts

У меня есть случай использования, когда мне нужно иметь общую подсказку для всех графиков в синхронизированных HighCharts. Эта единственная подсказка должна содержать точки данных из всех графиков.

Это то, чего я достиг до сих пор - https://jsfiddle.net/wgupnvqm/.

Все диаграммы показывают отдельные подсказки, и эти подсказки синхронизированы. Есть ли способ объединить все данные в одной подсказке и показать только эту подсказку для синхронизированных диаграмм?

Вот как я реализовал HighCharts

/**
 * In order to synchronize tooltips and crosshairs, override the
 * built-in events with handlers defined on the parent element.
 */
$('#container').bind('mousemove touchmove touchstart', function (e) {
    var chart,
        point,
        i,
        event;

    for (i = 0; i < Highcharts.charts.length; i = i + 1) {
        chart = Highcharts.charts[i];
        // Find coordinates within the chart
        event = chart.pointer.normalize(e.originalEvent);
        // Get the hovered point
        point = chart.series[0].searchPoint(event, true);

        if (point) {
            point.highlight(e);
        }
    }
});
/**
 * Override the reset function, we don't need to hide the tooltips and
 * crosshairs.
 */
Highcharts.Pointer.prototype.reset = function () {
    return undefined;
};

/**
 * Highlight a point by showing tooltip, setting hover state and draw crosshair
 */
Highcharts.Point.prototype.highlight = function (event) {
    event = this.series.chart.pointer.normalize(event);
    this.onMouseOver(); // Show the hover marker
};


// Get the data. The contents of the data file can be viewed at
$.getJSON(
    'https://api.myjson.com/bins/ehhwv',
    function (activity) {
        $.each(activity.datasets, function (i, dataset) {

            $('<div class="chart">')
                .appendTo('#container')
                .highcharts({
                    chart: {
                        marginLeft: 200, // Keep all charts left aligned
                        spacingTop: 20,
                        spacingBottom: 20
                    },
                        plotOptions: {
                          series: {
                              marker: {
                                  enabled: false
                              }
                          }
                                     },
                    title: {
                        text: 'Series ' + i,
                        align: 'left',
                        margin: 0,
                        x: 0,
                        y: 60,
                        style: {
                            fontSize: "12px",
                        }
                    },
                    tooltip: {
                        shared: true,
                    },
                    credits: {
                        enabled: false
                    },
                    legend: {
                        enabled: false
                    },
                    xAxis: {
                        crosshair: true,
                                        visible: false,

                    },
                    yAxis: {
                        title: {
                            text: null
                        },
                        tickInterval: 50,
                        lineWidth: 1,
                        min: 0,
                        max: 100
                    },
                    series: [{
                        data: dataset.data,
                        name: 'Series ' + i,
                        type: dataset.type,
                    }]
                });
        });
    }
);

0 ответов

Другие вопросы по тегам