【问题标题】:Highstock shared tooltip multiple series - show data for line when not on pointHighstock 共享工具提示多个系列 - 不在点时显示线的数据
【发布时间】:2016-06-15 17:13:27
【问题描述】:

https://jsfiddle.net/zv6ymqpL/3/

series: [{
     type: 'column',
     name: 'Columns',
     data: data
}, {
     type: 'line',
     name: 'Lines',
     data: line,
     step: true
}]

将鼠标悬停在图表上时,工具提示将显示两个系列或仅显示列,这是因为与线(2 小时)相比,列系列(1 小时)具有更高的分辨率。

我使用的图表有一个启用了步长的线系列,我希望将鼠标悬停在数据点上时的工具提示包含当前步长值(因为从最后一个点到下一个点的值都是相同的)。

这可以在 Highstock 中实现吗?

【问题讨论】:

    标签: javascript jquery highcharts highstock


    【解决方案1】:

    您需要使用格式化程序来计算扩展步骤中的值,以解决较低的分辨率。

    文档:http://api.highcharts.com/highstock#tooltip.formatter

    例子:

    $(function () {
    $('#container').highcharts('StockChart', {
    
        tooltip: {
            formatter: function () {
                var s = '<b>' + Highcharts.dateFormat('%A, %b %e, %Y', this.x) + '</b>';
    
                $.each(this.points, function () {
                    s += '<br/>1 USD = ' + this.y + ' EUR';
                });
    
                return s;
            }
        },
    
        rangeSelector: {
            selected: 1
        },
    
        series: [{
            name: 'USD to EUR',
            data: usdeur
        }]
    });
    

    });

    附: - 如果我能看到一个示例数据集(JSON 格式),我就能计算出这个。

    【讨论】:

    • jsfiddle 有一个随机生成的数据集,类似于我正在使用的数据集。具有 5 分钟分辨率的列系列,然后具有 1 小时分辨率的线系列。
    • 基于一个简单的一维数组对象,我想出了这个循环让你开始:formatter: function () { var s; $.each(this.points, function () { s = this.series.data.indexOf(this.point) + this.series.data.indexOf(this.point -1) + this.series.data.indexOf(this.point - 2); }); return s; } },
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多